1. 程式人生 > 其它 >Jenkinsfile pipline 使用 SSH 傳遞金鑰給 Docker

Jenkinsfile pipline 使用 SSH 傳遞金鑰給 Docker

前提

首選你需要將用到的 SSH 私鑰儲存到 Jenkins 的憑據中,這樣你會獲得一個 credentialId。這不是本文要說的內容,故不在此展開贅述,詳情可參考官方文件:https://www.jenkins.io/doc/book/using/using-credentials/。

只用一個 SSH Key

假若我們的 Jenkinsfile 裡只用到了一個 SSH key,那麼直接使用 Jenkins 的 SSH Agent 這個外掛就好,在 Jenkinsfile 中具體寫法為:

pipeline {
    agent {
        // ...
    }
    environment {
        // 為了構建映象時使用 SSH,需要開啟 Docker 的 Buildkit 功能
        DOCKER_BUILDKIT = "1"
    }
    stages {
        stage('Docker Build') {
            steps {
			// 啟動 ssh agent 並將預設的 SSH 私鑰憑據新增到其中
			sshagent(credentials: ['ssh-credentials-id']) {
					// 在這裡就正常的使用 Docker 相關的傳遞 SSH 私鑰構建
					// 詳情可以參見這篇文章:https://www.cnblogs.com/lfkid/p/dockerfile-ssh-docker-build-ssh.html
                    sh 'docker build --ssh default .'
                }
            }
        }
    }
}

參考