Gitlab CI/CD 之 自動化佈署,製作自動化上線計畫書

閱讀時間約 7 分鐘
raw-image

前言

大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感

調整 CI/CD 變數

首先我們先稍微調整 CI/CD 的變數,在這裡讓我稍微偷懶一下,我們 development 主機、staging 主機及 production 主機,所使用的變數都先用 DEV 開頭,因為我們主機只有一台,如果各位有想再開而外變數練習,也是可以的

raw-image

撰寫 CI/CD 腳本

接下來我們開始撰寫 CI/CD 自動化佈署計畫書

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

stages:
- deploy

.deploy:
tags:
- shell
variables:
SERVER_PRIVATE_KEY: ""
SERVER_USER_NAME: ""
SERVER_URL: ""
SERVER_PORT: ""
SERVER_ENV: ""
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SERVER_PRIVATE_KEY")
- echo $DOCKER_REGISTRY_PASSWORD | docker login -u $DOCKER_REGISTRY_USERNAME --password-stdin
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
- ssh -o StrictHostKeyChecking=no $SERVER_USER_NAME@$SERVER_URL "
export COMPOSE_PROJECT_NAME=$SERVER_ENV
export SERVER_ENV=$SERVER_ENV
export SERVER_PORT=$SERVER_PORT

cd ~/DotNetCoreWebApiCiAndCdCourse &&
docker compose up --build -d"

deploy-to-development:
stage: deploy
tags:
- shell
variables:
SERVER_PRIVATE_KEY: $DEV_SERVER_PRIVATE_KEY
SERVER_USER_NAME: $DEV_SERVER_USER_NAME
SERVER_URL: $DEV_SERVER_URL
SERVER_PORT: 8080
SERVER_ENV: development
extends: .deploy

deploy-to-staging:
stage: deploy
tags:
- shell
variables:
SERVER_PRIVATE_KEY: $DEV_SERVER_PRIVATE_KEY
SERVER_USER_NAME: $DEV_SERVER_USER_NAME
SERVER_URL: $DEV_SERVER_URL
SERVER_PORT: 8081
SERVER_ENV: staging
extends: .deploy
needs:
- deploy-to-development

deploy-to-production:
stage: deploy
tags:
- shell
variables:
SERVER_PRIVATE_KEY: $DEV_SERVER_PRIVATE_KEY
SERVER_USER_NAME: $DEV_SERVER_USER_NAME
SERVER_URL: $DEV_SERVER_URL
SERVER_PORT: 80
SERVER_ENV: production
extends: .deploy
needs:
- deploy-to-staging

檢查 CI/CD 自動上線狀況

接下來我們將我們寫好的自動化佈署計畫書,將他上板上去 Giblab,讓他運行 CI/CD,在下面 ‘deploy-to-development’ 這個 Job 運行成功

raw-image

繼續往下看到 ‘deploy-to-staging’ 這個 Job 也成功運行

raw-image

在最後我們看到 ‘deploy-to-production’ 這個 Job 也成功運行

raw-image

檢查 Docker 運作

我們連去伺服器,檢查 Docker 運作狀況,輸入以下指令

dockerr ps -a

可以看到 Docker 所起的 Container 上線都沒有問題

raw-image

檢查後端連線狀態

輸入後端 Api 網址,查看 8080 port,可以看到 Api 運作正常

raw-image

再來查看 8081 port,也可以看到 Api 運作正常

raw-image

最後查看正式機 80 port,可看見 Api 也運作正常

raw-image

最後補充

最後我們來補充講解一些變數,可以看到我 CI/CD 的 .devploy 這個繼承 Job,裡面有開了一些 export 的變數

SERVER_ENV: 我想各位應該都懂,也就是 Server 環境定義

SERVER_PORT: 我想各位應該都懂,也就是 Server 連接埠定義

COMPOSE_PROJECT_NAME: 我想這個各位應該不太懂這個在做甚麼的,這個是 Docker 自有的環境變數,他的功能是依據專案,取幫你起一個 Container Name,由於我們不想有衝突,所以我們必須在每個階段,設定不同的名稱,這樣才不會有衝突

    10會員
    49內容數
    d3.js 圖形
    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
    Thumbnail
    2024-06-21
    93
    [GitLab] #3 專案新增 GitLab-ci.yml並且實現CI本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
    Thumbnail
    2023-09-15
    0
    [GitLab] #2 使用Docker新增GitLab RunnerGitLab 是一個強大的程式碼託管和協作平台,而 GitLab Runner 是一個用於執行自動化測試和部署的工具。透過 Docker,您可以輕鬆新增 GitLab Runner 到您的環境中,提供更快速、可擴展的開發流程。以下就示範利用Docker新增GitLab Runner
    Thumbnail
    2023-09-12
    5
    [GitLab] #1 使用Docker自建GitLab Server在 Docker 上自建 GitLab Server 是一種方便且有效的方式來託管和管理您的程式碼。使用 Docker,您可以快速建立一個 GitLab 伺服器並且輕鬆進行配置和擴展。
    Thumbnail
    2023-09-08
    5
    使用Docker安裝GitLabGitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
    Thumbnail
    2023-05-19
    4
    Centos 7 安裝gitlab安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
    2023-04-24
    0
    你應該注意Gitlab的多空想法🦊第二季度非公認會計原則每股收益為 -0.15美元,高於預期 0.08 美元。 收入 1.01 億美元(同比增長 73.8%)超過 660 萬美元。 非美國通用會計準則營業利潤率為 -27%。
    Thumbnail
    2022-09-19
    4
    CentOS 7 使用 Docker 架設 GitLabGitLab有分為CE(社區版)與EE(企業收費版)兩個版本,差別在EE有多出一些額外功能需要收費,EE的免費功能其實跟GitLab CE一樣,因此可以直接架設 GitLab EE,也許以後會想用收費功能也說不定。 1. 抓取gitlab image: $ docker pull gitlab/gi
    Thumbnail
    2020-11-26
    3
    迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
    Thumbnail
    2024-06-21
    93
    [GitLab] #3 專案新增 GitLab-ci.yml並且實現CI本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
    Thumbnail
    2023-09-15
    0
    [GitLab] #2 使用Docker新增GitLab RunnerGitLab 是一個強大的程式碼託管和協作平台,而 GitLab Runner 是一個用於執行自動化測試和部署的工具。透過 Docker,您可以輕鬆新增 GitLab Runner 到您的環境中,提供更快速、可擴展的開發流程。以下就示範利用Docker新增GitLab Runner
    Thumbnail
    2023-09-12
    5
    [GitLab] #1 使用Docker自建GitLab Server在 Docker 上自建 GitLab Server 是一種方便且有效的方式來託管和管理您的程式碼。使用 Docker,您可以快速建立一個 GitLab 伺服器並且輕鬆進行配置和擴展。
    Thumbnail
    2023-09-08
    5
    使用Docker安裝GitLabGitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
    Thumbnail
    2023-05-19
    4
    Centos 7 安裝gitlab安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
    2023-04-24
    0
    你應該注意Gitlab的多空想法🦊第二季度非公認會計原則每股收益為 -0.15美元,高於預期 0.08 美元。 收入 1.01 億美元(同比增長 73.8%)超過 660 萬美元。 非美國通用會計準則營業利潤率為 -27%。
    Thumbnail
    2022-09-19
    4
    CentOS 7 使用 Docker 架設 GitLabGitLab有分為CE(社區版)與EE(企業收費版)兩個版本,差別在EE有多出一些額外功能需要收費,EE的免費功能其實跟GitLab CE一樣,因此可以直接架設 GitLab EE,也許以後會想用收費功能也說不定。 1. 抓取gitlab image: $ docker pull gitlab/gi
    Thumbnail
    2020-11-26
    3