学习 Jenkins(二):Jenkinsfile

更新至 Jenkins 2.150.3 版本

Jenkins Pipeline

Jenkins Pipeline 是一套支持在 Jenkins 中实现持续部署管道的插件。

Jenkins 支持一下方式创建 Jenkins Pipeline:

  • 通过 Blue Ocean 界面
  • 通过经典 UI 界面
  • 通过 SCM 项目中 Jenkinsfile

本文重点介绍使用 Jenkinsfile 创建 Jenkins Pipeline。

创建项目

首页,点击 New Item 菜单项,输入 item name 选择 Pipeline 类型,点击 OK 按钮。

Step 1

配置项目

下拉菜单 Definition 选择 Pipeline script from SCM。

下拉菜单 SCM 选择 Git。

输入框 Repositories[].Repository URL 填写 Git 地址,下拉框 Repositories[].Credentials 选择 Git 用户名和密码。

输入框 Branches to build.Branch Specifier 填写 Git 分支名。

输入框 Script Path 填写 Jenkinsfile 路径。

点击 Save 按钮保存项目。

Step 2

Jenkinsfile

Jenkinsfile 支持两种方式:声明式和脚本式,脚本式使用了 Groovy 作为 DSL。

👇是声明式 Pipeline 结构:

声明式 Pipeline

构建 Docker 镜像的🌰:

pipeline {  
    agent any

    parameters {
        string(name: 'url', defaultValue: '', description:'Git 地址')
        choice(name: 'branch', choices: ['master', 'dev', 'test'], description:'分支')
    }

    stages {
        stage('ci') {
            steps {
                git(
                    url: "${params.url}",
                    branch: "${params.branch}",
                    credentialsId: 'git'
                )

                sh('mvn clean package -DskipTests')

                script {
                    def image_name = "dyingbleed/${env.JOB_NAME}"
                    def image_tag = "${env.BUILD_ID}"

                    def image = docker.build("${image_name}:${image_tag}")
                    withDockerRegistry([url: '', credentialsId: 'docker_hub']) {
                        image.push()
                        image.push('latest')
                    }
                }
            }
        }
    }
}

① 使用 Git 拉取最新的工程代码;

② 使用 Maven 构建 Java 工程;

③ 根据工程下 Dockerfile 构建 Docker 镜像;

④ 推送 Docker 镜像到仓库。

参考