準備好docker伺服器
現在用它有點上癮,裝啥元件直接用映象,不用自己下載各種依賴包,依賴庫,賊爽!docker就是幹這的,將你從繁瑣的環境搭建和問題中解脫出來,專心於架構和業務!
準備好harbor私有映象倉庫下載harbor離線安裝包,解壓後有docker-compose.yml,直接用docker-compose安裝,不要不要的。
安裝gitlabdocker run gitlab-ce社群版。配置略過......記得把gitlab配置和data目錄對映到宿主機目錄,避免因為容器重啟或銷燬導致資料丟失。
新建前後端專案重點來了,透過Gitlab-runner執行專案CI/CD,自動編譯,自動構建,自動測試,自動部署,一條龍服務gitlab有自己的cicd元件gitlab-runner,沒有咋辦,docker run gitlab-runner即可。
Gitlab-runner與專案相關,需要在專案根路徑編寫指令碼檔案.gitlab-ci.yml。
可以在專案頁面->設定->CICD->runner,獲取runner註冊時需要的token和gitlab-url。
然後docker exec -it <runner容器id> gitlab-runner register註冊當前專案,主要關注tags和runner執行方式。Tags可以並行運行同一專案同一tag對應的任務,怎麼並行呢?假如你針對同一tag設定了多個gitlab-runner執行器。
Runner可以選擇shell或docker等執行。
一個.gitlab-ci.yml中可以透過tag來實現多個runner配合實現一整套devops流程,如編譯用docker,部署用shell等。
gitlab-runner註冊用到的引數
docker exec -it gitlab-runner gitlab-runner register# 輸入 GitLab 地址Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):http://xxxx:8001/# 輸入 GitLab TokenPlease enter the gitlab-ci token for this runner:1Lxq_f1NRfCfeNbE5WRh# 輸入 Runner 的說明Please enter the gitlab-ci description for this runner:可以為空# 設定 Tag,可以用於指定在構建規定的 tag 時觸發 ciPlease enter the gitlab-ci tags for this runner (comma separated):deploy# 這裡選擇 true ,可以用於程式碼上傳後直接執行Whether to run untagged builds [true/false]:true# 這裡選擇 false,可以直接回車,預設為 falseWhether to lock Runner to current project [true/false]:false# 選擇 runner 執行器,這裡我們選擇的是 shellPlease enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:shell
java後端專案構建指令碼編譯映象用到了docker in docker容器,需要新註冊一個gitlab-runner,基礎映象為docker。
當然專案中得增加Dockerfile用來生成映象。
#編譯映象,用當前路徑下的Dockerfiledocker build -t app:20210204 ./ #重新命名映象docker tag app:20210204 192.168.0.1:8011/app:20210204#推送映象到私有倉庫harbor中docker push 192.168.0.1:8011/my/app:20210204
樣例:.gitlab-ci.yml #基礎映象包括maven和jdk8image: maven:3-jdk-8before_script: - echo "開始打包"test: stage: test script: - env - ls -l /usr/share/maven/conf#開始編譯專案 - mvn clean installtags: - dev
程式碼提交後,自動觸發構建過程,全過程透明可見!
流水線
單步任務執行情況
vue前端專案自動構建指令碼#如果是內網的話,需要設定外網代理地址- cnpm config set proxy http://test:test@xxxx:808- cnpm config set https-proxy http://test:test@xxxx:808#設定npm國內代理,加快構建速度- cnpm config set registry https://registry.npm.taobao.org -g- cnpm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g- cnpm install#cache指令將之前下載的node_modules快取起來,加快vue專案構建速度#構件物多階段共享機制:#可以透過artifacts指令,將構建過程中的資料夾上傳到gitlab伺服器,方便各步驟之間共享檔案
快取和構件物
高階話題,Docker與shell混合執行構建和部署Gitlab-runner執行時會有一個gitlab-runner使用者來執行任務,所以設定ssh時需要,
su – gitlab-runner,然後生成sshkey。
可以定義兩個runner,一個執行到docker中進行編譯打包,一個執行到shell中,進行部署,需要提前配置ssh免密登陸或者ssh_key,以便自動登入到遠端主機進行後續操作。
Gitlab-runner併發數設定~/gitlab-runner/config/config.toml
#併發數設定
concurrent = 2
至此,gitlab中CI/CD流程已經建立起來。
專案增加webhook,推送釘釘群訊息,自動獲取專案動態訊息釘釘機器人太好用了
釘釘機器人配置可見上篇文章