局域网gitlab + maven + docker自动化测试部署实现
局域网内基于gitlab流水线实现自动打包运行流程, 具体分为:
- gitlab-runner安装
- 项目配置
前置环境
- 服务器:
CentOS 7.6
- gitlab:
GitLab 社区版 11.11.0 中文
- maven版本:
apache-maven-3.8.2
- docker版本:
docker ce 20.10.8
gitlab-runner安装
- 下载gitlab对应版本的gitlab-runner程序
wget http://s3.amazonaws.com/gitlab-runner-downloads/v11.11.0/binaries/gitlab-runner-linux-386
- 安装
cp gitlab-runner /usr/local/bin/gitlab-runner
chmod +x /usr/local/bin/gitlab-runner
gitlab-runner install --user=root --working-directory=/home/gitlab-runner
本地服务器建议使用root
用户运行, 或者将工作目录, maven home
目录添加到指定用户组内
3. 运行
gitlab-runner start
4. 注册
gitlab-runner register
第一个输入gitlab里的地址
第二个输入gitlab里的token
第三个输入runner的描述
第四个输入runner的标识, 用于ci文件指定runner,可以逗号分隔
完成后gitlab内会看到对应的runner
项目配置
项目下新建.gitlab-ci.yml
文件
stages:
# 作业说明
- deploy
deploy:
stage: deploy
script:
# maven 自动打包
- mvn clean package -Dmaven.test.skip=true
# 创建docker镜像
- docker build -t testproj .
# 查看项目运行并自动关闭
- if [ $(docker ps -aq --filter name=testproj) ]; then docker rm -f testproj;fi
# 以及8835端口运行项目
- docker run -d -p 8835:8835 --name testproj xyschool-k12-uuid
tags:
# runner的标识
- dev
only:
# 出发作业的分支
- feature/testcicd
项目下创建 Dockerfile
文件
FROM openjdk:8-jdk-alpine
MAINTAINER xu81 "xu81@xu81.com
VOLUME /tmp
COPY target/*.jar app.jar
EXPOSE 8835
ENTRYPOINT ["java", "-jar", "/app.jar"]
运行测试
向指定feature/testcicd
分支提交内容后, 在项目gitlab页面的CI/CD-作业页面下可以看到相应的作业正在运行, 点击后可查看运行日志