Jenkins自动构建GitLab分支项目

文章目录

    • 步骤1 Jenkins
      • 1.1 新建任务
      • 1.2 修改配置
        • 源码管理
          • Repositories
          • Branches to build
      • 1.3 触发构造器
        • 选择
        • 点击高级选项
          • Allowed branches
      • 1.4 增加构建步骤
        • 1.4.1 调用顶层Maven目标
        • 1.4.2 send files or execute commands over SSH
          • 1.4.2.1 SSH Publishers
          • 1.4.2.2 Transfers
    • 步骤2 GitLab
      • 2.1 进入settings
        • 2.1.1 进入Access Tokens
      • 2.2 进入Settings
        • 2.2.1 进入Integrations
          • 2.2.2 添加Webhooks
      • 2.3 进入Jenkins服务页面
        • 2.3.1 添加凭证
      • 2.4 进入Jenkins服务页面
    • 步骤3 Docker
      • 3.1 进入服务器
      • 3.2 下载docker离线包
      • 3.3 Docker镜像加速
      • 3.4 下载镜像
      • 3.5 Docker build
        • 3.5.1 进入Jenkins传入jar包文件的目录
        • 3.5.2 创建Dockerfile文件
        • 3.5.3 构建项目镜像
        • 3.5.4 编写shell脚本
        • 3.5.5 软连接

任务需求:代码提交到gitlab时,触发Jenkins构建项目到docker容器中运行

步骤1 Jenkins

1.1 新建任务

qt_saas_erp_test

qt_saas_mes_test

1.2 修改配置

源码管理

Repositories

Repository URL:http://10.82.1.200/qt-saas/qt-saas.git

Credentials:选择有效证明

Branches to build

指定分支(为空时代表any):*/dev

1.3 触发构造器

选择

Build when a change is pushed to GitLab. GitLab webhook URL: http://10.210.2.51:90/project/qt_saas_erp_test

勾选:

Push Events

Opened Merge Request Events

Approved Merge Requests (EE-only)

Comments

点击高级选项

勾选:

Enable [ci-skip]

Ignore WIP Merge Requests

Set build description to build cause (eg. Merge request or Git Push)

Allowed branches

选择:

Filter branches by regex

在Source Branch Regex填写框写入设置的分支名字

text

注意:此时写入的test表示在提交代码到test分支的时候才会执行Jenkins构建项目到docker容器中

1.4 增加构建步骤

1.4.1 调用顶层Maven目标

Maven版本:

maven3.8.5

目标:

clean package -pl service/erp-service -am -Dmaven.test.skip=true

1.4.2 send files or execute commands over SSH

1.4.2.1 SSH Publishers

SSH Server

​ Name

10.82.1.201
1.4.2.2 Transfers

Transfer Set

​ Sourcefiles

service/erp-service/target/*.jar

注意:此处写入的是带前缀的jar包名

​ Remove prefix

service/erp-service/target

注意:此处写入的是取消前缀名

​ Remote directory

/home/java/qt-saas/erp

注意:此处写入的是Jenkins构建进Linux系统下的目录

​ Exec command

rm -f erp-servuce.jar
mv -f /root/home/java/qt-saas/erp/erp-service-1.0.0-SNAPSHOT.jar /var/lib/docker/home/java/qt-saas/erp/erp-service.jar
erp-service.sh restart

注意:此处写入的是Jenkins构建项目到Linux环境下以后会进行的一些操作

点击进行保存

步骤2 GitLab

点击进入gitlab中的设置

2.1 进入settings

2.1.1 进入Access Tokens

Name

Jenkins

选择复选框:api Access the authenticated user’s API

Full access to GitLab as the user, including read/write on all their groups and projects

注意:api访问认证用户的api

以用户身份完全访问GitLab,包括对其所有组和项目的读写

2.2 进入Settings

2.2.1 进入Integrations

2.2.2 添加Webhooks

URL

http://127.0.0.1:90/project/qt_saas_erp_test

注意:此处写入的是Jenkins项目配置GitLab的地址

Secret Token

a9e3f637ef6fadd71292666bd46bdce6

注意:此处写入的是GitLab中的Token

最后点击Add webhook进行创建

2.3 进入Jenkins服务页面

点击系统管理—>Manage Credentials

2.3.1 添加凭证

范围:默认全局

API token

erbg4u_x1buzXSpP_C29

注意:此处写入的是GitLab处得到的API token

2.4 进入Jenkins服务页面

点击系统管理—>系统配置—>GitLab

勾选复选框:Enable authentication for ‘/project’ end-point

​ GitLab connections

​ Connection name

Jenkins

注意:此处写入的是在GitLab配置Jenkins的名字

​ Gitlab host URL

http://10.82.1.200

注意:此处写入的是GitLab的服务器地址

​ Credentials

此处选择GitLab API token

erbg4u_x1buzXSpP_C29

以上Jenkins以及GitLab就创建好了

步骤3 Docker

3.1 进入服务器

/root/setup/docker/

3.2 下载docker离线包

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz

3.3 Docker镜像加速

由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

cat < /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

3.4 下载镜像

下载Java:8镜像

docker pull java:8

启动java:8镜像

docker run java:8

3.5 Docker build

在第一次启动项目时进行docker build

3.5.1 进入Jenkins传入jar包文件的目录

/var/lib/docker/home/java/qt-saas/erp/

3.5.2 创建Dockerfile文件

#指定基础镜像
From java:8
#将本地文件夹挂载到当前容器
VOLUME /root/home/java/qt-saas/erp
#复制文件到容器
ADD erp-service.jar /app.jar
#声明需要暴露的接口
EXPOSE 8102
#配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]

3.5.3 构建项目镜像

docker build -f /var/lib/docker/home/java/qt-saas/erp/erp-service .

3.5.4 编写shell脚本

进入jar包所在的目录下

cd /var/lib/docker/home/java/qt-saas/erp/

创建shell脚本

vim erp-service.sh

编写脚本

#!/bin/bash
user=erp-service
#启动
start(){
docker run -d -p  8302:8102 $user;
echo "******************* start $user success *******************"
}
#停止
stop(){
echo "******************* Please wait *******************"
docker stop `docker ps -a| grep $user | awk '{print $1}' `
echo "******************* stop $user success *******************"
#删除
docker rm `docker ps -a| grep $user | awk '{print $1}' `
echo "******************* delete $user success *******************"
}

case "${1}" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        *)
                echo "Userage: $1 {start|stop|restart}"
                exit 1
esac

为脚本赋权

chmod 777 erp-service.sh

3.5.5 软连接

ln -s /var/lib/docker/home/java/qt-saas/erp/erp-service.sh /usr/bin/

注意:进行软连接后可以在任意目录使用shell脚本

mes项目打包如erp所示

你可能感兴趣的:(Linux,Docker,jenkins,docker,运维)