GitLab CI/CD 之 environment

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
avatar-img
Tim Bai的沙龍
10會員
49內容數
d3.js 圖形
留言
avatar-img
留言分享你的想法!
Tim Bai的沙龍 的其他內容
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke