在当前DevOps的趋势下,持续集成(CI)和持续部署(CD)使得项目构建和发布更加的快捷频繁可靠,那么如何快速搭建CI/CD流水线就至关重要,本文讲解如何使用Ansible、Docker、GitLab Runner快速打造CI/CD工作流。
GitLab内置的CI/CD工具GitLab Runner
公司使用GitLab来管理代码,GitLab在生态环境上提供gitlab-runner来实现CI/CD。
安装搭建:下载rpm包安装,使用gitlab-runner命令注册到GitLab上,并使用Docker执行器。gitlab-runner start启动gitlab-runner服务。
使用:在项目根目录下,创建文件.gitlab-ci.yml,导入z_qz/cicd/templates/Maven.gitlab-ci.yml:
include:
- project: "z_qz/cicd" # CICD项目
ref: master # 分支
file: /templates/Maven.gitlab-ci.yml # 导入模板文件
z_qz/cicd项目文件结构:
Demo项目以Maven打包为例。
Demo有两个流水线:build和deploy,并引入需要的操作步骤文件:
stages:
- build
- deploy
include:
- local: /java/.before-script.yml
- local: /java/maven_build.yml
- local: /java/deploy.yml
在before-script.yml里声明了一些函数:
.function: &function |
function maven_build() {
echo "maven build"
mvn clean package -U -Dmaven.test.skip=true
}
function gradle_build() {
echo "gradle build"
}
function download_docker_files() {
echo "download Dockerfile"
echo "download entrypoint.sh"
}
function docker_build() {
echo "[start] get docker args"
docker build --build-arg JAR_PATH=${JAR_PATH} --build-arg JAR_FILE=${JAR_FILE} --no-cache -t ${DOCKER_IMAGE} .
docker push ${DOCKER_IMAGE}
echo "[end] done"
}
function download_ansible_roles() {
echo "download site.yml"
echo "download ansible roles.tgz"
}
function notice() {
# 通知
msg="${message:-'太懒了,什么都没留下'}"
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=企业微信机器人' \
-H 'Content-Type: