Jenkins 版本:2.233
如果是服务器方式安装 Jenkins,需要服务器上线安装 Git 工具,然后在 "全局工具配置" 中指定 Git 工具地址。
如果是 Docker 镜像方式安装 Jnekins,那么 Jenkins 镜像中已经包含 Git 工具,且已经配置好环境,在 "全局工具配置" 中 Git 工具一栏已经默认配置 Git 工具路径为 git 了,所以一般不需要配置 Git 相关设置。
用户名: Git 仓库的用户名。
密码: Git 仓库的密码。
ID: 凭据的ID号,Pipeline 脚本中会使用到该 ID 来读取用户名/密码信息,这里设置该 ID 为 git-global-credentials
,如果不设置则系统会生成一个随机 ID 值(不太直观)。
node(){
sh "git version"
}
Started by user 管理员
Running in Durability level: PERFORMANCE_OPTIMIZED
[ ] Start of Pipeline
[ ] node
Running on Jenkins in /var/jenkins_home/workspace/git-test
[ ] {
[ ] sh
+ git version
git version 2.11.0
[ ] }
[// node ]
[ ] End of Pipeline
Finished: SUCCESS
node: 指定执行任务的节点,如果为空则寻找能够使用的节点,先从 master 开始,如果设置了 master 为不可执行任务,则使用 slave 节点。
stage: 设置脚本当前执行的阶段,相当于做标记,让脚本结构更加清晰。
git: Git 插件提供的方法,只能用于从远程 Git 仓库拉取代码操作。
url:远程仓库的地址。
branch:指定拉取的远程分支。
credentialsId:远程 git 仓库的用户名/密码认证凭据,这里使用的是上面步骤中配置好的凭据。
node(){
stage("Git 远程仓库拉取"){
git url: "https://github.com/my-dlq/test.git",
credentialsId: "git-global-credentials",
branch: "master"
}
}
withCredentials: 根据凭据 ID 引入凭据,然后使用 usernamePassword 策略,将凭据中的用户名/密码信息分别赋予 usernameVariable 与 passwordVariable 两个变量。
node(){
// 先执行从远程 Git 仓库拉取代码
stage("Git 远程仓库拉取"){
git url: "https://github.com/my-dlq/test.git",
credentialsId: "git-global-credentials",
branch: "master"
}
// 再执行添加新的文件,然后推送到远程 Git 仓库
stage("推送到 Git 远程仓库"){
withCredentials([usernamePassword(credentialsId:"git-global-credentials",
usernameVariable: "GIT_USERNAME",
passwordVariable: "GIT_PASSWORD")]) {
// 配置 Git 工具中仓库认证的用户名、密码
sh 'git config --local credential.helper "!p() { echo username=\\$GIT_USERNAME; echo password=\\$GIT_PASSWORD; }; p"'
// 配置 git 变量 user.name 和 user.emai
sh 'git config --global user.name "my-dlq"'
sh 'git config --global user.email "mynamedlq@163.com"'
// 创建新的文件,存入 git 项目,内容为当前时间,方便后续测试
sh 'date | tee aaa.txt'
// 将文件推送到 git 远程仓库
sh 'git add -f aaa.txt'
sh 'git commit -m "进行 git 测试"'
sh 'git push -u origin master'
}
}
}
Started by user 管理员
Running in Durability level: PERFORMANCE_OPTIMIZED
[ ] Start of Pipeline
[ ] node
Running on Jenkins in /var/jenkins_home/workspace/git-test
[ ] {
[ ] stage
[ ] { (Git 远程仓库拉取)
[ ] git
using credential git-global-credentials
> git rev-parse --is-inside-work-tree
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/my-dlq/test.git # timeout=10
Fetching upstream changes from https://github.com/my-dlq/test.git
> git --version
using GIT_ASKPASS to set credentials Github 用户名/密码凭据
> git fetch --tags --progress -- https://github.com/my-dlq/test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit}
> git rev-parse refs/remotes/origin/origin/master^{commit}
Checking out Revision b2bafc3cffb6321a0d088d87f95dc410199a2276 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout
=
10
> git checkout -f b2bafc3cffb6321a0d088d87f95dc410199a2276
> git branch -a -v --no-abbrev
> git branch -D master
> git checkout -b master b2bafc3cffb6321a0d088d87f95dc410199a2276
Commit message: "进行 git 测试"
> git rev-list --no-walk b2bafc3cffb6321a0d088d87f95dc410199a2276
[ ] }
[// stage ]
[ ] stage
[ ] { (推送到 Git 远程仓库)
[ ] withCredentials
Masking supported pattern matches of $GIT_USERNAME or $GIT_PASSWORD
[ ] {
[ ] sh
+ git config --local credential.helper !p() { echo username=$GIT_USERNAME; echo password=$GIT_PASSWORD; }; p
[ ] sh
+ git config --global user.name ****
[ ] sh
+ git config --global user.email mynamedlq@163.com
[ ] sh
+ date
+ tee aaa.txt
Sat Apr 25 16:01:10 UTC 2020
[ ] sh
+ git add -f aaa.txt
[ ] sh
+ git commit -m 进行 git 测试
[ ] 进行 git 测试
1 file changed, 1 insertion(+), 1 deletion(-)
[ ] sh
+ git push -u origin master
To https://github.com/****/test.git
b2bafc3..a3a9ae2 master -> master
Branch master set up to track remote branch master from origin.
[ ] }
[// withCredentials ]
[ ] }
[// stage ]
[ ] }
[// node ]
[ ] End of Pipeline
Finished: SUCCESS
来源:http://www.mydlq.club/article/82/
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧