Gitlab-CI/CD 3
Gitlab-Runner共享服务器使用及配置说明
上面两个地址是搭建私有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。