GitLab CI/CD 之 environment

閱讀時間約 7 分鐘
raw-image

前言

上次我們做了一次使用 Docker、Docker Compose 與 Gitlab CI/CD 做一次自動化佈署上線,今天我們要來再來教一個 Gitlab CI/CD 中的 environment 這個 script 怎麼使用

environment 作用

environment 是可以讓我們定義我們佈署的環境有哪些,定義好環境後 Gitlab 讓的 UI 會儲存你定義的環境,讓我們可以更方便去連線我們的主機,如下圖按下 Operate -> Environments,這裡就可以讓我們新增環境,但是一個一個新增不會覺得很不方便呢 ? 我們今天用 CI/CD 腳本方式,讓他可以自動新增這些環境,是不是很方便呢 ?

raw-image

environment 定義

environment 在我們的工作去定義環境,可以看到以下範例,我們寫進 environment 去定義我們的環境,name 是定義我們環境名稱,url 也就是我們連線網址

deploy-to-development:
stage: deploy
environment:
name: example service name
url: https://www.example.com.tw

練習時間

接下來我們來開始撰寫 CI/CD,讓我們的環境可以自動定義好,不須再而外改來改去,我們使用上次的腳本稍微加個東西

在這裡我們在 .deploy 這個繼承工作,加了一個 SERVICE_NAME 這個 variables,用來準備定義環境名稱,並且加上 environment 這個 script,用來準備定義每個環境,每個 deploy 類的工作也跟著使用 SERVICE_NAME 這個變數定義環境名稱

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

stages:
- deploy

.deploy:
tags:
- shell
variables:
SERVER_NAME: ""
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"
environment:
name: $SERVER_NAME
url: http://$SERVER_URL:$SERVER_PORT

deploy-to-development:
stage: deploy
tags:
- shell
variables:
SERVER_NAME: DotNetCoreWebApiCiAndCdCourse development environment
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_NAME: DotNetCoreWebApiCiAndCdCourse staging environment
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_NAME: DotNetCoreWebApiCiAndCdCourse production environment
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 工作上傳上去,可以看到以下工作都成功完成

raw-image

回到我們環境,這裡可以看到我們的所有環境的連結都自動新增上去,每個環境都可以點 Open 按鈕,即可開啟我們目標主機連結

raw-image
10會員
49內容數
d3.js 圖形
留言0
查看全部
發表第一個留言支持創作者!
Tim Bai的沙龍 的其他內容
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
前言 大家好上次我們教了 Gitlab CI/CD 的 extends 如何使用,今天我們要來實際做一個真正佈署上線我們的服務,我們會分成兩個章節,第一部分先教大家怎麼寫 Docker Compose 佈署計畫書,第二部分教大家撰寫 CI/CD 自動化佈署流程計劃書 什麼是 Docker Com
前言 上次教到如何使用 scp 與 CI/CD 配合複製檔案至伺服器,今天我們要來教 CI/CD 中的 extends 指令,extends 在有些程式語言叫做繼承的意思,那在 CI/CD 中,叫做繼承工作的意思,妳也可以把它當成,CI/CD 也可以繼承工作,幫助我們在撰寫 CI/CD 腳本更加省
前言 大家好上次教 Gitlab CI/CD 如何撰寫 CI/CD 腳本,使用 ssh 自動連線目標主機,很受到大家關注,在這裡先跟大家說一聲謝謝,以後會繼續做有意義的文章給各位,今天要教大家如何使用 scp 這個使令,將我們的檔案複製到目標主機,並進行佈署動作,我們之後會使用 Docker Co
前言 上次我們教到完了怎麼在 Gitlab CI/CD 怎麼自動打包 Docker Image 並自動上傳到 Docker Hub 以及如何將 Docker Image 做版號,今天我們來教 Gitlab CI/CD 其中之一很重要的是自動 ssh 連線,因為往後我們會透過 Gitlab 伺服器使
前言 上次我們教到如何使用 Gitlab CI/CD 自動打包 Docker Image,並自動上傳 Docker Image 到 Docker Hub 存放我們的 Image,今天我們要再做一件事情,也就是當我們上傳 Image 時,除的上傳自動最新 Image,還要自動掛載版號 jq 工具使
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
前言 大家好上次我們教了 Gitlab CI/CD 的 extends 如何使用,今天我們要來實際做一個真正佈署上線我們的服務,我們會分成兩個章節,第一部分先教大家怎麼寫 Docker Compose 佈署計畫書,第二部分教大家撰寫 CI/CD 自動化佈署流程計劃書 什麼是 Docker Com
前言 上次教到如何使用 scp 與 CI/CD 配合複製檔案至伺服器,今天我們要來教 CI/CD 中的 extends 指令,extends 在有些程式語言叫做繼承的意思,那在 CI/CD 中,叫做繼承工作的意思,妳也可以把它當成,CI/CD 也可以繼承工作,幫助我們在撰寫 CI/CD 腳本更加省
前言 大家好上次教 Gitlab CI/CD 如何撰寫 CI/CD 腳本,使用 ssh 自動連線目標主機,很受到大家關注,在這裡先跟大家說一聲謝謝,以後會繼續做有意義的文章給各位,今天要教大家如何使用 scp 這個使令,將我們的檔案複製到目標主機,並進行佈署動作,我們之後會使用 Docker Co
前言 上次我們教到完了怎麼在 Gitlab CI/CD 怎麼自動打包 Docker Image 並自動上傳到 Docker Hub 以及如何將 Docker Image 做版號,今天我們來教 Gitlab CI/CD 其中之一很重要的是自動 ssh 連線,因為往後我們會透過 Gitlab 伺服器使
前言 上次我們教到如何使用 Gitlab CI/CD 自動打包 Docker Image,並自動上傳 Docker Image 到 Docker Hub 存放我們的 Image,今天我們要再做一件事情,也就是當我們上傳 Image 時,除的上傳自動最新 Image,還要自動掛載版號 jq 工具使
你可能也想看
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
Thumbnail
GitLab 是一個強大的程式碼託管和協作平台,而 GitLab Runner 是一個用於執行自動化測試和部署的工具。透過 Docker,您可以輕鬆新增 GitLab Runner 到您的環境中,提供更快速、可擴展的開發流程。以下就示範利用Docker新增GitLab Runner
Thumbnail
在 Docker 上自建 GitLab Server 是一種方便且有效的方式來託管和管理您的程式碼。使用 Docker,您可以快速建立一個 GitLab 伺服器並且輕鬆進行配置和擴展。
Thumbnail
GitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
Thumbnail
第二季度非公認會計原則每股收益為 -0.15美元,高於預期 0.08 美元。 收入 1.01 億美元(同比增長 73.8%)超過 660 萬美元。 非美國通用會計準則營業利潤率為 -27%。
Thumbnail
GitLab有分為CE(社區版)與EE(企業收費版)兩個版本,差別在EE有多出一些額外功能需要收費,EE的免費功能其實跟GitLab CE一樣,因此可以直接架設 GitLab EE,也許以後會想用收費功能也說不定。 1. 抓取gitlab image: $ docker pull gitlab/gi
Thumbnail
作家 Morgan Housel 在《華爾街日報》中提出一個觀點:我們是用理解知識的方式在思考、學習金錢觀,而不是用理解心智與行為模式的方式學習理財。這段話讓我意識到,我們的財務決策並非總是理性的,情緒因素也扮演著重要角色。通過掌握金錢心理學,能夠幫助我們改善用錢習慣,使財務決策更為理性和長遠。
Thumbnail
本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
Thumbnail
GitLab 是一個強大的程式碼託管和協作平台,而 GitLab Runner 是一個用於執行自動化測試和部署的工具。透過 Docker,您可以輕鬆新增 GitLab Runner 到您的環境中,提供更快速、可擴展的開發流程。以下就示範利用Docker新增GitLab Runner
Thumbnail
在 Docker 上自建 GitLab Server 是一種方便且有效的方式來託管和管理您的程式碼。使用 Docker,您可以快速建立一個 GitLab 伺服器並且輕鬆進行配置和擴展。
Thumbnail
GitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
Thumbnail
第二季度非公認會計原則每股收益為 -0.15美元,高於預期 0.08 美元。 收入 1.01 億美元(同比增長 73.8%)超過 660 萬美元。 非美國通用會計準則營業利潤率為 -27%。
Thumbnail
GitLab有分為CE(社區版)與EE(企業收費版)兩個版本,差別在EE有多出一些額外功能需要收費,EE的免費功能其實跟GitLab CE一樣,因此可以直接架設 GitLab EE,也許以後會想用收費功能也說不定。 1. 抓取gitlab image: $ docker pull gitlab/gi