更新於 2024/12/15閱讀時間約 3 分鐘

GitLab CI/CD 之 extends 繼承使用

raw-image

前言

上次教到如何使用 scp 與 CI/CD 配合複製檔案至伺服器,今天我們要來教 CI/CD 中的 extends 指令,extends 在有些程式語言叫做繼承的意思,那在 CI/CD 中,叫做繼承工作的意思,妳也可以把它當成,CI/CD 也可以繼承工作,幫助我們在撰寫 CI/CD 腳本更加省事

extends 作用

extends 是用來幫助我的在寫 CI/CD 工作時,可以繼承工作屬性,讓我們在撰寫 CI/CD 時更加省事又有效率,總不可能當有相同工作時,一直寫重複工作,這樣雖然可以用,但是會不好閱讀 CI/CD 工作腳本,看完 extends 這個功能是不是覺得很方便呢 ?

extends 定義規則

extends 定義也是先定義工作名稱,只不過在工作最前面要加 dot 符號,在繼承工作的地方加上 extends,並寫上繼承工作名稱,請看以下範例

stages:
- deploy

.deploy:
tags:
- shell
script:
- echo 'deploy server'

deploy-to-development:
stage: deploy
tags:
- shell
extends: .deploy

練習時間

接下來我們來練習 extends 這個指令,我們去模擬佈署時要先複製檔案到伺服器上,並用繼承的方式,處理同一個類似的工作

image: mcr.microsoft.com/dotnet/sdk:6.0

stages:
- deploy

.deploy:
tags:
- shell
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SERVER_PRIVATE_KEY")
script:
- ssh -o StrictHostKeyChecking=no $SERVER_USER_NAME@$SERVER_URL "
mkdir -p ~/DotNetCoreWebApiCiAndCdCourse"
- scp -o StrictHostKeyChecking=no ./docker-compose.yml $SERVER_USER_NAME@$SERVER_URL:~/DotNetCoreWebApiCiAndCdCourse

deploy-to-development:
stage: deploy
tags:
- shell
extends: .deploy

deploy-to-staging:
stage: deploy
tags:
- shell
extends: .deploy
needs:
- deploy-to-development

在這裡可以看到我們的 deploy-to-development 這個 CI/CD 工作運作成功

同時看到 deploy-to-staging 這個 CI/CD 工作也運作成功

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.