GitLab CI/CD 之 extends 繼承使用

前言

上次教到如何使用 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 工作也運作成功

留言

此網誌的熱門文章

Docker 之如何安裝 Docker 容器

Gitlab CI/CD 之 Group Runner

Gitlab CI/CD 認識 Pipeline Job