学习 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 按钮。

配置项目

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

下拉菜单 SCM 选择 Git。

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

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

输入框 Script Path 填写 Jenkinsfile 路径。

点击 Save 按钮保存项目。

Jenkinsfile

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

:point_down:是声明式 Pipeline 结构:

构建 Docker 镜像的:chestnut::

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 镜像到仓库。

参考