中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.gitlab-ci.yml語法

發布時間:2020-07-13 17:33:00 來源:網絡 閱讀:880 作者:hellojinni 欄目:系統運維

.gitlab-ci.yml

.gitlab-ci.yml?用來配置?CI?用你的項目中做哪些操作,這個文件位于倉庫的根目錄。

當有新內容?push?到倉庫,或者有代碼合并后,?GitLab?會查找是否有?.gitlab-ci.yml?文件,如果文件存在,?Runners?將會根據該文件的內容開始?build?本次?commit?

.gitlab-ci.yml?使用?YAML?語法, 你需要格外注意縮進格式,要用空格來縮進,不能用?tabs?來縮進。

Stages

Stages?表示構建階段,說白了就是上面提到的流程。默認有3個?stages??build?,?test?,?deploy?。我們可以在一次?Pipeline?中定義多個?Stages?,這些?Stages?會有以下特點:

  1. 所有?Stages?會按照順序運行,即當一個?Stage?完成后,下一個?Stage?才會開始

  2. 只有當所有?Stages?完成后,該構建任務 (Pipeline) 才會成功

  3. 如果任何一個?Stage?失敗,那么后面的?Stages?不會執行,該構建任務 (Pipeline) 失敗

Jobs

Jobs?表示構建工作,表示某個?Stage?里面執行的工作。我們可以在?Stages?里面定義多個?Jobs?,這些 Jobs 會有以下特點:

1、相同?Stage?中的?Jobs?會并行執行

2、相同?Stage?中的?Jobs?都執行成功時,該?Stage?才會成功

3、如果任何一個?Job?失敗,那么該?Stage?失敗,即該構建任務 (Pipeline) 失敗

約束

任務中必須得有?script?部分。

示例

# 定義 stages(階段)。任務將按此順序執行。

stages:

- build

- test

- deploy



# 定義 job(任務)

job1:

? stage: test

? tags:

? - XX #只有標簽為XX的runner才會執行這個任務

? only:

? - dev #只有dev分支提交代碼才會執行這個任務。也可以是分支名稱或觸發器名稱

? - /^future-.*$/ #正則表達式,只有future-開頭的分支才會執行

? script:

? - echo "I am job1"

? - echo "I am in test stage"



# 定義 job

job2:

? stage: test #如果此處沒有定義stage,其默認也是test

? only:

? - master #只有master分支提交代碼才會執行這個任務

? script:

? - echo "I am job2"

? - echo "I am in test stage"

? allow_failure: true #允許失敗,即不影響下步構建



# 定義 job

job3:

? stage: build

? except:

? - dev #除了dev分支,其它分支提交代碼都會執行這個任務

? script:

? - echo "I am job3"

? - echo "I am in build stage"


# 定義 job

.job4: #對于臨時不想執行的job,可以選擇在前面加個".",這樣就會跳過此步任務,否則你除了要注釋掉這個job4外,還需要注釋上面為deploy的stage

? ? stage: deploy

? ? script:

? ? - echo "I am job4"



# 模板,相當于公用函數,有重復任務時很有用

.job_template: &job_definition # 創建一個錨,'job_definition'

? image: ruby:2.1

? services:

? - postgres

? - redis


test1:

? <<: *job_definition # 利用錨'job_definition'來合并

? script:

? - test1 project


test2:

? <<: *job_definition # 利用錨'job_definition'來合并

? script:

? - test2 project



#下面幾個都相當于全局變量,都可以添加到具體job中,這時會被子job的覆蓋


before_script:

- echo "每個job之前都會執行"

- export MVN_HOME

- export JAVA_HOME

- java -version

- sh /home/gitlab-runner/kill.sh

after_script:

- echo "每個job之后都會執行"

variables: #變量

? DATABASE_URL: "postgres://postgres@postgres/my_database" #在job中可以用${DATABASE_URL}來使用這個變量。常用的預定義變量有CI_COMMIT_REF_NAME(項目所在的分支或標簽名稱),CI_JOB_NAME(任務名稱),? ? ? ? ? CI_JOB_STAGE(任務階段)

? GIT_STRATEGY: "none" #GIT策略,定義拉取代碼的方式,有3種:clone/fetch/none,默認為clone,速度最慢,每步job都會重新clone一次代碼。我們一般將它設置為none,在具體任務里設置為fetch就可以滿足需求,畢竟不是每步都需要新代碼,那也不符合我們測試的流程



cache: #緩存

? #因為緩存為不同管道和任務間共享,可能會覆蓋,所以有時需要設置key

? key: ${CI_COMMIT_REF_NAME} # 啟用每分支緩存。

? #key: "$CI_JOB_NAME/$CI_COMMIT_REF_NAME" # 啟用每個任務和每個分支緩存。需要注意的是,如果是在windows中運行這個腳本,需要把$換成%

? untracked: true #緩存所有Git未跟蹤的文件

? paths: #以下2個文件夾會被緩存起來,下次構建會解壓出來

? - node_modules/

? - dist/

跳過job

如果你的?commit?信息包涵?[ci skip]?或者?[skip ci]?,不論大小寫,這個?commit?將會被創建,但是?job?會被跳過


版本回滾


stages:

-? build

-? deploy


build_job:

? stage: build

? tags:?

? - test1

? script:

? - echo "this is a test !"


dev_job:

? stage: deploy

? tags:?

? - test1

? environment:?

? ? name: v2

? ??url:? http://www.test.com

? script:

? - echo "this is a deploy !"

environment: 是配置在deploy這個stage里面的,用于后面Environments可以做版本回滾。

紅色部分是URL,回滾的時候點擊即可直接跳轉到指定位置。

.gitlab-ci.yml語法

手動執行部署

stages:

-? build

-? deploy

build_job:

? stage: build

? tags:?

? - test1

? script:

? - echo "this is a test !"

dev_job:

? stage: deploy

? tags:?

? - test1

? environment:?

? ? name: v2

? ??url:??www.baidu.com

? script:

? - echo "this is a deploy !"

? when: always #不管前面幾步成功與否,永遠會執行這一步。它有幾個值:on_success (默認值)\on_failure\always\manual(手動執行)

每次提交代碼就會自動觸發構建并自動發布,production的構建發布需要手動點擊按鈕,這個是when: manual實現的。

when?用于實現在出現故障或運行失敗時運行的作業。

when?可以設置為以下值之一:

on_success?- 只有當前一個階段的所有工作成功時才執行工作。這是默認值。

on_failure?- 僅當前一個階段的至少一個作業發生故障時才執行作業。

always?- 無論前一階段的工作狀況如何,繼續執行工作。

manual?- 手動執行作業(在GitLab 8.10中添加)

Docker Executor

所有jobs的執行環境為指定的docker image所生成的container,每個job都會生成一個container并且在job結束后立即銷毀。

Pull policies

當你使用docker 或 docker+machine executors時,你可以通過設置pull_policy來決定Runner如何pull docker image。pull_policy有三種值:

always —— Runner始終從遠程pull docker image。

if-not-present —— Runner會首先檢查本地是否有該image,如果有則用本地的,如果沒有則從遠程拉取。

never —— Runner始終使用本地的image。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江都市| 天长市| 莱西市| 台南市| 郁南县| 礼泉县| 视频| 馆陶县| 板桥市| 德格县| 商水县| 临江市| 武威市| 抚州市| 航空| 娄底市| 乌兰察布市| 驻马店市| 南宫市| 大荔县| 昆山市| 钦州市| 仁怀市| 新乐市| 静乐县| 遂昌县| 龙泉市| 确山县| 嵊州市| 潜山县| 乌拉特后旗| 沂南县| 厦门市| 调兵山市| 宿迁市| 无为县| 交口县| 孟村| 清镇市| 五大连池市| 锡林郭勒盟|