gitlab 的 CI/CD 配置管理 (二)

感情迁移 提交于 2019-11-29 01:22:43

gitlab 的 CI/CD 配置管理 (二)

标签(空格分隔):运维系列


  • 一:gitlab CI/CD 介绍
  • 二:配置gitlab的CI/CD 的runner
  • 三:代码的MAVEN打包环境
  • 四:配置gitlab的CI 文件
  • 五:发布项目

一: gitlab CI/CD介绍

1.1 gitlab CI/CD概述

Gitlab是常用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案. 顾名思义具体来说ci/cd主要完成以下两个工作.     ci(持续构建)     代码提交后触发自动化的单元测试,代码预编译,构建镜像,上传镜像等.     cd(持续发布)     持续发布则指将构建好的程序发布到各种环境,如预发布环境,正式环境.  官网: https://docs.gitlab.com/ee/ci/README.html

1.2 特性

gitlab ci/cd是由独立的runner程序完成,runner采用go语言编写,因此可以很好的进行跨平台,通常可以将runner部署到任何gitlab server之外的服务器,从而避免对gitlab server的影响.  官网:https://docs.gitlab.com/runner/ 

二:配置gitlab的CI/CD 的runner

2.1 安装gitlab-runner

参考:  https://docs.gitlab.com/runner/install/linux-repository.html  在 CentOS 7 上面的安装
Add GitLab's official repository:  # For RHEL/CentOS/Fedora  curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash 

安装runner  # For RHEL/CentOS/Fedora sudo yum install gitlab-runner


2.2 项目注册到到runner

参考官网:  https://docs.gitlab.com/runner/register/index.html  找到要发布项目的注册信息

Setup a specific Runner manually 安装一个与 GitLab CI 兼容的 Runner (如需了解更多的安装信息,请查看 GitLab Runner) 在 Runner 设置时指定以下 URL: http://172.17.100.11/ 在安装过程中使用以下注册令牌: kA5JA5myz4aZR6MRgEBm 启动 Runner!
gitlab-runner register 

 service gitlab-runner start  chkconfig gitlab-runner on  在gitlab 上面找到runner 将项目添加到runner里面去 

这边如果有多个项目都可以添加到这个runner 里面去

##三:代码的MAVEN打包环境

配置 maven  tar -zxvf apache-maven-3.5.3-bin.tar.gz  mv apache-maven-3.5.3 /usr/local/maven  vim /etc/profile  --- 在Java环境变量下面加上 maven的环境变量  ## maven   export MAVEN_HOME=/usr/local/maven PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin  ---

source /etc/profile mvn -version

mkdir -p /deploy/solo # 创建 打出solo.war 的目录  cd /root/project/  rm -rf solo   git clone http://172.17.100.11/TL-flyfish/solo.git  尝试使用 命令行的方式编译项目: 首次编译会下载包会很慢  cd solo  mvn clean package mvn install mvn install package -Dmaven.test.skip=true  最后会打出solo.war包  表示命令行打包完成  maven 到默认下载的依赖包在/root/.m2/repository

四:配置gitlab的CI 文件

4.1 配置CI 的 运行文件gitlab-ci.yml 打出war包测试

stages:    - build    - run    - deploy  variables:     MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"     MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"  cache:   paths:     - .m2/repository/  .solo-build-job: &solo-build-job   script:     - mvn clean package     - mvn install     - mvn install package -Dmaven.test.skip=true     - ls -ld *  solo-build:    when: manual    stage: build    script:       - mvn clean package       - mvn install        - mvn install package -Dmaven.test.skip=true       - cd $CI_PROJECT_DIR/target/       - ls -ld * 

执行构建

最后打出solo.war的包


五: 发布项目

5.1: 部署一台tomcat 中间件的服务器

tomcat 服务器 IP: 172.17.100.12   打通172.17.100.11 和172.17.100.12 的无密码登录认证。  下载:tomcat wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz   tar -zxvf apache-tomcat-8.5.32.tar.gz   mv apache-tomcat-8.5.32 /usr/local/tomcat 

启动tomcat:  cd /usr/local/tomcat/bin  ./startup.sh

访问: 172.17.100.12:8080 

5.2 在gitlab-ci.yml 增加发布步骤

stages:    - build    - run    - deploy  variables:     MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"     MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"  cache:   paths:     - .m2/repository/  .solo-build-job: &solo-build-job   script:     - mvn clean package     - mvn install     - mvn install package -Dmaven.test.skip=true     - ls -ld *  solo-build:    when: manual    stage: build    script:       - sudo rm -rf /deploy/solo/solo.war       - mvn clean package       - mvn install        - mvn install package -Dmaven.test.skip=true       - cd $CI_PROJECT_DIR/target/       - ls -ld *       - cp -ap solo.war /deploy/solo/  solo-run:   when: manual   stage: run   script:      - cd /deploy/solo      - md5sum solo.war  solo-deploy:    when: manual    stage: deploy    script:       - cd /deploy/solo/       - scp solo.war root@172.17.100.12:/root         - cd /deploy/script       - sh -x deploy-solo.sh 


发布需要配置 一个发布脚本:  在 172.17.100.11 上面写编写脚本:  mkdir /deploy/script -p  ---  #!/bin/bash DATE=`date +%Y-%m-%d-%H-%M`  ssh root@172.17.100.12 << eof  cd /usr/local/tomcat/bin/  sh -x shutdown.sh  cd /usr/local/tomcat/webapps/  mv solo.war  /data/backup/solo.war$DATE  cp /root/solo.war /usr/local/tomcat/webapps/  cd /usr/local/tomcat/bin/  sh -x startup.sh   ps -ef |grep tomcat   eof --- 

在 tomcat 服务器上面新建一个solo.war 包的备份目录 172.17.100.12  mkdir -p /data/backup 


客户端从git服务器(172.17.100.11) 下载代码  cd /soft rm -rf *   git clone git@172.17.100.11:TL-flyfish/solo-project.git  cd solo-project cd src/main/resources/  vim latke.properties  --- 修改 这个 serverHost 改为 172.17.100.12  serverHost=172.17.100.12 --- 

提交项目:   cd /soft/solo-project   git add *   git commit -m "add solo"   git push -u origin master 

发布项目: 

点击执行

开始build

此处报一个 权限不够 是因为默认构建的时候是gitlab-runner 这个用户 去执行这个命令的 所以要为gitlab-runner 用户提权  chmod +x /etc/sudoers  vim /etc/sudoers   gitlab-runner   ALL=(ALL)       NOPASSWD:ALL  并要 做gitlab-runner 用户与 172.17.100.12 的root的用户的无密钥登录

gitlab-cli.yaml 构建 脚本应该为sudo   stages:    - build    - run    - deploy  variables:     MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"     MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"  cache:   paths:     - .m2/repository/  .solo-build-job: &solo-build-job   script:     - mvn clean package     - mvn install     - mvn install package -Dmaven.test.skip=true     - ls -ld *  solo-build:    when: manual    stage: build    script:       - sudo rm -rf /deploy/solo/solo.war       - mvn clean package       - mvn install        - mvn install package -Dmaven.test.skip=true       - cd $CI_PROJECT_DIR/target/       - ls -ld *       - sudo cp -ap solo.war /deploy/solo/  solo-run:   when: manual   stage: run   script:      - cd /deploy/solo      - md5sum solo.war  solo-deploy:    when: manual    stage: deploy    script:       - cd /deploy/solo/       - sudo scp solo.war root@172.17.100.12:/root         - cd /deploy/script       - sudo sh -x deploy-solo.sh 

从新执行build的构建

执行 步骤 run:

执行步骤:deploy

访问测试:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!