局域网内基于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. 安装
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-作业页面下可以看到相应的作业正在运行, 点击后可查看运行日志