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 上构建了

 

posted @ 2023-08-23 17:22  买定灬离手  阅读(161)  评论(0编辑  收藏  举报