创建您的第一个Pipeline

什么是 Jenkins Pipeline?

Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中。

持续交付 Pipeline 自动化的表达了这样一种流程:将基于版本控制管理的软件持续的交付到您的用户和消费者手中。

Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。[1]]

Pipeline 和 Jenkinsfile 的更多相关信息,请参考用户手册中的相关链接 PipelineUsing a Jenkinsfile

快速开始使用 Pipeline:

  • 以下示例 复制到您的仓库中并命名为 Jenkinsfile

  • 单击Jenkins中的 New Item 菜单Classic UI left column

  • 为您的新工程起一个名字 (例如 My Pipeline) ,选择 Multibranch Pipeline

  • 单击 Add Source 按钮,选择您想要使用的仓库类型并填写详细信息.

  • 单击 Save 按钮,观察您的第一个Pipeline运行!

您可能需要修改 Jenkinsfile 以便应用在您自己的项目中。尝试修改 sh 命令,使其与您本地运行的命令相同。

在配置好 Pipeline 之后,Jenkins 会自动检测您仓库中创建的任何新的分支或合并请求,并开始为它们运行 Pipelines。

继续学习 "执行多个步骤"

快速开始示例

下面是一个简单的 Pipeline 各种语言的复制和粘贴示例。

Java

Jenkinsfile (Declarative Pipeline)

  1. pipeline {
  2. agent { docker 'maven:3.3.3' }
  3. stages {
  4. stage('build') {
  5. steps {
  6. sh 'mvn --version'
  7. }
  8. }
  9. }
  10. }

Toggle Scripted Pipeline(Advanced)

Jenkinsfile (Scripted Pipeline)

  1. /* 需要Docker Pipeline插件 */
  2. node('docker') {
  3. checkout scm
  4. stage('Build') {
  5. docker.image('maven:3.3.3').inside {
  6. sh 'mvn --version'
  7. }
  8. }
  9. }

Node.js / JavaScript

Jenkinsfile (Declarative Pipeline)

  1. pipeline {
  2. agent { docker 'node:6.3' }
  3. stages {
  4. stage('build') {
  5. steps {
  6. sh 'npm --version'
  7. }
  8. }
  9. }
  10. }

Toggle Scripted Pipeline(Advanced)

Jenkinsfile (Scripted Pipeline)

  1. /* 需要 Docker Pipeline 插件 */
  2. node('docker') {
  3. checkout scm
  4. stage('Build') {
  5. docker.image('node:6.3').inside {
  6. sh 'npm --version'
  7. }
  8. }
  9. }

Ruby

Jenkinsfile (Declarative Pipeline)

  1. pipeline {
  2. agent { docker 'ruby' }
  3. stages {
  4. stage('build') {
  5. steps {
  6. sh 'ruby --version'
  7. }
  8. }
  9. }
  10. }

Toggle Scripted Pipeline(Advanced)

Jenkinsfile (Scripted Pipeline)

  1. /* 需要Docker Pipeline插件 */
  2. node('docker') {
  3. checkout scm
  4. stage('Build') {
  5. docker.image('ruby').inside {
  6. sh 'ruby --version'
  7. }
  8. }
  9. }

Python

Jenkinsfile (Declarative Pipeline)

  1. pipeline {
  2. agent { docker 'python:3.5.1' }
  3. stages {
  4. stage('build') {
  5. steps {
  6. sh 'python --version'
  7. }
  8. }
  9. }
  10. }

Toggle Scripted Pipeline(Advanced)

Jenkinsfile (Scripted Pipeline)

  1. /* 需要Docker Pipeline插件 */
  2. node('docker') {
  3. checkout scm
  4. stage('Build') {
  5. docker.image('python:3.5.1').inside {
  6. sh 'python --version'
  7. }
  8. }
  9. }

PHP

Jenkinsfile (Declarative Pipeline)

  1. pipeline {
  2. agent { docker 'php' }
  3. stages {
  4. stage('build') {
  5. steps {
  6. sh 'php --version'
  7. }
  8. }
  9. }
  10. }

Toggle Scripted Pipeline(Advanced)

Jenkinsfile (Scripted Pipeline)

  1. /* 需要 Docker Pipeline 插件 */
  2. node('docker') {
  3. checkout scm
  4. stage('Build') {
  5. docker.image('php').inside {
  6. sh 'php --version'
  7. }
  8. }
  9. }