pipeline {
agent {
docker {
image 'maven:3-alpine'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
}
}
您可以在Jenkins-> Configure System中执行此操作。
定义一个名为PATH+EXTRAEXTRA显然可以是任何东西的变量。
在该变量中,只需添加PATH的附加内容即可。所以在我上面的例子中,我根本不会设置PATH,而是我只是设置: PATH+EXTRA=/opt/blah/bin
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.jenkins</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/java_home</string>
<string>-v</string>
<string>1.8</string>
<string>--exec</string>
<string>java</string>
<string>-Dmail.smtp.starttls.enable=true</string>
<string>-jar</string>
<string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
<string>--httpListenAddress=127.0.0.1</string>
<string>--httpPort=8080</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Golang SDK 调用 Jenkins api 创建 Pipeline Job
package main
import (
"fmt"
"github.com/bndr/gojenkins"
)
func main() {
// client := &http.Client{}
jenkins := gojenkins.CreateJenkins(nil, "http://localhost:8080", "admin", "admin")
jenkins.Init()
configString := `<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.34">
<actions/>
<description>app.env 描述</description>
<keepDependencies>false</keepDependencies>
<properties/>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.74">
<script>def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(label: label, cloud: 'kubernetes') {
node(label) {
stage('Run shell') {
sh 'sleep 130s'
sh 'echo hello world.'
}
}
}</script>
<sandbox>true</sandbox>
</definition>
<triggers/>
<disabled>false</disabled>
</flow-definition>`
_, err := jenkins.CreateJob(configString, "api-create-my-k8s-jenkins-pipeline")
if err != nil {
fmt.Println(err.Error())
}
}
Declarative Pipeline support requires Jenkins 2.66 xml 例子
<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.34">
<actions>
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@1.3.9"/>
</actions>
<description>app.env 描述</description>
<keepDependencies>false</keepDependencies>
<properties/>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.74">
<script>pipeline {
agent {
kubernetes {
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
some-label: some-label-value
spec:
containers:
- name: maven
image: maven:alpine
command:
- cat
tty: true
- name: busybox
image: busybox
command:
- cat
tty: true
"""
}
}
stages {
stage('Run maven') {
steps {
container('maven') {
sh 'mvn -version'
}
container('busybox') {
sh '/bin/busybox'
}
}
}
}
}</script>
<sandbox>true</sandbox>
</definition>
<triggers/>
<disabled>false</disabled>
</flow-definition>