java gitlab ci cd_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

c3e4a551be4cad7396c8919474362549.png

1.2 特性

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

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

c7c517cf3f1532ad91d86b2545df1fe4.png

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

df9425d1bd0325673842edcc7ef73bde.png

安装runner

# For RHEL/CentOS/Fedora

sudo yum install gitlab-runner

2074103445320dd5db68af412727153b.png

c0c190a615d1316c5ac8765dca580103.png

2.2 项目注册到到runner

参考官网:

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

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

638b7678e3b7e4d98ebd6ab5ac00de17.png

283118beffc53528055cca38923f5ab6.png

5ae231ac2ad65aeee000b037aca1cffd.png

306d9b062a978be1561666a32ab054f8.png

Setup a specific Runner manually

安装一个与 GitLab CI 兼容的 Runner (如需了解更多的安装信息,请查看 GitLab Runner)

在 Runner 设置时指定以下 URL: http://172.17.100.11/

在安装过程中使用以下注册令牌: kA5JA5myz4aZR6MRgEBm

启动 Runner!

gitlab-runner register

7b3d12db5295765ca41bf4c1584e310c.png

service gitlab-runner start

chkconfig gitlab-runner on

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

420332a42175e683b5c06be84a5fc5d1.png

aabf2c56eb8451160b093ea220558178.png

a4d4f57544d510c88ea46571faea2a26.png

a64fad093fb23e97aacfb84ebb93f319.png

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

---

87e464b04a183c0ababa4ad23f716f9f.png

source /etc/profile

mvn -version

edf23eb3f628189f68263eee7848684a.png

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

617e711b00a6b90fc90a5cede4cfe29f.png

四:配置gitlab的CI 文件

43507b41398e092bc11bf92436276683.png

f880c0cb196ac16e4293bbdfbbafb480.png

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 *

5d2943d666e72134e9ce55a657b4fde0.png

执行构建

71fb2bbe0886d9414f51e24b5f72a020.png

85f0bf4bfcf9ef8e01b97e3e45dd43f8.png

b27b4c53d81fdafdf3f3843cae90ad3f.png

c7601f415375dab9075b45655a27981f.png

最后打出solo.war的包

6e14a9bb1840353519e9142d3c5813bd.png

五: 发布项目

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

d874df5cc354a08004f19e9a1453bc81.png

db71c48b100007a293748a94f76256fb.png

启动tomcat:

cd /usr/local/tomcat/bin

./startup.sh

85ef9646bbf1af544a8309d4be3ae59d.png

访问: 172.17.100.12:8080

14479b48cff8ff26398ebe8ef70ca20a.png

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

78b44379a66ddfa0e45b0558f3c0189b.png

c7ce25192c6d6cc4b044c1f3b1639b36.png

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

在 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

8c31fc1ca6e9ad86fa95d4a682d3d45c.png

客户端从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

---

6a9ba2c009f52ff1e7ca23ceb39df8af.png

6e320d53bd8283a4b2dfe8312a4f91a3.png

提交项目:

cd /soft/solo-project

git add *

git commit -m "add solo"

git push -u origin master

b06fd8555efe0ed04c611dae8f205dd2.png

发布项目:

8e49120b42e0ff9f4da27a3ba431f0ec.png

点击执行

fd68eb4ea021dd629daa054b29072215.png

开始build

d3168b344d5727615a80d92263c56627.png

8c8450da0ec1ae6e2f1ad6089eee0a82.png

此处报一个 权限不够

是因为默认构建的时候是gitlab-runner 这个用户 去执行这个命令的

所以要为gitlab-runner 用户提权

chmod +x /etc/sudoers

vim /etc/sudoers

gitlab-runner ALL=(ALL) NOPASSWD:ALL

并要 做gitlab-runner 用户与 172.17.100.12 的root的用户的无密钥登录

e779ec153bd3080715e4031f11d13a86.png

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的构建

a5cc36763033a0f0295594fd0b3694b6.png

2d594d575c1ee9df27bcb3d8a54f795d.png

2ad0b3d010d18fb516d93cfaed957592.png

b9d5a66044b72f064cac20434fc538d3.png

执行 步骤 run:

4bc9e3bb61d07d272853ff2d0b5bef9a.png

91e2ce0c98415428bc9f485e6e3cd1a8.png

执行步骤:deploy

dc702b2aa8ac026614c60a2450f944e5.png

4837ce0a6d932dc7690a73abd9803a57.png

1fe5a5328d797ff70e7919494e844cf4.png

访问测试:

c2df38d2f95ae4118ab5a39d32a41ef6.png

你可能感兴趣的:(java,gitlab,ci,cd)