寫在前面
參照文章:https://blog.csdn.net/liuge36/article/details/83055512
之前寫了比較完整的相關,但是發現,工作中只是需要用到以下簡單的點就可以了
總結簡單的自動化部署的項目的方法:
前置:
gitlab:做代碼託管 服務器A 公司服務器
gitlab-ci (Runner): 服務器B 安裝Docker 醫院服務器
01 爲項目註冊一個runner ,這個runner去git倉庫拉取代碼最新下來,做自動部署
開始執行註冊命令:gitlab-ci-multi-runner register
輸入gitlab服務器的地址: http://22.18.12.161:10088/
輸入token:某一個具體項目中》details>settings》ci/cd>runners:找到token碼 xxx
輸入runner的描述:默認或自定義
輸入tags: 比如:test,demo 我輸入的是:tnv2
回車
回車
這個時候,就是會看見succeeded
接下來,需要進行選擇runner執行操作的方式
比如:shell
02 當註冊好的runnner,被觸發了,它該具體做些什麼事情呢?
在HelloWorld》CI/CD》pipelines
通過.gitlab-ci.yml的文件去定義CI的pipelines
要想實現後端自動化部署,主要是通過本地代碼提交到master分支,
master分支變化去觸發CI/CD的自動化作業的執行。
這個自動化的作業其實就是 手寫的 .gitlab-ci.yml 文件的內容
stages:
- deploy
docker-deploy:
stage: deploy
script:
- docker build -t tongnanimagesv2 .
- if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker stop tnbackwebv2;fi
- if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker rm tnbackwebv2;fi
- docker run -d -p 8900:8900 --name tnbackwebv2 tongnanimagesv2
tags:
- tnv2 # tnv2是shell類型的runner
上面的job作業解釋:
# 這句話是使用當前目錄. 下的DockerFile進行image鏡像的構建
docker build -t tongnanimagesv2 .
# 下面的兩句是做 檢測 指定的容器是否在運行狀態,有的話,先停止,再刪除
- if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker stop tnbackwebv2;fi
- if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker rm tnbackwebv2;fi
// 基於上面的語句,似乎可以在構建tongnanimagesv2鏡像之前,先刪除,刪除的條件就是之前如果存在,就刪除;
這裏不確定每次構建是否會覆蓋,如果不是覆蓋,那麼每次都創建,就會很多的鏡像(待驗證)
# 這裏話是運行創建的鏡像爲一個容器
- docker run -d -p 8900:8900 --name tnbackwebv2 tongnanimagesv2
# tags=tnv2 這個是我們在爲項目註冊runner的時候,自定義的名稱(能夠到你的機器上執行shell)
tags:
- tnv2 # tnv2是shell類型的runner
# DockerFile
---------------
from frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD target/test-0.0.1.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
---------------
順便寫一下前端項目自動部署
-
gitlab新建倉庫(或已有倉庫),找到倉庫的token,將其註冊到gitlab-ci-multi-runner register 下去
得到 類型是shell ,名稱叫做tnfrontv2 的tages
-
在項目的本地新建.gitlab-ci.yml 文件
stages:
- deploy
docker-deploy:
stage: deploy
script:
- rm -rf /home/gitlab-runner/tnn/tn
- cp -r ./dist /home/gitlab-runner/tnn/
- mv /home/gitlab-runner/tnn/dist /home/gitlab-runner/tnn/tn
tags:
- tnfrontv2 # demo4是shell類型的runner
這個文件的位置在項目的根目錄下,注意.git倉庫文件也是在這個根目錄下。
上面只是最簡單的自動化部署,需要在本地生成部署包。其實,打包這步操作也是可以在服務器上完成的。但是這裏爲了簡便,本地直接打包上傳。