Jenkins 构建完 直接把包推送到 GitHub
思路:在本地生成密钥,然后把公钥传到GitHub,然后在Jenkins 中配置 git 命令,让Jenkins 自己构建完,直接推送
官网连接:
Generating a new SSH key and adding it to the ssh-agent - GitHub Enterprise Server 3.7 Docs
1、在本地生成密钥
粘贴下面的文本,替换您的 GitHub 企业服务器电子邮件地址。
ssh-keygen -t ed25519 -C "your_email@example.com"
2、把生成的密钥放到GitHub上
3、在Jenkins 的执行shell 里 编写git 命令
${projectName} 要自己根据项目自行修改
#!/bin/bash echo "git 推送" path="${WORKSPACE}/${projectName}/hub" # 在本地创建一个存放仓库的目录 mkdir -p ${path} cd ${WORKSPACE}/${projectName}/hub/ # 这个一定要加 要不然 一条报错 就直接停止 加上set +e 报错也会继续执行 set +e cd ${WORKSPACE}/${projectName}/hub/ # 这个每次都执行 报错也没关系 但是如果一次没有 就会构建失败 git config --global user.name "Auto" git config --global user.email "your_email@example.com" # 在本地声明一下 密钥 即使本地直接拉取可以 但是Jenkin不声明会报错 eval `ssh-agent -s` ssh-add /root/.ssh/id_ed25519 # 把远端仓库clone 下来 在对应的仓库下面复制 ssh 地址 git clone -b master git@xxxxxxxxxxxxx.git git fetch cd dcc-be-${hubName} # 在本地添加远程仓库地址 如果有地址 再次添加会报错 但是上面有set +e 不会影响 如果没有 那会有问题 git remote add origin git@xxxxxxxxxxxxx.git git remote set-url origin git@xxxxxxxxxxxxxx.git # 切换到 远程仓库要推送的分支 删除要更换的文件 并把新文件拷贝进来 git checkout master git rm -r app.jar cp ${WORKSPACE}/${projectName}/target/${projectName}-1.0.0.jar ./app.jar # 把新文件推送到暂存区 然后再提交到分支上 最后推送到远端仓库 git add app.jar git status git commit -m "${projectName}-${BUILD_TIMESTAMP}" git push origin master # 最后把clone 下来的仓库目录删除 cd ${WORKSPACE}/${projectName}/hub/ rm -rf dcc-be-${hubName}
然后就可以在Jenkins 上构建了