如何利用Gitlab ci持續部署到遠端機器?

2022-01-09 22:19:53 字數 2171 閱讀 7145

長話短說,今天聊一聊使用gitlab-ci 自動部署到遠端伺服器。

如果看過《基於docker-compose的gitlab ci/cd實踐&排坑指南》這篇文章的朋友,會注意到我是在 gitlab-runner伺服器上自動部署的站點,本次我們結合ssh部署到遠端機器(將ci伺服器和部署伺服器分離,避免資源搶占)。

還是那句話,ci/cd實質是將我們手動整合、拷貝部署的方式指令碼化,遠端部署的重要姿勢是要求免密操控

要讓gitlab runner部署到遠端機器,遠端機器必須信任gitlab runner賬戶。

1>. 先執行su gitlab-runner切換到gitlab-runner賬戶

2>. 在你的ci機器(主控端)上使用 ssh-keygen命令建立公鑰,使用ssh-keygen -t rsa來建立,程式會問你存放目錄,如果不需要修改,直接回車幾次即可

3>. 將~/.ssh目錄下id_rsa.pub檔案拷貝到受控機器的~/.ssh目錄中,然後將檔案內容匯入到~/.ssh/authorized_keys檔案

主控方:

scp /home/gitlab-runner/.ssh/id_rsa.pub ****@10.202.42.252:/home/***/.ssh/

受控方:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

4>. 在受控方機器設定許可權:

~/.ssh許可權設定為700;

~/.ssh/authorized_keys許可權設定為600

之後在主控ci機器 就具備免密登陸 遠端機器的能力。

利用映象tag持續部署: gitlab專案只要打出tag--> 執行構建映象job(以此次git tag為映象tag)-->執行部署job,拿到git tag-->部署該tag映象

build_image:front-end:

stage: build_image

script:

- docker build -t $docker_registry_host/eap/eap-front-end:$ci_commit_ref_name .

- docker login $docker_registry_host -u $ci_registry_user -p $ci_registry_password

- docker push $docker_registry_host/eap/eap-front-end:$ci_commit_ref_name

tags:

- my-tag

only:

- tags

deploy:alpha:

stage: deploy

variables:

deploy_path: "/home/eap/website"

script:

- ssh -t ***@10.202.42.252 "cd $deploy_path && export tag=$ci_commit_ref_name && docker-compose pull && docker-compose up -d"

tags:

- my-tag

only:

- tags

上面的黃色背景行描述了 ssh遠端登陸-->切換到部署目錄-->插入本次構建的git tag--->執行容器部署的指令碼寫法。

兩年前,本人也是linux小白,也經歷了[想學][放棄][想學][放棄]...的迴圈。 .netcore 作為新一代開源跨平台框架,面向雲原生而生,容器技術作為雲原生的奠基石,.neter要擁抱容器,擁抱linux。

使用GitLabCI持續整合

使用持續整合應該是乙個軟體開發工程師的自覺。沃茲基.索德 在實際工作中,為了防止當前分支大幅度偏離主幹,開發人員每天都會頻繁地將 整合到主幹。如果不使用持續整合,人工重複進行編譯部署等工作,無疑是低效且易出錯的。所以持續整合的優點顯而易見 1.減少人工編譯部署過程中的低階錯誤 2.縮短開發周期,快速...

使用GitLabCI持續整合

使用持續整合應該是乙個軟體開發工程師的自覺。沃茲基.索德 前言 在實際工作中,為了防止當前分支大幅度偏離主幹,開發人員每天都會頻繁地將 整合到主幹。如果不使用持續整合,人工重複進行編譯部署等工作,無疑是低效且易出錯的。所以持續整合的優點顯而易見 減少人工編譯部署過程中的低階錯誤 縮短開發周期,快速進...

如何利用EDM郵件營銷進行持續推銷

一般來說,乙個電子商務 的轉化率在2 左右是正常的。這也意味著其他98 的潛在客戶並不會購買任何東西,並且可能再也不回來了。這個時候,如何利用edm郵件營銷進行持續推銷呢?首先,edm郵件營銷可以保持與潛在客戶的溝通。當我們把相關的一些優惠券和產品選購知識傳送給使用者的時候,使用者一般會仔細閱讀,進...