找到相關有兩個方法,參照這篇文章:如何让多个 gitlab-runner 运行同一个 tag 的 job_已解决_博问_博客园
目前沒有環境測試,看是觸發只會跑一個tag的Runner。看資料整理出來修改設定,以下試試看。
extends(兩台主機,安裝Runner,tag設定不同)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| stages: - deploy-prod-main - deploy-prod-sub
.deploy-prod: msbuild: stage: build only: - main script: - echo "Stop IIS Pool" - $state = (Get-WebAppPoolState -Name MobileAttendanceBackend).Value - if($state -Like "Start*") {Stop-WebAppPool -Name MobileAttendanceBackend} - echo "Nuget restore" - C:\MobileAttendance\Deploy\nuget.exe restore - echo "Copy web.config" - xcopy C:\MobileAttendance\Deploy\web.config C:\MobileAttendance\Backend\ /y - echo "MSBuild" - '& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64\msbuild.exe" mobile-attendance-api.sln /p:platform="any cpu" /p:configuration="release" /t:mobile-attendance-api /p:OutDir=C:\MobileAttendance\Backend' - echo "Start IIS Pool" - C:\Windows\System32\inetsrv\appcmd start apppool /apppool.name:MobileAttendanceBackend
deploy-prod-main: extends: .deploy-prod tags: - prod-main
deploy-prod-sub: extends: .deploy-prod tags: - prod-sub
last-job: stage: .post tags: - "MobileAttendanceVM" only: - main script: - echo "All Stages Finished."
|
這邊兩台主機設定不一樣tag,一台prod-main
另一台prod-sub
parallel(兩台主機安裝Runner,tag設定相同)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| stages: - build
msbuild: stage: build tags: - "MobileAttendanceVM" only: - main script: - echo "Stop IIS Pool" - $state = (Get-WebAppPoolState -Name MobileAttendanceBackend).Value - if($state -Like "Start*") {Stop-WebAppPool -Name MobileAttendanceBackend} - echo "Nuget restore" - C:\MobileAttendance\Deploy\nuget.exe restore - echo "Copy web.config" - xcopy C:\MobileAttendance\Deploy\web.config C:\MobileAttendance\Backend\ /y - echo "MSBuild" - '& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64\msbuild.exe" mobile-attendance-api.sln /p:platform="any cpu" /p:configuration="release" /t:mobile-attendance-api /p:OutDir=C:\MobileAttendance\Backend' - echo "Start IIS Pool" - C:\Windows\System32\inetsrv\appcmd start apppool /apppool.name:MobileAttendanceBackend variables: DEPLOY_RUNNER: ${DEPLOY_RUNNER} parallel: matrix: - DEPLOY_RUNNER: [server1, server2]
last-job: stage: .post tags: - "MobileAttendanceVM" only: - main script: - echo "All Stages Finished."
|
兩台主機Runner設定相同Tag,如:MobileAttendanceVM
。DEPLOY_RUNNER
看說明是隨意打兩個名稱(不用對照名字),這邊寫幾個就會執行幾個Runner。
其他相關文章
使用 Gitlab CI/CD 实现自动化发布站点到 IIS - Wigor - 博客园
超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS_mb607022e25a607的技术博客_51CTO博客
How to setup Continuous Integration/Deployment with GitLab for ASP NET Core application
How To Set Up a Continuous Deployment Pipeline with GitLab CI/CD on Ubuntu 18.04 | DigitalOcean
如何让多个 gitlab-runner 运行同一个 tag 的 job_已解决_博问_博客园
Gitlab CI/CD 介紹與 Runner 的架設. 此篇參考[DevOps] Gitlab CI/CD 及 GitLab 的… | by Kiwi lee | Medium