Workspace
  • Introduction
  • Algorithm
    • 二叉树
    • 排序算法
  • Basic Knowledge
    • CAP定理
    • CAS-SSO-单点登陆
    • 单向认证-双向认证
  • CICD
  • Cloud Native
  • Docker
    • Docker特性
    • Docker资源隔离
  • Golang
    • Standard Library
      • Archive
        • Builtin
        • Zip
    • Golang-container包
    • Golang-fallthrough关键字
    • Golang For Slect
    • Golang-Goroutine泄露
    • Golang Interface
    • Golang-json.Unmarshal
    • Golang Label
    • Golang Map String Struct
    • Golang Map To Struct
    • Golang Override Package Function
    • Golang-Slice删除元素
    • Golang Switch
    • Golang-sync.Cond
    • Golang-sync.Map
    • Golang-sync.once
    • Golang-type关键字
    • Golang-代码生成
    • golang-并发数控制
    • Golang-并发退出
    • Golang-插件系统
    • Golang-继承
    • Golang之channel
    • Golang之continue
    • Golang之make与new和nil
    • Golang之map
    • Golang之reflect
    • Golang之类型判断
    • Golang代码质量检测
    • Golang变量避坑
    • Golang字符串遍历
    • golang并发控制代码示例
    • Golang性能优化
    • Golang死锁
    • goroutine-协程-线程-进程
    • go值传递
    • go内存逃逸分析
    • go并发MGP模式
    • go并发控制
    • 垃圾回收-三色法
  • Istio
    • 服务网格
  • Jenkins
    • Jenkin On K 8 S
    • Jenkins Mac
  • Kubernetes
    • Deployment
    • k8s容器内查看-cpu-memory分配情况
    • kube-proxy原理
    • Kubernetes Informers
    • Kubernetes扩展点
    • Kubernetes部署策略
    • Pod Non Root
    • Pod驱逐
    • PV PVC Storage Class
    • Security Context
    • 优雅热更新
  • Python
    • Python-vs-Golang协程区别
  • Serviceless
  • Shell
    • Shell小技巧
  • VPN
    • OC Serv
  • Redis
Powered by GitBook
On this page
  • 由 Jenkinsfile 引发的问题
  • 添加额外的环境变量
  • Blue Ocean 插件安装
  • 关于 docker 的相关配置
  • Jenkins Cli
  • Golang SDK 调用 Jenkins api 创建 Pipeline Job
  • Declarative Pipeline support requires Jenkins 2.66 xml 例子

Was this helpful?

  1. Jenkins

Jenkins Mac

  • Mac 上 jenkins 运行的问题

  • Jenkins cli

  • golang sdk 调用 jenkins api 创建 pipeline Job

  • Declarative Pipeline support requires Jenkins 2.66 xml 例子

由 Jenkinsfile 引发的问题

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

Blue Ocean 插件安装

好看的流程界面,插件管理处搜索安装即可。

关于 docker 的相关配置

Mac OSX 系统 上面提到配置 docker 环境变量,只是可以 agent 阶段运行拉取镜像,后面的 stages 阶段就要报 docker 找不到了。

找到了三种方式

  1. ln -sf /usr/local/bin/docker /usr/bin/docker (ln: /usr/bin/docker: Operation not permitted Mac OSX 新版系统 不能变动 /usr/bin /bin)

  2. vim /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist

    添加一段

    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
  • 2.1 完整的 /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 配置如下

<?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>

Jenkins Cli

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 = &quot;mypod-${UUID.randomUUID().toString()}&quot;
    podTemplate(label: label, cloud: &apos;kubernetes&apos;) {
        node(label) {
            stage(&apos;Run shell&apos;) {
                sh &apos;sleep 130s&apos;
                sh &apos;echo hello world.&apos;
            }
        }
    }</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 &apos;jnlp&apos;
      yaml &quot;&quot;&quot;
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
&quot;&quot;&quot;
    }
  }
  stages {
    stage(&apos;Run maven&apos;) {
      steps {
        container(&apos;maven&apos;) {
          sh &apos;mvn -version&apos;
        }
        container(&apos;busybox&apos;) {
          sh &apos;/bin/busybox&apos;
        }
      }
    }
  }
}</script>
    <sandbox>true</sandbox>
  </definition>
  <triggers/>
  <disabled>false</disabled>
</flow-definition>
PreviousJenkin On K 8 SNextKubernetes

Last updated 5 years ago

Was this helpful?

Jenkins Cli 提供了诸多命令可以与 Jenkins 交互 如导出 Job java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:admin get-job my-k8s-jenkins-pipeline > my-k8s-jenkins-pipeline.xml