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

Gitlab CI/CD: rules和only

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

對比rules和only

rulesonly 都是在 GitLab CI/CD 配置中用于控制作業(yè)(job)何時執(zhí)行的關(guān)鍵字,但它們之間有一些不同之處:

  1. only 關(guān)鍵字

    only 關(guān)鍵字用于定義在特定情況下觸發(fā)作業(yè)的條件。你可以指定一系列觸發(fā)條件,只有當(dāng)至少一個條件匹配時,作業(yè)才會被觸發(fā)執(zhí)行。only 通常用于根據(jù)分支、標(biāo)簽、變量等來設(shè)置作業(yè)的觸發(fā)條件。例如:

    only:
      - branches  # 觸發(fā)所有分支上的作業(yè)
      - tags      # 觸發(fā)所有標(biāo)簽上的作業(yè)
      - schedules # 觸發(fā)通過計劃任務(wù)(Scheduled pipelines)觸發(fā)的作業(yè)
    
  2. rules 關(guān)鍵字

    rules 關(guān)鍵字是在較新的GitLab 12.3 版本引入的功能,它提供了更靈活和復(fù)雜的條件設(shè)置。通過 rules,你可以設(shè)置一個或多個條件,以及根據(jù)條件來定義作業(yè)是否應(yīng)該執(zhí)行,何時執(zhí)行,以及應(yīng)該如何執(zhí)行。rules 支持更多的條件判斷和更復(fù)雜的邏輯。例如:

    rules:
      - if: '$CI_COMMIT_BRANCH == "main"'
        when: manual
      - exists:
          - file.txt
        when: on_success
    

    在這個例子中,第一個規(guī)則是:只有在 main 分支上時,作業(yè)將需要手動觸發(fā)。第二個規(guī)則是:只有當(dāng)指定的文件 file.txt 存在時,作業(yè)在成功狀態(tài)下才會自動觸發(fā)。

總的來說,only 更簡單,適用于基本的分支、標(biāo)簽和計劃任務(wù)觸發(fā)條件。而 rules 則更靈活,可以進行更復(fù)雜的條件判斷,并且能夠更精細地控制作業(yè)的觸發(fā)和執(zhí)行。如果你的 GitLab 版本支持 rules,那么在編寫配置時可以考慮使用 rules 來獲得更多的控制權(quán)。
而gitlab官方似乎也更推薦于rules,當(dāng)前版本是16.3了。
文檔地址
gitlab-ci only,linux,gitlab,ci/cd,git

對比only和rules寫法

分支-only:

  only:
    refs:
      - main

分支-rules:

  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
      when: on_success

標(biāo)簽-only:

  only:
    - /^dev-.*$/

標(biāo)簽-rules:

  rules:
    - if: '$CI_COMMIT_TAG =~ /^dev-/'
      when: on_success

workflow和rules的應(yīng)用:

雖然這個示例有點復(fù)雜奇怪,但是主要是想用rules和workflow在多個不同環(huán)境下去deploy。
我先只定義一個job就叫test, 然后定義了一下變量COMMIT_REF,TEST_PATH和不同tag下面的ENV。然后下面有echo輸出。意思是會根據(jù)打不同的tag標(biāo)簽就會執(zhí)行相同的job,而path和port不一樣。

variables:
  COMMIT_REF: "$CI_COMMIT_TAG"
  TEST_PATH: "test/ghkg/$ENV/$COMMIT_REF"
workflow:
  rules:
    - if: '$CI_COMMIT_TAG =~ /^dev-/'
      variables:
        ENV: "dev"
        TEST_PATH: "test01/$ENV/$COMMIT_REF"
        SERVER_PORT: "8081"
    - if: '$CI_COMMIT_TAG =~ /^prod-/'
      variables:
        ENV: "prod"
        TEST_PATH: "test02/$ENV/$COMMIT_REF"
        SERVER_PORT: "8082"
stages:
  - test
test:
  stage: test
  tags:
    - shell
  environment:
    name: $ENV
  script:
    - export
    - echo "$ENV"
    - echo "cd $TEST_PATH"
    - echo "java -jar demo.jar  --spring.profiles.active=$ENV  --server.port=$SERVER_PORT"
    - echo "test end" # 以上命令其實根據(jù)根據(jù)環(huán)境不同,變量不同來運行同一個job
  artifacts:
    paths:
      - /*
    expire_in: 1 hour

比如我打個prod-0.0.1標(biāo)簽:
gitlab-ci only,linux,gitlab,ci/cd,git
后面這里還有一種情況:
注意條件請不要改成branch和tag同時判斷:

  rules:
    - if: '$CI_COMMIT_BRANCH == "main" && $CI_COMMIT_TAG =~ /^dev-/'

在 GitLab CI/CD 中,$CI_COMMIT_BRANCH 和 $CI_COMMIT_TAG 是兩個不同的預(yù)定義環(huán)境變量,它們分別用于獲取當(dāng)前提交的分支名和標(biāo)簽信息。這兩個變量在不同的情況下會有不同的取值:

  1. 當(dāng)你在進行提交(push)操作時,CI_COMMIT_BRANCH 可能會有值,表示當(dāng)前提交所在的分支。而此時,CI_COMMIT_TAG 通常為空,因為你沒有創(chuàng)建標(biāo)簽。
  2. 當(dāng)你在創(chuàng)建并推送一個標(biāo)簽時,CI_COMMIT_TAG 可能會有值,表示當(dāng)前提交是一個標(biāo)簽。此時,CI_COMMIT_BRANCH 通常為空,因為標(biāo)簽是在分支上的特定提交上創(chuàng)建的,而不是在分支上。

通常情況下,$CI_COMMIT_BRANCH 和 $CI_COMMIT_TAG 是互斥的,不會同時都有值。這是因為分支和標(biāo)簽是不同的 Git 概念,一個提交要么在分支上,要么是一個標(biāo)簽,而不可能同時既是分支又是標(biāo)簽。

可以用這個例子打印一下看一下:
意思是提交到main會觸發(fā)一次deploy又或者提交一個tag:dev-*也會觸發(fā)deploy,COMMIT_REF變量我先改成了$CI_COMMIT_REF_NAME。

variables:
  COMMIT_REF: "$CI_COMMIT_REF_NAME"
  TEST_PATH: "test/ghkg/$ENV/$COMMIT_REF"
workflow:
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
      variables:
        ENV: "local"
        TEST_PATH: "test00/$ENV/$COMMIT_REF"
        SERVER_PORT: "8080"
    - if: '$CI_COMMIT_TAG =~ /^dev-/'
      variables:
        ENV: "dev"
        TEST_PATH: "test01/$ENV/$COMMIT_REF"
        SERVER_PORT: "8081"
stages:
  - test
test:
  stage: test
  tags:
    - shell
  environment:
    name: $ENV
  script:
    - export
    - echo "$CI_COMMIT_REF_NAME"
    - echo "$CI_COMMIT_TAG"
    - echo "$CI_COMMIT_BRANCH"
    - echo "$ENV"
    - echo "cd $TEST_PATH"
    - echo "java -jar demo.jar  --spring.profiles.active=$ENV  --server.port=$SERVER_PORT"
    - echo "test end" # 以上命令其實根據(jù)根據(jù)環(huán)境不同,變量不同來運行同一個job

gitlab-ci only,linux,gitlab,ci/cd,git
gitlab-ci only,linux,gitlab,ci/cd,git
如果同時滿足兩個條件,是在main分支上打dev-標(biāo)簽,就會觸發(fā)兩次deploy。文章來源地址http://www.zghlxwxcb.cn/news/detail-770233.html

到了這里,關(guān)于Gitlab CI/CD: rules和only的文章就介紹完了。如果您還想了解更多內(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)文章

  • 純手工搭建 GitaLab與Gitlab-CI/CD--附 gitlab-ci.yml示例

    純手工搭建 GitaLab與Gitlab-CI/CD--附 gitlab-ci.yml示例

    作者:javastarboy 背景:前幾年(2018 年前后)的 jenkins+docker+k8s 的CI/CD 在工作之中受益不少。提升了不少工作效率。而隨著這幾年的使用發(fā)現(xiàn),目前 gitlab-CI/CD 在持續(xù)集成部署中更加方便、高效。 尤其是在測試環(huán)節(jié)中,研發(fā)無需編寫復(fù)雜的 jenkins 腳本,只要提交代碼,即可自動

    2023年04月08日
    瀏覽(24)
  • GitLab Runner 實現(xiàn)項目 CI/CD 發(fā)布

    GitLab Runner 實現(xiàn)項目 CI/CD 發(fā)布

    Gitlab實現(xiàn)CICD的方式有很多,比如通過Jenkins,通過Gitlab Runner等,今天主要介紹后者。Gitlab在安裝的時候,就默認包含了Gitlab CI的能力,但是該能力只是用于協(xié)調(diào)作業(yè),并不能真的去執(zhí)行作業(yè),因此需要搭配Gitlab Runner來作為執(zhí)行器實現(xiàn)具體的CICD工作。Gitlab Runner可以被安裝在任

    2024年01月17日
    瀏覽(33)
  • DevOps系列文章之 GitLab CI/CD

    DevOps系列文章之 GitLab CI/CD

    由于目前公司使用的gitlab,大部分項目使用的CICD是gitlab的CICD,少部分用的是jenkins,使用了gitlab-ci一段時間后感覺還不錯,因此總結(jié)一下 介紹gitlab的CICD之前,可以先了解CICD是什么 我們的開發(fā)模式經(jīng)歷了如下的轉(zhuǎn)變:瀑布模型-敏捷開發(fā)→DevOps(Development、Operations的組合詞,是

    2024年01月22日
    瀏覽(62)
  • 使用gitlab 自帶 CI/CD 構(gòu)建部署項目

    使用gitlab 自帶 CI/CD 構(gòu)建部署項目

    這里我用的是橋接模式 橋接模式方便局域網(wǎng)內(nèi)的小伙伴一起使用 如果沒有這個打算可跳過這步 編輯網(wǎng)絡(luò) vi /etc/sysconfig/network-scripts/ifcfg-你的網(wǎng)絡(luò)名稱 修改如下內(nèi)容 這里我有句話要講, 這些信息配置完成后出現(xiàn)\\\"網(wǎng)絡(luò)不可達\\\" 需要把 BOOTPROTO 改為 dhcp 詳情可參考 處理網(wǎng)絡(luò)不可達

    2024年02月12日
    瀏覽(27)
  • CI/CD:GitLab-CI 自動化集成/部署 JAVA微服務(wù)的應(yīng)用合集

    CI/CD:GitLab-CI 自動化集成/部署 JAVA微服務(wù)的應(yīng)用合集

    日常開發(fā)中,每次代碼編寫完成后,都需要手動打包,并且上傳服務(wù)器,無論本地打包的時間或者上傳文件到服務(wù)器都需要花費大量的時間來完成,都是重復(fù)的并且毫無意義,應(yīng)該將時間花費在更有價值的時間上;所以編寫這篇文章,將自己收集、搭建、測試的步驟或經(jīng)驗匯

    2024年02月08日
    瀏覽(24)
  • 【基于 GitLab 的 CI/CD 實踐】03、GitLab Pipeline 實踐(上)

    【基于 GitLab 的 CI/CD 實踐】03、GitLab Pipeline 實踐(上)

    目錄 一、GitLab Pipeline 流水線語法有哪些?流水線參數(shù)列表 如何檢查語法錯誤?流水線語法檢測 二、Pipeline 基礎(chǔ)語法 job script before_script after_script stages 未定義 stages ?定義 stages 控制 stage 運行順序 ? .pre .post stage variables 綜合實例(一) tags allow_failure when manual 手動 delayed 延遲

    2024年02月17日
    瀏覽(31)
  • gitlab+jenkins+harbor實現(xiàn)CI/CD(2)——初級

    gitlab+jenkins+harbor實現(xiàn)CI/CD(2)——初級

    git安裝 jenkins主機上安裝docker-ce 配置倉庫證書 測試 創(chuàng)建項目 創(chuàng)建一個freestyle project 在jenkins主機獲取密鑰 在gitlab上傳公鑰 在jenkins上傳私鑰 輸入測試命令后保存 點擊立即構(gòu)建 查看控制臺輸出 工作路徑 構(gòu)建觸發(fā)器,定時觸發(fā) 安裝插件 gitlab和 Cloudbee docker 配置gitlab 在網(wǎng)絡(luò)設(shè)

    2024年02月09日
    瀏覽(25)
  • docker部署gitlab CI/CD (一)第一篇:部署gitlab及漢化

    docker部署gitlab CI/CD (一)第一篇:部署gitlab及漢化

    網(wǎng)上很多類似教程,但多少有點夾帶私貨,有的竟然拉取的第三方鏡像,而且很多都要修改配置文件,完全不知道是為什么,于是結(jié)合其他人的博客和官方文檔, 知其然也要知其所以然,于2023年4月17日寫下這篇。 官方文檔: https://docs.gitlab.com/ee/install/docker.html 主要參考博客

    2023年04月17日
    瀏覽(33)
  • 【基于 GitLab 的 CI/CD 實踐】02、gitlab-runner 實踐

    【基于 GitLab 的 CI/CD 實踐】02、gitlab-runner 實踐

    目錄 一、gitlab-runner 簡介 1.1 要求 1.2 特點 二、GitLab Runner 安裝 2.1 使用 GItLab 官方倉庫安裝 2.2 使用 deb/rpm 軟件包 2.3 在容器中運行 GitLab Runner 三、GitLab Runner 注冊 3.1 GitLabRunner 類型 3.2 獲取 runner token 獲取?shared?類型 runner token ? ?獲取?group?類型的 runner token ? ?獲取?speci

    2024年02月16日
    瀏覽(22)
  • GitLab CI/CD 新書發(fā)布,助企業(yè)降本增效

    GitLab CI/CD 新書發(fā)布,助企業(yè)降本增效

    大家好,我是CSDN的 拿我格子衫來 , 昨天我的第一本書《GitLab CI/CD 從入門到實戰(zhàn)》上架啦,這是業(yè)內(nèi)第一本詳細講解GitLab CI/CD的書籍。 歷經(jīng)無數(shù)個日夜,最終開花結(jié)果。感觸良多,今天就借這篇文章來談一談這本書的創(chuàng)作。 在正式寫書前,我已經(jīng)寫了很多有關(guān)GitLab CI/CD的文

    2023年04月12日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包