创建你的第一个管道
什么是Jenkins管道?
Jenkins管道(或简称“管道”)是一套插件,支持实现和集成持续交付管道到Jenkins中。
持续交付管道是将软件从版本控制直接传递给用户和客户的过程的自动化表达。
Jenkins管道提供了一组可扩展的工具,用于“作为代码”对简单到复杂的交付管道进行建模,Jenkins管道的定义通常写入文本文件(称为Jenkinsfile
),然后将其检入项目的源代码控制存储库。
有关管道和什么是Jenkinsfile
的更多信息,请参阅用户手册的相应管道和使用Jenkinsfile
部分。
快速开始使用管道:
- 将以下示例之一复制到你的存储库中,并将其命名为
Jenkinsfile
。
- 单击Jenkins中的新建任务菜单。
- 为新项目提供名称(例如My Pipeline),然后选择多分支流水线。
- 单击增加源按钮,选择要使用的存储库类型并填写详细信息。
- 单击Save按钮,观察你的第一个管道运行!
你可能需要修改其中一个示例Jenkinsfile
,以使其与你的项目一起运行,尝试修改sh
命令以运行与在本地机器上运行相同的命令。
设置管道后,Jenkins将自动检测在你的存储库中创建的任何新分支或Pull请求,并开始为它们运行管道。
快速入门示例
下面是一些使用各种语言的简单管道的简单复制和粘贴示例。
Java
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'maven:3.3.3' } }
stages {
stage('build') {
steps {
sh 'mvn --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('maven:3.3.3').inside {
sh 'mvn --version'
}
}
}
Node.js / JavaScript
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'node:6.3' } }
stages {
stage('build') {
steps {
sh 'npm --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('node:6.3').inside {
sh 'npm --version'
}
}
}
Ruby
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'ruby' } }
stages {
stage('build') {
steps {
sh 'ruby --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('ruby').inside {
sh 'ruby --version'
}
}
}
Python
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'python:3.5.1' } }
stages {
stage('build') {
steps {
sh 'python --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('python:3.5.1').inside {
sh 'python --version'
}
}
}
PHP
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'php' } }
stages {
stage('build') {
steps {
sh 'php --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('php').inside {
sh 'php --version'
}
}
}
Go
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'golang' } }
stages {
stage('build') {
steps {
sh 'go version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
/* Requires the Docker Pipeline plugin */
node('docker') {
checkout scm
stage('Build') {
docker.image('go').inside {
sh 'go version'
}
}
}