#From Ubuntu
docker exec -ti jenkins /bin/bash
#From Docker
ssh-keygen
域名: 如填寫 coding
描述: 如填寫:coding倉庫
描述和Username 我都是填寫 coding_jenkins
Private key: 填入Jenkins 容器的私鑰
#From Docker jenikins Container
#生成密鑰
ssh-keygen
#查看公鑰
cat /var/jenkins_home/.ssh/id_rsa
將公鑰加入到coding個人資料中的公鑰中,這樣就可以訪問當前工作空間的所有代碼倉庫了
Jenkins pipeline git parameter
Plugin: Git parameter
pipeline {
agent any
environment {
def DEPLOY_GIT_SSH_URL = "http://localhost:10011/test.git"
}
parameters {
gitParameter name: 'TAG',
type: 'PT_TAG',
defaultValue: 'master'
}
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: "${params.TAG}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'fa16d707-070c-4462-9089-965bad493dd1', url: "${DEPLOY_GIT_SSH_URL}"]]])
}
}
stage('publish to ten servers') {
steps {
script {
def SERVER_NODES = ["server1","server2"]
for (server_node in SERVER_NODES){
echo "部署服務器 ${server_node} 中"
sshPublisher(publishers: [sshPublisherDesc(configName: "${server_node}", transfers: [sshTransfer(cleanRemote: false, excludes: 'Jenkinsfile,README.md,CHANGELOG.md', execCommand: '''chmod 755 /var/www/html/test
chmod 755 /var/www/html/test/* -R''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/var/www/html/test/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
}
}
其中 credentialsId
是驗證憑證id,可以在 系統管理
-> 憑據
,就會看到 憑據列表,其中列表的 唯一標識
中看到
SERVER_NODES
數組中 元素是在 Jinkins 系統配置中, Publish over SSH
的 SSH Server
中填寫的名稱(Name)。
References
- Jenkins Pipeline:使用Git Parameter Plugin 實現參數化構建時選擇分支和Tag 知道
git parameter
插件地址 - Jenkins pipeline:pipeline 使用之語法詳解 學習到 Jenkins pipeline 的for循環
- jenkins pipeline stage 循環 學習到 Jenkins pipeline 的for 可以定義
stage
- jenkins Pipeline 使用 學習到變量定義