局域网内基于gitlab流水线实现自动打包运行流程, 具体分为:

  1. gitlab-runner安装
  2. 项目配置

前置环境

  • 服务器: CentOS 7.6
  • gitlab: GitLab 社区版 11.11.0 中文
  • maven版本: apache-maven-3.8.2
  • docker版本: docker ce 20.10.8

gitlab-runner安装

  1. 下载gitlab对应版本的gitlab-runner程序 wget http://s3.amazonaws.com/gitlab-runner-downloads/v11.11.0/binaries/gitlab-runner-linux-386
  2. 安装
Lang: shell
1cp gitlab-runner /usr/local/bin/gitlab-runner
2chmod +x /usr/local/bin/gitlab-runner
3gitlab-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文件

Lang: yaml
 1stages:
 2  # 作业说明
 3  - deploy
 4deploy:
 5  stage: deploy
 6  script:
 7    # maven 自动打包
 8    - mvn clean package -Dmaven.test.skip=true
 9    # 创建docker镜像
10    - docker build -t testproj .
11    # 查看项目运行并自动关闭
12    - if [ $(docker ps -aq --filter name=testproj) ]; then docker rm -f testproj;fi
13    # 以及8835端口运行项目
14    - docker run -d -p 8835:8835 --name testproj xyschool-k12-uuid
15  tags:
16    # runner的标识
17    - dev
18  only:
19    # 出发作业的分支
20    - feature/testcicd

项目下创建 Dockerfile文件

Lang: yaml
1FROM openjdk:8-jdk-alpine
2MAINTAINER xu81 "xu81@xu81.com
3VOLUME /tmp
4COPY target/*.jar app.jar
5EXPOSE 8835
6ENTRYPOINT ["java", "-jar", "/app.jar"]

运行测试

向指定feature/testcicd分支提交内容后, 在项目gitlab页面的CI/CD-作业页面下可以看到相应的作业正在运行, 点击后可查看运行日志