Jenkins Pipeline 构建 Docker 镜像并发布项目


一、新建 Pipeline 任务

在这里插入图片描述

二、流水线定义

这里我们使用 Scripted Pipeline(脚本式),直接在 Jenkins Web UI 界面输入脚本来进行创建。
在这里插入图片描述

三、Jenkinsfile 展示

node('NEW-jenkins-anget-01'){
    stage('clone') {
        echo "1. Clone Stage"
        git branch: 'main', credentialsId: 'test', url: 'ssh://git@192.168.1.10:2222/test/test.git'
        script {
            build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
        }
    }
    stage('Build'){
        echo "3. Build Docker Image Stage"
        sh "docker build -t 192.168.1.10/test/test:${build_tag} ."
    }
    stage('Push'){
        echo "4. Push Docker Image Stage"
        withCredentials([usernamePassword(credentialsId: 'DockerHarbor', passwordVariable: 'DockerHarborPassword', usernameVariable: 'DockerHarborUser')]) {
        sh "docker login -u ${DockerHarborUser} -p ${DockerHarborPassword} 192.168.1.11"
        sh "docker push 192.168.1.10/test/test:${build_tag}"
        }
    }
    stage('Deploy'){
        echo "5. Deploy Stage"
        sshPublisher(publishers: [sshPublisherDesc(configName: 'deploy-test-01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """
        docker rm -f crawler
        docker run -itd --name crawler -p 80:80 --restart always 192.168.1.10/test/test:${build_tag} 
        """, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
    }
}

注释

  • node(‘NEW-jenkins-anget-01’):指定 Jenkins Node 节点,通过标签进行指定
  • 第一个 stage:拉取git代码
    • branch:选择分支

    • credentialsId:指定拉取代码的节点,通过全局凭据的名称 ID 进行指定。
      在这里插入图片描述

    • url:代码项目地址

    • script:需要执行的命令

    • build_tag = sh(returnStdout: true, script: ‘git rev-parse --short HEAD’).trim(): 这里设置 docker 镜像标签变量,与 gitlab 中 commit id 值保持一致,便于排查问题与回滚。

  • 第二个 Stage:构建 Docker
    • docker build -t 192.168.1.10/test/test:${build_tag} .:这里会在拉取代码的当前路劲执行此命令来构建镜像,前提是代码内已经创建 Dockerfile 文件。
  • 第三个 Stage:上传 Docker 镜像到私有仓库
    • withCredentials:通过此类设置仓库的账号密码变量,避免密码泄露。
      • 通过全局凭据来保存私有仓库的账号和密码
        在这里插入图片描述
      • 通过流水线语句可以快速生成流水线脚本
        在这里插入图片描述
  • 第四个 Stage:
    • sshPublisher:连接需要部署的服务器,执行删除容器、启动新镜像容器。
      • configName:服务器 ID,也是通过设置全局凭据来实现。
      • execCommand:需要执行的命令

总结

构建 Docker 镜像并发布项目的具体步骤:

  1. 获取代码;
  2. 创建新的镜像;
  3. 连接镜像仓库,将生成的镜像上传至镜像仓库;
  4. 获取新的镜像并发布项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值