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

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

gitlab 的 CI/CD 配置管理 (二)_第1张图片

1.2 特性

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

官网:https://docs.gitlab.com/runner/

gitlab 的 CI/CD 配置管理 (二)_第2张图片

二:配置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

gitlab 的 CI/CD 配置管理 (二)_第3张图片

安装runner

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

gitlab 的 CI/CD 配置管理 (二)_第4张图片

gitlab 的 CI/CD 配置管理 (二)_第5张图片


2.2 项目注册到到runner

参考官网:

https://docs.gitlab.com/runner/register/index.html

找到要发布项目的注册信息

gitlab 的 CI/CD 配置管理 (二)_第6张图片

gitlab 的 CI/CD 配置管理 (二)_第7张图片

gitlab 的 CI/CD 配置管理 (二)_第8张图片

gitlab 的 CI/CD 配置管理 (二)_第9张图片

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

gitlab 的 CI/CD 配置管理 (二)_第10张图片


service gitlab-runner start 
chkconfig gitlab-runner on

在gitlab 上面找到runner 将项目添加到runner里面去

gitlab 的 CI/CD 配置管理 (二)_第11张图片

gitlab 的 CI/CD 配置管理 (二)_第12张图片

gitlab 的 CI/CD 配置管理 (二)_第13张图片

gitlab 的 CI/CD 配置管理 (二)_第14张图片

这边如果有多个项目都可以添加到这个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

---

gitlab 的 CI/CD 配置管理 (二)_第15张图片

source /etc/profile
mvn -version

gitlab 的 CI/CD 配置管理 (二)_第16张图片

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/CD 配置管理 (二)_第17张图片

四:配置gitlab的CI 文件

gitlab 的 CI/CD 配置管理 (二)_第18张图片

gitlab 的 CI/CD 配置管理 (二)_第19张图片

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 *

gitlab 的 CI/CD 配置管理 (二)_第20张图片

执行构建

gitlab 的 CI/CD 配置管理 (二)_第21张图片

gitlab 的 CI/CD 配置管理 (二)_第22张图片

gitlab 的 CI/CD 配置管理 (二)_第23张图片

gitlab 的 CI/CD 配置管理 (二)_第24张图片

最后打出solo.war的包

gitlab 的 CI/CD 配置管理 (二)_第25张图片


五: 发布项目

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

gitlab 的 CI/CD 配置管理 (二)_第26张图片

image_1ckcb4a6p1ha55qkumb14gi5vi5m.png-167.9kB

启动tomcat:

cd /usr/local/tomcat/bin

./startup.sh

gitlab 的 CI/CD 配置管理 (二)_第27张图片

访问: 172.17.100.12:8080

gitlab 的 CI/CD 配置管理 (二)_第28张图片

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 [email protected]:/root  
      - cd /deploy/script
      - sh -x deploy-solo.sh 

gitlab 的 CI/CD 配置管理 (二)_第29张图片
gitlab 的 CI/CD 配置管理 (二)_第30张图片

发布需要配置 一个发布脚本:

在 172.17.100.11 上面写编写脚本:

mkdir /deploy/script -p

---

#!/bin/bash
DATE=`date +%Y-%m-%d-%H-%M`

ssh [email protected] << 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

image_1ckcclbga1jbk1b81upl1dlg1p5rb9.png-119.5kB


客户端从git服务器(172.17.100.11) 下载代码

cd /soft
rm -rf * 

git clone [email protected]: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
---

gitlab 的 CI/CD 配置管理 (二)_第31张图片

gitlab 的 CI/CD 配置管理 (二)_第32张图片

提交项目: 

cd /soft/solo-project
  git add *
  git commit -m "add solo"
  git push -u origin master

gitlab 的 CI/CD 配置管理 (二)_第33张图片

发布项目:

gitlab 的 CI/CD 配置管理 (二)_第34张图片

点击执行

gitlab 的 CI/CD 配置管理 (二)_第35张图片

开始build

gitlab 的 CI/CD 配置管理 (二)_第36张图片

gitlab 的 CI/CD 配置管理 (二)_第37张图片

此处报一个 权限不够
是因为默认构建的时候是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 的 CI/CD 配置管理 (二)_第38张图片

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 [email protected]:/root  
      - cd /deploy/script
      - sudo sh -x deploy-solo.sh

从新执行build的构建

gitlab 的 CI/CD 配置管理 (二)_第39张图片

gitlab 的 CI/CD 配置管理 (二)_第40张图片

gitlab 的 CI/CD 配置管理 (二)_第41张图片

gitlab 的 CI/CD 配置管理 (二)_第42张图片

执行 步骤 run:

gitlab 的 CI/CD 配置管理 (二)_第43张图片

gitlab 的 CI/CD 配置管理 (二)_第44张图片

执行步骤:deploy

gitlab 的 CI/CD 配置管理 (二)_第45张图片

gitlab 的 CI/CD 配置管理 (二)_第46张图片

gitlab 的 CI/CD 配置管理 (二)_第47张图片

访问测试:

gitlab 的 CI/CD 配置管理 (二)_第48张图片

你可能感兴趣的:(jenkins持续集成,GitLabCI/CD)