1. 程式人生 > 實用技巧 >Gitlab-CI/CD

Gitlab-CI/CD

Gitlab-Runner自動構建伺服器搭建1

這裡講到的gitlab倉庫指的是https://gitlab.com/,自建gitlab倉庫也基本相同。

專案的構建打包過程相對比較消耗系統性能,所以gitlab將這部分任務都交給了gitlab-runner來做,因為gitlab-runner可以部署到不同的機器上。這樣在構建的時候就不會影響gitlab伺服器的效能。而gitlab ci僅用來管理專案的構建狀態等輕量工作。

gitlab倉庫提供了兩種Runner自動構建的方案:一種是Specific Runners,另一種是Shared Runners。 在專案的settings/ci_cd頁面中展開Runners可以看到兩個功能區,分別用來設定不同型別的Runners。

Specific Runners——使用指定的構建伺服器進行自動構建任務,通常用於自建Runner伺服器。

Shared Runners——使用gitlab官方提供的共享伺服器進行自動構建任務。

這裡以自建gitlab-runner伺服器為例;

基於Docker構建自定義Gitlab-Runner映象

這裡使用的系統是Ubuntu 14.04.5 LTS 。

準備伺服器環境

首先登入伺服器,確定伺服器已經安裝docker及docker compose。

執行以下命令檢視docker與docker-compose版本資訊:

docker -v
Docker version 18.06.3-ce, build d7080c1

docker-compose -v
docker-compose version 1.26.2, build eefe0d31

建立docker-compose.yml檔案

建立目錄/usr/local/docker/runner,切換當前目錄到runner;在當前目錄中建立config資料夾和docker-compose.yml檔案;config資料夾將會被配置為儲存gitlab-runner配置的資料夾。

使用vim建立docker-compose.yml檔案:

version: "3.3"
services:
  gitlab-runner:
    build: environment
    container_name: gitlab-runner-compose
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

environment指定了構建映象的dockerfile檔案地址,系統會到指定的資料夾中找到Dockerfile(預設名)檔案。

volumes配置了gitlab-runner容器配置檔案在宿主機上的儲存位置。繫結容器的docker.sock目錄到宿主機的對應目錄,這樣容器在執行時就可以使用宿主機的docker service執行docker命令。

建立Dockerfile檔案

官方提供的gitlab-runner映象只是一個純淨的基礎環境,我們需要將專案的依賴環境整合到基礎映象中,下面我們就通過Dockerfile將專案依賴整合到gitlab-runner映象。

在當前目錄建立environment資料夾用於存放依賴檔案,切換到/usr/local/docker/runner/environment目錄下;

執行vim Dockerfile建立檔案:

FROM gitlab/gitlab-runner
MAINTAINER Andy [email protected]

#安裝docker-ce===================
RUN apt-get update -y && apt-get clean
RUN apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)  stable" && \
apt-get update -y && \
apt-get install -y docker-ce
#================================
#切換映象目錄,安裝專案依賴node======
WORKDIR /usr/local/node
RUN wget https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.xz && \
tar xf node-v12.18.2-linux-x64.tar.xz && \
rm -rf node-v12.18.2-linux-x64.tar.xz && \
mv node-v12.18.2-linux-x64 node-v12.18.2 && \
ln -s /usr/local/node/node-v12.18.2/bin/node /usr/bin/node && \
ln -s /usr/local/node/node-v12.18.2/bin/npm /usr/bin/npm
#=================================
WORKDIR /

在Dockerfile檔案中做了三件事:

1)引用gitlab/gitlab-runner作為基礎映象;

2)使用RUN命令安裝docker,安裝命令參考docker官方Install on Ubuntu

3)下載node並解壓,使用ln -s命令配置軟連線,方便全域性訪問node和npm。

注意:這裡安裝的docker只是存在於映象中的一個docker客戶端,用於和宿主機docker service通訊。

構建、執行自定義的gitlab-runner映象

切換到上級目錄/usr/local/docker/runner,執行docker-compose up -d命令,系統會按照docker-compose.yml檔案的配置執行映象構建和執行任務,執行docker-compose ps命令可以檢視剛剛啟動的容器。

到此我們的自定義gitlab-runner映象就構建完成了,這個映象構建成功後可以複用給其他的nodejs專案。下一章我們將專案倉庫註冊到我們的gitlab-runner服務中,編寫.gitlab-ci.yml檔案來管理自動構建任務,實現專案的本地推送自動觸發構建任務功能。