# git-cicd **Repository Path**: tianwstudy/git-cicd ## Basic Information - **Project Name**: git-cicd - **Description**: 内网环境下的cicd部署,可能有些资源跟实际情况不一样,注意实际使用环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-04-25 - **Last Updated**: 2024-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 后端CICD部署流程 ### 1. 环境配置 #### 1.1 jdk配置 - http://192.168.8.218:10010/java/ ![image-20220901143842417](./pic/image-20220901143842417.png) - 上传解压到对应目录下,配置环境变量(**这里路径和名称按自己的来**) ```shell vim /etc/profile export JAVA_HOME=/usr/local/jdk8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH: ``` - source /etc/profile !!!!! 这里别忘了 - 查看配置状态 ![image-20220901144441953](./pic/image-20220901144441953.png) #### 1.2 maven配置 - http://192.168.8.218:10010/maven/ - 配置环境比变量 ```shell vim /etc/profile export MAVEN_HOME=/usr/local/apache-maven-3.8.6 export PATH=${PATH}:${MAVEN_HOME}/bin ``` - source /etc/profile !!! ![image-20220901145631337](./pic/image-20220901145631337.png) - 解压到对应目录后修改 setting.xml文件 (在解压后的conf目录下) ```yaml /root/m2/repository 仓库地址按需修改 私服地址和登录账号 maven-releases admin admin123 maven-public admin admin123 maven-public * maven-public http://192.168.8.212:8081/repository/maven-public/ maven-releases * maven-releases http://192.168.8.212:8081/repository/maven-releases/ ``` #### 1.3 docker及docker-compose安装 - http://192.168.8.218:10010/docker/ ![image-20220901151508537](./pic/image-20220901151508537.png) - 下载上传到服务器解压后先安装docker再compose rpm -ivh ./* --nodeps --force - 启动docker,查看状态 ```sh systemctl start docker docker -v ``` ![image-20220901153220550](./pic/image-20220901153220550.png) - 修改配置文件(如果文件不存在新建文件) vim /etc/docker/daemon.json ```shell { "log-driver": "json-file", "log-opts": {"max-size": "100m","max-file": "1"}, "exec-opts": ["native.cgroupdriver=systemd"], "graph": "/var/lib/docker", "registry-mirrors": ["http://192.168.8.212:8081"], "insecure-registries": ["192.168.8.212:8083","192.168.8.212:8084"] } ``` - 重启docker使其生效 ```shell systemctl daemon-reload systemctl restart docker ``` - 登录nexus私服测试 docker login -u admin -p admin123 192.168.8.212:8084 ![image-20220901153429596](./pic/image-20220901153429596.png) - docker-compose安装 1.进入docker-compose解压后所在目录 cd /usr/local/docker/docker-compose-linux-x86_64 2.将下载的docker-compose-linux-x86_64移动到/usr/local/bin目录下,并重命名为docker-compose mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose 3.添加可执行权限 chmod +x /usr/local/bin/docker-compose 4.测试是否安装成功 docker-compose -v ![image-20220901153743047](./pic/image-20220901153743047.png) - gitlab-runner安装 1、下载镜像:docker pull 192.168.8.212:8084/gitlab-runner:latest 2、修改镜像名称:docker tag 192.168.8.212:8084/gitlab-runner:latest gitlab-runner:latest 按照自己需要是否修改 3、编写docker-compose.yml ```yaml version: "3" services: git-runner: restart: always image: gitlab/gitlab-runner:latest #刚才下载的镜像名称 container_name: git_runner privileged: true #以管理员身份进行 volumes: #所有挂载目录冒号前面的根据自己情况更改,不必与此保持一致 - /export/piesat/gitlab-runner/config/config.toml:/etc/gitlab-runner/config.toml #提前在本地按对应目录创建config.toml - /var/run/docker.sock:/var/run/docker.sock #用于runner容器共享宿主机的docker - /root/.docker/:/root/.docker/ - /etc/docker/daemon.json:/etc/docker/daemon.json - /usr/local/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6 #maven所造目录 - /usr/local/bin:/usr/local/bin - ./settings.xml:/usr/local/apache-maven-3.8.6/conf/settings.xml #可以吧maven下的配置文件拷贝过来方便以后修改 ``` 4、运行:docker-compose up -d 5、查看运行状态:docker ps -a|grep git ![image-20220901155030662](./pic/image-20220901155030662.png) 至此,所有的前期环境基本准备好了 ### 2. GitLab与GitLabRunner关联 #### 2.1 GitLab找到要关联的项目 setting -> CICD -> Runners-settings ![image-20220901160424906](./pic/image-20220901160424906.png) #### 2.2 展开Runner详情 ![image-20220901160741079](./pic/image-20220901160741079.png) #### 2.3 在gitlab-runner注册项目runner - 进入gitlab-runner容器 :docker exec -it git_runner /bin/bash - 注册项目runner ```sh root@7bda3f9841d5:/# root@7bda3f9841d5:/# gitlab-runner register Runtime platform arch=amd64 os=linux pid=99 revision=5316d4ac version=14.6.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): http://192.168.8.198:10003/ #输入上面图中的地址 Enter the registration token: 8dd6TM9smNcfRiwNkMza #输入上图中的token Enter a description for the runner: [7bda3f9841d5]: 自动集成部署 #描述信息 Enter tags for the runner (comma-separated): run-springboot #这个是当前runner的tag,重要,相当于别名,后面的.gitlab-ci.yml中的job会用到,指定哪个tag来执行任务 Registering runner... succeeded runner=8dd6TM9s Enter an executor: docker, shell, ssh, kubernetes, docker+machine, docker-ssh+machine, custom, docker-ssh, parallels, virtualbox: #运行模式选择,这里使用docker,也可以选择shell docker Enter the default Docker image (for example, ruby:2.6): 192.168.8.212:8084/jdk-font:1.8 #指定基础镜像 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! root@7bda3f9841d5:/# ``` 出现successfully则构建成功!!! - 查看所有runner ![image-202209051600003525](./pic/Snipaste_2022-09-05_15-58-56.png) - 删除runner ```shell gitlab-runner verify --delete --token 7612a033a5cbb06559ee1ef6685db0 --url http://192.168.8.198:10003/ ``` #### 2.4 gitlab页面查看关联情况 ![image-20220901162547552](./pic/image-20220901162547552.png) #### 2.5 修改配置文件 由于这里使用的docker启动服务,对配置文件进行的挂载,可以方便修改 vim config.toml 需要加入修改下面红色框中的东西 ![image-20220901165603367](./pic/image-20220901165603367.png) ``` volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/root/m2/repository:/root/m2/repository","/root/.docker/:/root/.docker/","/usr/bin/docker:/usr/bin/docker","/usr/local/jdk8:/usr/local/jdk8","/usr/local/apache-maven-3.8.6/:/usr/local/apache-maven-3.8.6/","/usr/local/bin/docker-compose:/usr/local/bin/docker-compose","/export/piesat/emsp:/export/piesat/emsp"] pull_policy = "if-not-present" #目录挂载根据自己实际情况做修改 ``` - docker 登录认证相关查看 :cat /root/.docker/config.json - 重启docker :docker-compose restart ### 3. .gitlab-ci.yml编写 ```yaml #定义全局环境变量配置 variables: NAME: efficiency-manage-1.0.0.jar #docker 镜像名称 IMAGE_NAME: emsp:1.0 #docker容器运行名称 CONTAINER_NAME: emsp #生产服务器jar包存放目录 service_home: /export/piesat/emsp before_script: - export MAVEN_HOME=/usr/local/apache-maven-3.8.6 - export DOCKER_COMPOSE=/usr/local/bin stages: - test_env - compile - build - run cache: paths: - /root/m2/repository #设置cache,不用每次构建都去下载依赖 #任务1 查看环境 test_env: stage: test_env tags: #这里写gitlab与gitLabRunner绑定时候输入的tag,这样job会使用当前runner跑任务 - run-springboot script: - $MAVEN_HOME/bin/mvn -v - docker -v - $DOCKER_COMPOSE/docker-compose -v #构建jar包 compile: stage: compile allow_failure: false #指定构建的分支 only: - master tags: - run-springboot #运行脚本 script: - echo "====================开始打包====================" - $MAVEN_HOME/bin/mvn clean compile - $MAVEN_HOME/bin/mvn package -Dmaven.test.skip=true - echo "====================打包结束====================" - pwd - whoami #将文件上传到服务器 after_script: - cp ./target/${NAME} ${service_home} - cp ./docker/Dockerfile ${service_home} - cp ./docker/docker-compose.yml ${service_home} - cp ./src/main/resources/application.properties ${service_home} - cp ./src/main/resources/application-dev.yml ${service_home} artifacts: name: $NAME expire_in: 5 min #设置maven打包的jar定时移除时间,默认单位sec,其他单位mins, paths: - target/*.jar #构建docker镜像 build: stage: build script: - cd ${service_home} - chmod 777 ./* - docker build -t ${IMAGE_NAME} . after_script: - docker images |grep ${IMAGE_NAME} - rm -rf target only: - master tags: - run-springboot #运行任务 run: stage: run script: - cd ${service_home} - $DOCKER_COMPOSE/docker-compose down - $DOCKER_COMPOSE/docker-compose up -d after_script: - docker ps -a|grep ${CONTAINER_NAME} only: - master tags: - run-springboot ``` 将写好的yml文件上传到项目的根目录下,gitlab会自动识别并开始构建,具体情况如下: ![image-20220901164327451](./pic/image-20220901164327451.png) 构建任务详情,点击每一个任务可查看其运行日志 ![image-20220901164505786](./pic/image-20220901164505786.png)