首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与Jenkins一起测试git-crypt加密回购

如何与Jenkins一起测试git-crypt加密回购
EN

Stack Overflow用户
提问于 2017-11-08 15:34:35
回答 2查看 2.9K关注 0票数 1

我用Jenkins (多分支管道)在我的回购上运行的测试使用了一个加密文件(keys.py),通过git-crypt。为了在本地使用该文件,我通常使用git-crypt unlock,但由于该命令是如何工作的,所以不能直接将此步骤添加到Jenkinsfile中:

  1. gpg用于解密用于加密我的文件的对称密钥(即.git-crypt/keys/default/0/xxxx.gpg)。这个密钥是用RSA加密的,使用我的私钥,这个密钥有一个密码,您是,在尝试使用它时,提示输入密码。
  2. 使用解密密钥解密keys.py
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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") } } }

票数 3
EN

Stack Overflow用户

发布于 2020-05-24 22:00:30

我已经为git-crypt构建了另一个解决方案,方法是使用git-crypt创建一个单独的容器,并在主要构建步骤之前和之后分阶段调用这些容器:

代码语言:javascript
复制
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作为秘密文件添加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47183713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档