常用

java -jar jenkins.war --httpPort=8080

java -Duser.home=/opt/manager/projects/blueocean -jar /opt/manager/projects/blueocean/jenkins/jenkins.war --httpPort=9292

docker:

docker pull jenkins/jenkins
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins

// lts版本
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

docker实例 [3]

启动:

docker run \
  --rm \
  -u root \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME":/home \
  --name jenkins \
  jenkinsci/blueocean

进入docker:

docker exec -it jenkins bash

流水线语法

  • 声明式流水线:

    Jenkinsfile (Declarative Pipeline)
    pipeline {
        agent any
        stages {
            stage('Build') {
                steps {
                    //
                }
            }
            stage('Test') {
                steps {
                    //
                }
            }
            stage('Deploy') {
                steps {
                    //
                }
            }
        }
    }
    
  • 脚本化流水线:

    Jenkinsfile (Scripted Pipeline)
    node {
        stage('Build') {
            //
        }
        stage('Test') {
            //
        }
        stage('Deploy') {
            //
        }
    }
    

执行环境

agent指令

  • agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集。 正如您所预料的,所有的Pipeline都需要 agent 指令

  • 在执行引擎中,agent 指令会引起以下操作的执行:

    所有在块block中的步骤steps会被Jenkins保存在一个执行队列中,一旦一个执行器executor是可以利用的,这些步骤将会开始执行
    一个工作空间 workspace 将会被分配, 工作空间中会包含来自远程仓库的文件和一些用于Pipeline的工作文件
    

处理 Jenkinsfile

参数:

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    parameters {
        string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
    }
    stages {
        stage('Example') {
            steps {
                echo "${params.Greeting} World!"
            }
        }
    }
}

使用环境变量:

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
            }
        }
    }
}

设置环境变量:

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    environment {
        CC = 'clang'    // 全局可用
    }
    stages {
        stage('Example') {
            environment {
                DEBUG_FLAGS = '-g'  // 只适用于`stage`中的步骤
            }
            steps {
                sh 'printenv'
            }
        }
    }
}
[1]https://jenkins.io/zh/
[2]https://github.com/jenkinsci
[3]https://jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/