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

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

這篇具有很好參考價值的文章主要介紹了Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Jenkins是目前大多數(shù)中小公司使用的CI、CD工具,其中Jenkins的任務(wù)又分普通任務(wù)和流水線任務(wù),普通任務(wù)的構(gòu)建和部署在我之前的一篇文章中寫過使用教程# 基于 Docker 安裝 Jenkins,并配置使用 Jenkins 打包 Node 前后端服務(wù)部署到遠程服務(wù)器,但其中流水線任務(wù)可實現(xiàn)我們更復(fù)雜的需求也更自由,不過上手難度也稍微高點。

一、安裝Jenkins

推薦使用 Docker 來安裝Jenkins,更方便后期的遷移部署等,具體安裝步驟可參考

# 基于 Docker 安裝 Jenkins,并配置使用 Jenkins 打包 Node 前后端服務(wù)部署到遠程服務(wù)器

二、普通流水線

這里我將演示使用流水線來部署一個前端項目,其他項目也同樣是這幾個步驟

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

首先創(chuàng)建一個流水線任務(wù)

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)
在流水線配置這有兩種方式,第一種是直接把流水線腳本寫在配置文本框這,第二種是把腳本寫在項目根目錄下,用Jenkinsfile文件來寫入,圖下面可以看到有個流水線語法的按鈕,是可以把具體操作用可視化的方式生成腳本。

我們在文本框這寫入以下腳本內(nèi)容:

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                nodejs('node16') {
                    sh '''
                        if hash pnpm 2>/dev/null; 
                        then
                            echo "pnpm"
                        else
                            npm i pnpm -g --registry https://registry.npmmirror.com/
                        fi

                        pnpm i
                        pnpm run build
                    '''
                }
                echo '構(gòu)建完成'
            }
        }
        stage('Zip') {
            steps {
                sh '''
                    tar -zcvf ${JOB_BASE_NAME}.tgz ./dist/*
                    rm -rf ./dist/*
                    mv ${JOB_BASE_NAME}.tgz ./dist
                '''
                echo '打包完成'
            }
        }
        stage('Deploy') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'tencent', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

Stages: 這個字段下分了幾個單獨的stage,會從上至下依次執(zhí)行stage,如果是剛才說的第一種方式,應(yīng)該還會比上面多個拉取代碼的階段。具體拉取代碼的語法可以用上面的流水線語法頁面可視化生成。

stage('Build'): 代碼構(gòu)建階段,這里因為是前端項目,用到了node來構(gòu)建,需要安裝NodeJS插件,然后去全局工具配置里安裝一下具體的node版本及設(shè)置下別名。

stage('Zip'): 壓縮階段,因為我們前端代碼部署只需要部署dist目錄,把這個目錄tgz壓縮一下發(fā)到目標(biāo)服務(wù)器。

stage('Deploy'): 部署階段,需要安裝一個Publish Over SSH插件,然后通過上面的流水線語法去可視化配置部署到服務(wù)器的配置,最后把生成的腳本粘貼到這就行。

到這我們構(gòu)建及部署代碼到服務(wù)器的基本配置就完成了,大部分項目其實發(fā)版流程就是這幾步,下面還有幾種流水線進階用法。

三、多環(huán)境部署流水線

有時候我們會遇到多環(huán)境部署的情況,如開發(fā)壞境,生產(chǎn)環(huán)境等,大概就是我們通過在流水線添加一個部署壞境的參數(shù)來控制,在每次構(gòu)建前選擇一下部署的壞境,具體腳本如下:

pipeline {
    agent any

    parameters {
        choice(
            description: '你需要哪個機器進行部署?',
            name: 'deploy_hostname',
            choices: ['tencent', 'dev01', 'tencent、dev01']
        )
    }

    stages {
        stage('Build') {
            steps {
                nodejs('node16') {
                    sh '''
                        if hash pnpm 2>/dev/null; 
                        then
                            echo "pnpm"
                        else
                            npm i pnpm -g --registry https://registry.npmmirror.com/
                        fi

                        pnpm i
                        pnpm run build
                    '''
                }
                echo '構(gòu)建完成'
            }
        }
        stage('Zip') {
            steps {
                sh '''
                    tar -zcvf ${JOB_BASE_NAME}.tgz ./dist/*
                    rm -rf ./dist/*
                    mv ${JOB_BASE_NAME}.tgz ./dist
                '''
            }
        }
        stage('Deploy to tencent'){
            when {
                expression { deploy_hostname == 'tencent' }
            }
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'tencent', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
        stage('Deploy to dev01'){
            when {
                expression { deploy_hostname == 'dev01' }
            }
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'dev01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
        stage('Deploy to tencent、dev01'){
            when {
                expression { deploy_hostname == 'tencent、dev01' }
            }
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'tencent', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                sshPublisher(publishers: [sshPublisherDesc(configName: 'dev01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

可以看到除了我們之前配置的agentstages還多了一個parameters的參數(shù)配置,添加了一個deploy_hostname的選擇參數(shù),有三個值'tencent', 'dev01', 'tencent、dev01'

在具體的stage里面也多了when的配置,就是根據(jù)我們選擇的部署環(huán)境參數(shù)來執(zhí)行相應(yīng)壞境的部署流程,當(dāng)when里面的條件不滿足時,流水線會跳過里面的steps

四、多分支流水線

還有種情況是項目多分支的情況下,每個分支可能對應(yīng)的部署壞境,或者執(zhí)行條件不一樣,就會用到Jenkins的多分支流水線

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

在新建Jenkins任務(wù)時選擇多分支流水線

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

在分支源里配置對應(yīng)的git項目地址認證憑據(jù),保存后他會自動掃描項目里面的分支,我們需要在每個分支下創(chuàng)建一個Jenkinsfile文件,把我們的腳本寫在這個文件里

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

具體的構(gòu)建部署腳本可參考之前的普通流水線,如果需要WebHook自動觸發(fā)的可參考下面腳本

pipeline {
    agent any

    triggers {
        GenericTrigger (
            causeString: 'Triggered', 
            genericVariables: [[key: 'ref', value: '$.ref']], 
            printContributedVariables: true, 
            printPostContent: true, 
            token: 'test01'
        )
    }

    stages {
        stage('Build') {
            steps {
                nodejs('node16') {
                    sh '''
                        if hash pnpm 2>/dev/null; 
                        then
                            echo "pnpm"
                        else
                            npm i pnpm -g --registry https://registry.npmmirror.com/
                        fi

                        pnpm i
                        pnpm run build
                    '''
                }
                echo '構(gòu)建完成'
            }
        }
        stage('Zip') {
            steps {
                sh '''
                    tar -zcvf ${JOB_BASE_NAME}.tgz ./dist/*
                    rm -rf ./dist/*
                    mv ${JOB_BASE_NAME}.tgz ./dist
                '''
            }
        }
        stage('Deploy to tencent'){
            when {
                branch 'master'
            }
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'tencent', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
        stage('Deploy to dev01'){
            when {
                branch 'dev'
            }
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'dev01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'部署完成\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

可以看到上面添加了一個triggers配置,這個需要安裝Generic Webhook Trigger插件,然后按上面那樣配置,其中的token配置可以隨意改動,就是我們最終觸發(fā)hooks的url最后面的參數(shù)。

配置完成后,就可以通知http://JENKINS_URL/generic-webhook-trigger/invoke?token=test01來觸發(fā)我們的hook,一般我們需要在gitlab的Webhooks進行配置觸發(fā)hooks

Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)

到此Jenkins多種流水線的配置介紹就完成了,具體細節(jié)有不了解的小伙伴可在下面評論區(qū)留言。關(guān)于流水線語法每個配置的詳解可參考# Jenkinsfile聲明式語法詳解文章來源地址http://www.zghlxwxcb.cn/news/detail-470455.html

到了這里,關(guān)于Jenkins 流水線多種使用場景詳解(Jenkinsfile,多環(huán)境部署,多分支部署)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Jenkins】Jenkins構(gòu)建前端流水線

    【Jenkins】Jenkins構(gòu)建前端流水線

    1、服務(wù)器中已安裝好nginx,如沒有安裝,可參考此博客:【Shell腳本】Linux安裝Nginx以及開機自啟 2、如果已有試圖,則直接新建任務(wù);如沒有視圖,則新建一個視圖即可。 一個項目一個視圖就可以 描述:XXX前端-前端XXX服務(wù)測試環(huán)境-項目構(gòu)建 創(chuàng)建人:創(chuàng)建者姓名 時間:創(chuàng)建

    2024年02月16日
    瀏覽(20)
  • jenkins流水線

    jenkins流水線

    1、 二、 三、 四、 五、 六、 ?

    2024年02月05日
    瀏覽(28)
  • (十五)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建策略配置及觸發(fā)器的使用

    (十五)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建策略配置及觸發(fā)器的使用

    本節(jié)內(nèi)容我們主要介紹在Jenkins流水線中,其構(gòu)建過程中的一些構(gòu)建策略的配置,例如通過遠程http構(gòu)建、定時任務(wù)構(gòu)建、輪詢SCM構(gòu)建、參數(shù)化構(gòu)建、Git hook鉤子觸發(fā)構(gòu)建等,可根據(jù)不同的需求完成不同構(gòu)建策略的配置。 - 構(gòu)建策略說明: - 測試驗證 - 構(gòu)建說明 - 測試驗證 - 配置

    2024年02月21日
    瀏覽(39)
  • Jenkins流水線怎么做?

    Jenkins流水線怎么做?

    問CHAT:Jenkins流水線怎么做? CHAT回復(fù):Jenkins流水線是一種創(chuàng)建、測試和部署應(yīng)用程序的方法。以下是為Jenkins創(chuàng)建流水線的步驟: 1. 安裝Jenkins:首先你需要在你的服務(wù)器上安裝Jenkins。這個過程可能會根據(jù)你的操作系統(tǒng)有所不同。 2. 安裝必要的插件:為了使流水線工作,你需

    2024年01月24日
    瀏覽(40)
  • 【Jenkins】pipeline流水線

    【Jenkins】pipeline流水線

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

    2024年02月09日
    瀏覽(37)
  • Jenkins 流水線多階段構(gòu)建

    Jenkins 流水線多階段構(gòu)建

    Jenkins流水線配置遇到 無法識別的。需要使用 自定義環(huán)境 項。 比如官網(wǎng)的在流水線中使用Docker Started by remote host 172.17.0.1 Obtained Jenkinsfile from git http://10.99.20.51:8082/root/java-devops-demo.git org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 28: Invalid agent type “

    2024年04月22日
    瀏覽(29)
  • Jenkins-流水線-保姆級教程

    目錄 一、Jenkins 是什么? 二、安裝方式 2.1 下載并運行 Jenkins ?三、什么是流水線 3.1概述 3.2聲明式流水線 3.3腳本化流水線 四、聲明式流水線 4.1?Sections代碼區(qū)域塊 4.1.1Agent指令 4.1.2agent 的配置示例 4.1.3Post代碼塊 4.1.4.sepes代碼塊 五、Jenkinsfile的使用 5.1環(huán)境變量 5.1.1靜態(tài)變量

    2024年02月01日
    瀏覽(25)
  • Jenkins部署Docker與Jenkins流水線

    Jenkins部署Docker與Jenkins流水線

    接上篇 1. 外掛文件的方式在docker容器中啟動 2. 將構(gòu)建運行放入docker容器中(不構(gòu)建鏡像) 修改Jenkins構(gòu)建前設(shè)置 修改部署后操作 重新構(gòu)建,已經(jīng)成功構(gòu)建在容器中 3. 將構(gòu)建運行放入docker鏡像中(采用dockerfile) 1.編寫dockerfile,放入項目中, 注意不能和依賴的包同級 寫好可

    2024年01月22日
    瀏覽(47)
  • 【Jenkins】Jenkins構(gòu)建后端流水線

    【Jenkins】Jenkins構(gòu)建后端流水線

    xxxx后端-后端cim服務(wù)測試環(huán)境-項目構(gòu)建 創(chuàng)建人:創(chuàng)建者姓名 時間:創(chuàng)建時間 保持構(gòu)建天數(shù):2 保持最大構(gòu)建個數(shù):3 ①clean:清楚之前;package:打包 -Dmaven.test.skip=true:跳過測試;-U:強制讓Maven檢查所有SNAPSHOT依賴更新 這里的pom.xml文件注意: Branches to build:分支某個環(huán)境的

    2024年02月12日
    瀏覽(18)
  • jenkins流水線實現(xiàn)xjar加固

    jenkins流水線實現(xiàn)xjar加固

    xjar的定義 功能特性 xjar使用 修改項目中的pom.xml,一般都是開發(fā)改 jenkins流水線配置 查看jenkins工作目錄 遠端服務(wù)器配置–?需要授權(quán)的服務(wù)器 獲取授權(quán)服務(wù)器信息 執(zhí)行腳本 腳本內(nèi)容, 1.判斷鏡像是否存在 2.把xjar.go解壓,需要有g(shù)o環(huán)境 3.制作鏡像,然后把鏡像制作成tar包

    2024年02月07日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包