tnblog
首页
视频
资源
登录

Jenkins Pipeline凭证上传镜像至Harbor

10216人阅读 2021/4/29 18:17 总访问:3470636 评论:0 收藏:0 手机
分类: Jenkins

Jenkins Pipeline凭证上传镜像至Harbor

配置Harbor项目


首先安装好harbor,可以参考以往文章:https://www.tnblog.net/hb/article/details/5667

添加用户


这里我们添加一个名为Vencent的用户

创建项目


创建一个test_jenkins_project私有项目,并将Vencent设置为该项目的开发人员。

设置Jenkins

设置流水线项目


在这里我已经创建好了相关流水线项目,可以让它拉取beta项目的代码,流水线配置与项目代码目录如下:

编写简单的Dockerfile文件与index.html

index.html

  1. How Are you

Dockerfile,我们这里将使用nginx镜像,并将1.txt与index.html文件复制到nginx工作目录下,最后重启nginx。

  1. FROM nginx:1.20.0-alpine
  2. COPY 1.txt /usr/share/nginx/html
  3. COPY index.html /usr/share/nginx/html
  4. ENTRYPOINT [ "nginx", "-s", "reload" ]

关闭本地构建


由于本机启动的节点并没有docker程序,所以我们将本机指定label时才可以使用本机构建

在Jenkins上创建凭证

然后生成使用凭证的脚本

编写Jenkins

  1. pipeline {
  2. agent any
  3. environment {
  4. // 构建版本
  5. BETA_VERSION="v1"
  6. // 项目名称
  7. PROJECT_NAME="beta"
  8. // Git构建凭证授权码
  9. GIT_ID="771a6f14-71ca-4316-a1a7-d349b005de79"
  10. // 项目构建地址
  11. GIT_URL="ssh://git@150.158.118.2:2222/root/beta.git"
  12. // Harbor凭证码
  13. HARBOR_ID="694c740b-7c24-435a-914e-7c0621418c96"
  14. // Harbor 地址
  15. HARBOR_URL="47.98.187.188:5000"
  16. // Harbor 项目名称
  17. HARBOR_PROJECT_NAME="test_jenkins_project"
  18. // 定义镜像名
  19. IMAGENAME="${PROJECT_NAME}:${BETA_VERSION}"
  20. }
  21. stages {
  22. stage('pull code') {
  23. steps {
  24. git branch: "${branch}", credentialsId: "${GIT_ID}", url: "${GIT_URL}"
  25. }
  26. }
  27. stage('Build') {
  28. steps {
  29. // docker 生成
  30. sh "echo ${IMAGENAME}"
  31. // docker 生成
  32. sh "docker build -t ${HARBOR_URL}/${HARBOR_PROJECT_NAME}/${IMAGENAME} ."
  33. // 登录到Harbor并上传镜像
  34. withCredentials([usernamePassword(credentialsId: "${HARBOR_ID}", passwordVariable: 'password', usernameVariable: 'username')]) {
  35. // 登录 Harbor
  36. sh "docker login -u ${username} -p ${password} ${HARBOR_URL}"
  37. // 上传镜像
  38. sh "docker push ${HARBOR_URL}/${HARBOR_PROJECT_NAME}/${IMAGENAME}"
  39. }
  40. // 删除本地镜像
  41. sh "docker rmi -f ${IMAGENAME}"
  42. sh "docker rmi -f ${HARBOR_URL}/${HARBOR_PROJECT_NAME}/${IMAGENAME}"
  43. }
  44. }
  45. }
  46. post {
  47. always {
  48. emailext(
  49. body: '${FILE,path="email.html"}',
  50. subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
  51. recipientProviders: [developers()],
  52. to: 'hmy86382516@163.com'
  53. )
  54. }
  55. }
  56. }

上传与构建

  1. #在当前目录下进行提交代码
  2. git add .
  3. git commit -m 'update email v6'
  4. git push

然后进行构建,特别注意要在构造机中声明,harbor地址的是安全的(请参考):https://blog.csdn.net/weixin_43404791/article/details/108971842


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价
这一世以无限游戏为使命!
排名
2
文章
635
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术