国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

jenkins pipeline項目

這篇具有很好參考價值的文章主要介紹了jenkins pipeline項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

回到目錄

將練習jenkins使用pipeline項目,結合k8s發(fā)布一個簡單的springboot項目

前提:jenkins的環(huán)境和k8s環(huán)境都已經安裝完成,提前準備了gitlab和一個簡單的springboot項目

創(chuàng)建一個流水線項目

jenkins pipeline項目,kubernetes,jenkins,運維

?流水線中選擇git,并選擇gitlab的test項目,拉取分支為main

jenkins pipeline項目,kubernetes,jenkins,運維

?后端代碼整體結構如下

jenkins pipeline項目,kubernetes,jenkins,運維

?jenkinsfile

在代碼根目錄下創(chuàng)建一個Jenkinsfile文件

需要注意的是environment中的value比如gitlab訪問憑證gitlab-root一定要和jenkins中配置的憑證名稱一致

pipeline {
	  //agent 選擇jenkins節(jié)點進行構建
	  //any表示任意
    agent any
		
		//環(huán)境變量
    environment {
    		//gitlab訪問憑證
        GIT_CREDENTIAL_ID = 'gitlab-root'
        //gitlab地址
        GIT_REPO_URL = '10.190.9.23:28080'
        //gitlab分組
        GIT_GROUP = 'devops'
        //gitlab項目名稱
        GIT_NAME = 'test'
        //harbor憑證
        HARBOR_ID = 'harbor-admin'
        //harbor地址
        HARBOR_URL = '30.14.181.51:8858'
        //harbor項目
        HARBOR_REPO = 'repo'
        //發(fā)送delpoment.yml到k8s服務器上的地址
        K8S_FILE_PATH = '/usr/local/k8s'
        //gitlab發(fā)送到服務器的目錄
        GITLAB_DEPLOYMENT_FILE = 'deploy'
    }

    parameters {
				//git插件 分支參數
        gitParameter(
                branchFilter: '.*',
                defaultValue: "${env.BRANCH_NAME ?: 'main'}",
                name: 'BRANCH_NAME',
                type: 'PT_BRANCH',
		description: '請選擇要發(fā)布的分支'
            )
            //git插件 標簽參數
	gitParameter(
                branchFilter: '.*',
                defaultValue: "${env.TAG_NAME ?: 'v:1.0.0'}",
                name: 'TAG_NAME',
                type: 'PT_TAG',
		description: '請選擇要發(fā)布的標簽'
            )
    }

    stages {
        stage("基本信息輸出"){
            steps{
                echo '選定待發(fā)布信息'
                echo "項目地址    ${GIT_REPO_URL}"
                echo "項目組      ${GIT_GROUP}"
                echo "項目名      ${GIT_NAME}"
                echo "分支        ${BRANCH_NAME}"
                echo "TAG        ${TAG_NAME}"
            }
        }
        stage('拉取gitlab代碼') {
            steps {
            		//拉取gitlab代碼,選擇分支
                checkout scmGit(
                    branches: [
                        [name: env.BRANCH_NAME]
                    ],
                    extensions: [],
                    userRemoteConfigs: [
                        [
                            credentialsId: env.GIT_CREDENTIAL_ID,
                            url: "http://${env.GIT_REPO_URL}/${env.GIT_GROUP}/${env.GIT_NAME}.git"
                        ]
                    ]
                )
                echo '拉取gitlab代碼  --SUCCESS'
            }
        }

        stage('Maven構建項目') {
            steps {
            		//maven構建項目打包
            		//maven命令位置 /var/jenkins_home/apache-maven-3.9.3
                sh "/var/jenkins_home/apache-maven-3.9.3/bin/mvn clean package -DskipTests"
                echo 'Maven構建項目  --SUCCESS'
            }
        }

        stage('通過docker制作鏡像') {
            steps {
            		//docker制作鏡像
            		//將maven打包的jar移動到docker目錄下
            		//使用dockerfile進行構建鏡像,鏡像名稱為 項目名:標簽
                sh """
                    mv target/*.jar docker/
                    docker build -t ${env.GIT_NAME}:${env.TAG_NAME} docker/
                """
                echo '通過docker制作鏡像  --SUCCESS'
            }
        }

        stage('推送鏡像到harbor') {
            steps {
            		//使用harbor憑證推送鏡像
                withCredentials([
                    usernamePassword(
                        credentialsId: env.HARBOR_ID,
                        passwordVariable: 'DOCKER_PASSWORD',
                        usernameVariable: 'DOCKER_USERNAME'
                    )
                ]) {
                		//打標簽為遠程倉庫標簽
                		//登陸到harbor
                		//推送鏡像
                    sh """
                        docker tag ${env.GIT_NAME}:${env.TAG_NAME} ${env.HARBOR_URL}/${env.HARBOR_REPO}/${env.GIT_NAME}:${env.TAG_NAME}
                        echo "\$DOCKER_PASSWORD" | docker login -u "\$DOCKER_USERNAME" -p "\$DOCKER_PASSWORD" ${env.HARBOR_URL}
                        docker push ${env.HARBOR_URL}/${env.HARBOR_REPO}/${env.GIT_NAME}:${env.TAG_NAME}
                    """
                }
                echo '推送鏡像到harbor  --SUCCESS'
            }
        }

        stage('發(fā)送k8s部署yml文件至目標服務器') {
            steps {
            		//使用ssh插件 發(fā)送deploy目錄下的部署yml文件到目標服務器
            		//須提前配置ssh免密登陸
                sshPublisher(
                    publishers: [
                        sshPublisherDesc(
                            configName: 'k8s',
                            transfers: [
                                sshTransfer(
                                    cleanRemote: false,
                                    excludes: '',
                                    execCommand: '',
                                    execTimeout: 120000,
                                    flatten: false,
                                    makeEmptyDirs: false,
                                    noDefaultExcludes: false,
                                    patternSeparator: '[, ]+',
                                    remoteDirectory: '',
                                    remoteDirectorySDF: false,
                                    removePrefix: '',
                                    sourceFiles: "${env.GITLAB_DEPLOYMENT_FILE}/*yml"
                                )
                            ],
                            usePromotionTimestamp: false,
                            useWorkspaceInPromotion: false,
                            verbose: false
                        )
                    ]
                )
                echo '發(fā)送yml文件至目標服務器  --SUCCESS'
            }
        }

        stage('遠程執(zhí)行k8s部署yaml命令') {
            steps {
            		//替換發(fā)送過來的部署文件
            		//部署
                sh """
                    ssh root@10.199.99.200 sed -i'' "s#REGISTRY#${env.HARBOR_URL}#" ${env.K8S_FILE_PATH}/${env.GITLAB_DEPLOYMENT_FILE}/deployment.yml
                    ssh root@10.199.99.200 sed -i'' "s#DOCKERHUB_NAMESPACE#${env.HARBOR_REPO}#" ${env.K8S_FILE_PATH}/${env.GITLAB_DEPLOYMENT_FILE}/deployment.yml
                    ssh root@10.199.99.200 sed -i'' "s#APP_NAME#${env.GIT_NAME}#" ${env.K8S_FILE_PATH}/${env.GITLAB_DEPLOYMENT_FILE}/deployment.yml
                    ssh root@10.199.99.200 sed -i'' "s#BUILD_NUMBER#${env.TAG_NAME}#" /${env.K8S_FILE_PATH}/${env.GITLAB_DEPLOYMENT_FILE}/deployment.yml
                    ssh root@10.199.99.200 kubectl apply -f ${env.K8S_FILE_PATH}/${env.GITLAB_DEPLOYMENT_FILE}/
                """
                echo '遠程執(zhí)行k8s部署yaml命令  --SUCCESS'
            }
        }
    }
}

deployment.yml

說明:

imagePullSecrets:
? ? ? ? - name: harbor-secret

因為將鏡像上傳到私人鏡像倉庫,所以k8s中拉取鏡像時從harbor中拉取,需要進行配置harbor的secret

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mytest
    component: devops
    tier: backend
  name: mytest
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: mytest
      component: devops
      tier: backend
  strategy:
    rollingUpdate:
      maxSurge: 100%
      maxUnavailable: 100%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: mytest
        component: devops
        tier: backend
    spec:
      imagePullSecrets:
        - name: harbor-secret
      containers:
        - name: mytest
          image: REGISTRY/DOCKERHUB_NAMESPACE/APP_NAME:BUILD_NUMBER
          readinessProbe:
            httpGet:
              path: /test
              port: 8080
            timeoutSeconds: 10
            failureThreshold: 30
            periodSeconds: 5
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: 300m
              memory: 600Mi
            requests:
              cpu: 100m
              memory: 100Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: mytest
    component: devops
  name: mytest
spec:
  ports:
    - name: http
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: mytest
    component: devops
    tier: backend
  sessionAffinity: None
  type: NodePort

dockerfile

用于構建docker鏡像

FROM eclipse-temurin:8-jre
LABEL org.opencontainers.image.authors="fooleryang@139.com"
COPY mytest.jar /usr/local/
WORKDIR /usr/local
CMD java -jar mytest.jar

發(fā)布

修改代碼后提交,版本修改為v6.0.0

jenkins pipeline項目,kubernetes,jenkins,運維

?在gitlab中新加標簽v6.0.0

jenkins pipeline項目,kubernetes,jenkins,運維

在jenkins中構建,選擇v6.0.0

jenkins pipeline項目,kubernetes,jenkins,運維??查看

jenkins pipeline項目,kubernetes,jenkins,運維

?總結

目前使用了jenkins的pipeline項目,發(fā)布項目到k8s中

?文章來源地址http://www.zghlxwxcb.cn/news/detail-626763.html

到了這里,關于jenkins pipeline項目的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Go】K8s 管理系統(tǒng)項目[Jenkins Pipeline K8s環(huán)境–應用部署]

    【Go】K8s 管理系統(tǒng)項目[Jenkins Pipeline K8s環(huán)境–應用部署]

    考慮到實際工作中前后端可能是不同的同學完成,一般Api部分完成后改動會比較小,web部分改動會比較頻繁.于是將api和web分了2個pipeline實現 docker目錄存放鏡像構建相關文件 k8s-plantform-api 存放api部分代碼 Jenkinsfile用作pipeline配置 yaml用作生成k8s下k8s-plantform-api相關資源 1.1.1 docker目

    2023年04月08日
    瀏覽(38)
  • 【運維知識高級篇】超詳細的Jenkins教程1(安裝部署+配置插件+創(chuàng)建自由風格項目+配合gitlab實現Jenkins自動觸發(fā))

    【運維知識高級篇】超詳細的Jenkins教程1(安裝部署+配置插件+創(chuàng)建自由風格項目+配合gitlab實現Jenkins自動觸發(fā))

    Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成的工具,用于監(jiān)控持續(xù)重復的工作,?旨在提供一個開放易用的平臺,使軟件的持續(xù)集成變成可能,是持續(xù)集成的核心,可以與其他軟件進行協(xié)作,例如,gitlab推送給測試環(huán)境代碼,可以通過Jenkins省略步驟,實現自動

    2024年02月05日
    瀏覽(40)
  • Jenkins之pipeline

    Jenkins之pipeline

    Pipeline Pipeline: Stage View Plugin demo 開始實踐 拉取git倉庫代碼 通過SonarQube做質量檢測 通過Docker制作自定義鏡像 將自定義鏡像推送到Harbor 通過Publish Over SSH通知目標服務器 Jenkinsfile

    2024年01月16日
    瀏覽(21)
  • Jenkins-Pipeline

    Jenkins-Pipeline

    Pipeline 1 安裝插件 2 新建一個 Pipline 工程 3 配置Pipeline 腳本 agent的使用可以參考這個文檔 我們配置的每一個階段都可以在這里展示: 4 如果我們需要在階段內部執(zhí)行多條指令 5 失敗以后重重試 6 超時重試 7 使用環(huán)境變量 上面的例子是為了方便演示,這里也提供一個生產環(huán)境中

    2024年01月18日
    瀏覽(19)
  • jenkins pipeline(腳本式)

    Groovy中的變量可以通過兩種方式定義 - 使用數據類型(包括byte、short、int、long、float、double、char、Boolean和String )的本地語法,或者使用def 注意:使用數據類型的本地語法后期不能更改成其他類型 Goovy中的變量作用域 綁定域:腳本內的全局作用域,相當于該腳本對象

    2024年02月08日
    瀏覽(44)
  • 【Jenkins】pipeline流水線

    【Jenkins】pipeline流水線

    流水線既能作為任務的本身,也能作為jenkinsfile,使用流水線可以讓我們的任務從ui手動操作,轉換為代碼化,像docker的dockerfile一樣,從shell命令到配置文件,更適合大型項目,可以讓團隊其他開發(fā)者同事參與進來,同時也可以編輯開發(fā)jenkinswebui不能完成的復雜的構建邏輯,作

    2024年02月09日
    瀏覽(37)
  • jenkins Pipeline接入mysql

    jenkins Pipeline接入mysql

    jenkin pipeline進化過程如下: Jenkins Pipeline 腳本優(yōu)化實踐:從繁瑣到簡潔 Jenkins Pipeline腳本優(yōu)化:為Kubernetes應用部署增加狀態(tài)檢測 使用Jenkins和單個模板部署多個Kubernetes組件。有一些需要動態(tài)設置的配置不想在jenkins中配置,想將這些變量存儲在mysql 這種數據庫中,通過動態(tài)修改

    2024年04月15日
    瀏覽(25)
  • Jenkins ——pipeline入門教程

    Jenkins ——pipeline入門教程

    一、什么是pipeline 什么是Pipeline?簡單來說,就是一套運行于Jenkins上的工作流框架,將原本獨立運行于單個或者多個節(jié)點的任務連接起來,實現單個任務難以完成的復雜發(fā)布流程(實用場景:將多個Jenkins構建任務輕松集成)。 ??簡而言之,就是一套工作流框架,將原本獨

    2024年02月09日
    瀏覽(36)
  • 【Jenkins】Pipeline - 設置超時時間

    默認時間單位為 MINUTES ,如果其他時間單位,則使用 unit 參數:SECONDS、MINUTES和HOURS 可以在不同級別(每個整體管道或每個階段)使用options指定超時 在上面的示例中,在階段超時之后,流水線中止,并顯示以下消息: Sending interrupt signal to process Cancelling nested steps due to timeout 如果

    2024年02月17日
    瀏覽(24)
  • Jenkins Pipeline的hasProperty函數

    用于判斷某個參數或者字段是否存在。 例子一 出現的場景: 我想通過參數配置進來一個選擇框列表,根據選擇的情況做不同的處理;在過程中,我發(fā)首次構建Job的時候會報錯誤。錯誤如下: 原因是:可能是因為首次構建, parameters 中的 extendedChoice 還沒有初始化好導致本次

    2024年02月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包