Gitlab-CI/CD 3

Gitlab-Runner共享服务器使用及配置说明

Gitlab-Runner自动构建服务器搭建1

Gitlab-Runner自动构建服务器搭建2

上面两个地址是搭建私有Gitlab-Runner服务器的说明;这篇文章将向大家介绍gitlab仓库及共享gitlab-runner的ci/cd配置与使用方法。

准备基础镜像

gitlab仓库为每个项目分配有若干个共享gitlab-runner服务器,用户可以免费使用2000分钟的时长。这些共享机器上配有基础的gitlab-runner环境,所以我们只需要将我们项目所依赖的环境准备好即可;这里参照nodejs项目的ci/cd进行讲解。

创建工作目录

创建工作目录/usr/local/docker/sharerunner;

下载node-v12.18.2-linux-x64.tar.xz到/usr/local/docker/sharerunner;

编写基础镜像的Dockerfile文件

1)在/usr/local/docker/sharerunner目录中创建Dockerfile文件;

2)这里选择一个ubuntu:18.04作为项目环境的基础镜像;

3)并将ci/cd所需要的sshpass(免交互远程登录)和openssh-server服务打包进镜像;

4)最后将项目所依赖的node-v12.18.2-linux-x64.tar.xz打包进镜像;

5)配置node和npm的软连接,保证项目正常编译。

FROM ubuntu:18.04
MAINTAINER Andy andywanggogogo@gmail.com

RUN apt-get update

RUN apt-get -y install sshpass

RUN apt-get -y install openssh-server

RUN apt-get clean

WORKDIR /usr/local/

ADD node-v12.18.2-linux-x64.tar.xz .

RUN mv node-v12.18.2-linux-x64 node-v12.18.2

RUN ln -s /usr/local/node-v12.18.2/bin/node /usr/bin/node && \
ln -s /usr/local/node-v12.18.2/bin/npm /usr/bin/npm

WORKDIR /

构建镜像并上传到dockerhub仓库

docker build -t andywanggogogo/gitlab-node:v1 -f Dockerfile .
docker push andywanggogogo/gitlab-node:v1

上传到dockerhub仓库需要提前登录;也可以上传到其他镜像仓库。

编写.gitlab-ci.yml

在项目根目录创建.gitlab-ci.yml文件,编写内容如下;

stages:
  - pre_build
  - build
  - deploy
  
#上面步骤中准备的环境镜像
image: andywanggogogo/gitlab-node:6.0 

before_script:
  - echo "before_script started."
  - echo "end before_script."
# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
  paths:
    - node_modules/
    - dist/
    
#安装项目的依赖包
pre_build:
  stage: pre_build
  script:
    - echo "start pre_build."
    - npm install
    - echo "end pre_build."
  only:
    - master #触发ci/cd的git分支,这里设为master的意思是只有往master分支提交推送时才触发ci/cd。
  tags:
    - gitlab-org #对应于共享服务器的tags
#构建项目
build:
  stage: build
  script:
    - echo "start build."
    - CI=false npm run build
    - echo "end build."
  only:
    - master  
  tags:
    - gitlab-org
//远程部署
deploy_job:
  stage: deploy
  script:
    - echo "start deploy."
    - rm -rf environment
    - mkdir -p environment
    
     #将构建好的项目文件复制到environment文件夹
    - cp -r dist ./environment
    - cp -r assets ./environment
    - cp -r env ./environment
    - cp Dockerfile ./environment
    - cp package.json ./environment
    - cp package-lock.json ./environment
    
    #将该文件夹复制到远程服务器
    - sshpass -p "${BUILD_KEY}" scp -r -o StrictHostKeyChecking=no ./environment root@*.*.*.*:/root/x-service/eRealm/xp-groupbooking-api
    
    #远程执行docker-compose命令容器部署程序
    - sshpass -p "${BUILD_KEY}" ssh root@*.*.*.* "export TAG=$CI_COMMIT_SHORT_SHA;cd /root/x-service/eRealm/xp-groupbooking-api;docker-compose up -d --build"
    
    - echo "end deploy."
  only:
    - master
  tags:
    - gitlab-org

注意tags内容一定要从共享服务器的tags中获取。

将.gitlab-ci.yml文件推送到gitlab项目仓库,到这里gitlab ci/cd的基本环境和配置就准备好了,之后只要往master分支提交推送就会触发ci/cd。

posted @ 2020-08-30 19:27  冷风冷雨  阅读(352)  评论(0编辑  收藏  举报