#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 使用 学习到变量定义