長話短說,今天聊一聊使用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郵件營銷可以保持與潛在客戶的溝通。當我們把相關的一些優惠券和產品選購知識傳送給使用者的時候,使用者一般會仔細閱讀,進...