我用Jenkins (多分支管道)在我的回购上运行的测试使用了一个加密文件(keys.py),通过git-crypt。为了在本地使用该文件,我通常使用git-crypt unlock,但由于该命令是如何工作的,所以不能直接将此步骤添加到Jenkinsfile中:
gpg用于解密用于加密我的文件的对称密钥(即.git-crypt/keys/default/0/xxxx.gpg)。这个密钥是用RSA加密的,使用我的私钥,这个密钥有一个密码,您是,在尝试使用它时,提示输入密码。keys.py。发布于 2017-11-08 15:34:35
要解决提示符的问题,请手动运行git-crypt步骤,将密码作为gpg的命令行参数插入,并将解密的对称密钥插入到git-crypt unlock。在这里,我们将使用更多的技巧来缓解您的生活,比如使用Jenkins 环境变量。
gpg --no-tty --passphrase YOUR_PASSPHRASE_GOES_HERE --output $WORKSPACE/.git-crypt/keys/default/0/decrypted.gpg --decrypt $WORKSPACE/.git-crypt/keys/default/0/YOUR_KEY_FILE_GOES_HERE.gpg && git-crypt unlock $WORKSPACE/.git-crypt/keys/default/0/decrypted.gpg
这里我们提出了第二个问题,执行这两次也会引发一个错误。我们希望回购只有在加密后才能被解密。为了解决这个问题,首先检查包含对称密钥的文件是否存在,只在上一步中生成。最后,我们的舞台看起来是:
stage('Unlock repo') { steps { script { sh("[ -f $WORKSPACE/.git-crypt/keys/default/0/decrypted.gpg ] || gpg --no-tty --passphrase YOUR_PASSPHRASE_GOES_HERE --output $WORKSPACE/.git-crypt/keys/default/0/decrypted.gpg --decrypt $WORKSPACE/.git-crypt/keys/default/0/YOUR_KEY_FILE_GOES_HERE.gpg && git-crypt unlock $WORKSPACE/.git-crypt/keys/default/0/decrypted.gpg") } } }
发布于 2020-05-24 22:00:30
我已经为git-crypt构建了另一个解决方案,方法是使用git-crypt创建一个单独的容器,并在主要构建步骤之前和之后分阶段调用这些容器:
pipeline {
environment {
// $HOME is not set in build-agent
JAVA_TOOL_OPTIONS = '-Duser.home=/home/jenkins/'
}
agent {
label 'docker'
}
stages {
stage('Decrypt') {
agent {
docker {
image 'wjung/jenkins-git-crypt:latest'
registryUrl 'https://index.docker.io/v1/'
registryCredentialsId 'docker-hub'
}
}
steps {
withCredentials([file(credentialsId: 'git-crypt-key', variable: 'FILE')]) {
sh 'cd $WORKSPACE; git-crypt unlock $FILE'
}
}
}
stage('Build docker image') {
agent {
docker {
image 'maven:3-jdk-11'
args '-v /services/maven/m2:/home/jenkins/.m2 -v /services/maven/m2/cache:/home/jenkins/.cache'
}
}
steps {
configFileProvider([configFile(fileId: 'mvn-setting-xml', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s $MAVEN_SETTINGS -B -Dmaven.test.skip clean deploy'
}
}
}
stage('Lock dir') {
agent {
docker {
image 'wjung/jenkins-git-crypt:latest'
registryUrl 'https://index.docker.io/v1/'
registryCredentialsId 'docker-hub'
}
}
steps {
sh 'cd $WORKSPACE; git-crypt lock'
}
}
}
}加密密钥由git-crypt export-key TMPFILE从存储库导出,然后以id:git-crypt-key作为秘密文件添加。
https://stackoverflow.com/questions/47183713
复制相似问题