java - 共享的Gradle脚本中如何配置一些私密信息
巴扎黑
巴扎黑 2017-04-18 09:58:36
0
4
826

有一个Github上的开源Java项目,使用Gradle构建。现在需要发布到Maven中央仓库,其中需要配置一些中央仓库的用户、密码、签名等信息。这些都是私密信息,直接贴build脚本里面放在Github上肯定是不合适的。
Google了很久找到一个解决办法,在项目目录下创建gradle.properties文件。存放用户名密码信息,但实际值为空:

version=0.4.5-SNAPSHOT
signing.keyId=
signing.password=
signing.secretKeyRingFile=
ossrhUsername=
ossrhPassword=

现在只有一个问题,在使用travis-ci自动构建的时候,提示错误:

:signArchives FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Could not evaluate onlyIf predicate for task ':signArchives'.
> Neither path nor baseDir may be null or empty string. path='' basedir='/home/travis/build/xyalan/marathon-cli'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED

我的build脚本部分内容:

artifacts {
    archives javadocJar, sourcesJar
}

ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
signing {
    required {
        boolean signed =  isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives")
        print signed
        signed
    }
    sign configurations.archives
}

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            pom.project {
                name 'marathon-cli'
                packaging 'jar'
                // optionally artifactId can be defined here
                description 'A application used as an example on how to set up pushing  its components to the Central Repository.'
                url 'http://www.example.com/example-application'

                scm {
                    connection 'scm:git:git://github.com/xyalan/marathon-cli.git'
                    developerConnection 'scm:git:git@github.com:xyalan/marathon-cli.git'
                    url 'https://github.com/xyalan/marathon-cli'
                }

                licenses {
                    license {
                        name 'The Apache License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                developers {
                    developer {
                        id 'alan'
                        name 'Alan Yang'
                        email 'alanlhy@gmail.com'
                    }
                }
            }
        }
    }

请问这个如何配置这个路径信息?

巴扎黑
巴扎黑

répondre à tous(4)
伊谢尔伦

Utiliser directement des espaces réservés devrait être le moyen le plus simple :
Remplissez les informations privées dans le fichier gradle.properties, telles que le nom d'utilisateur et le mot de passe :

username=
password=

Utilisez ensuite ${username}, ${password} directement dans le script de construction. Cependant, cette méthode nécessite que l'utilisateur configure ses propres gradle.properties S'il n'est pas configuré, l'espace réservé ne sera pas trouvé

.
伊谢尔伦

Vous avez mentionné travi-ci,
travis a deux commandes de cryptage utilisées pour traiter les informations sensibles dans le projet

# 加密命令需要登录后在项目目录执行,travis 网站说加密得到 linux 或 mac 上执行
gem install travis # 需要ruby才能有gem
travis login
# 加密环境变量或者文件
travis encrypt env.global.PASSWORD=your_password --add # 添加环境变量 PASSWORD 到 .travis.yml,程序中直接使用环境变量
travis encrypt-file secret-file  --add

Référence :

  • https://docs.travis-ci.com/us...

  • https://docs.travis-ci.com/us...

  • https://uedsky.com/2016-06/tr...

左手右手慢动作

Enregistrez le contenu privé dans un fichier et ajoutez le fichier à .ignore, comme cet article « Gradle en action : publier les packages aar dans le référentiel maven »

阿神

gradle-nexus-plugin

Identifiants
Dans votre ~/.gradle/gradle.properties, vous devrez définir les informations d'identification Nexus obligatoires requises pour télécharger vos artefacts.
Un plug-in comme celui ci-dessus par défaut le mot de passe utilisateur Placé dans le répertoire ~.

De plus, l'un des plus grands avantages de Gradle est la flexibilité, car il est écrit directement à l'aide de scripts groovy, vous pouvez donc charger n'importe quel fichier de configuration dans n'importe quel répertoire. Par exemple, il est acceptable d'utiliser Properties directement dans un script pour lire des fichiers dans un répertoire et les chiffrer dans un format spécifié ou autre.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal