首页 > 其他分享 >二.基于jenkins与gitlab的CI/CD及DevOps实战 4.1 jenkins 触发器详解及案例、jenkins参数化构建及案例

二.基于jenkins与gitlab的CI/CD及DevOps实战 4.1 jenkins 触发器详解及案例、jenkins参数化构建及案例

时间:2022-12-02 01:44:54浏览次数:51  
标签:opt 4.1 192.168 案例 app1 jenkins docker root

Jenkins触发器简介及实现:
Jenkins触发器分类:
    远程触发构建:
    基于API远程触发
    其他工程构建后触发:
    执行完成A工程再执行B工程
    定时构建:
    基于定时任务构建
    轮询SCM(source code management):
    每间隔指定的时间去检查代码仓库是否变更,如果变更就执行构建
    
Jenkins触发器简介及实现:
#系统管理-管理插件-可选插件-Gitlab
注意事项:
    在 jenkins 系统管理--全局安全设置,认证改为登录用户可以做任何事情且匿名用户具有可读权限
    启用代理兼容、取消跨站请求伪造保护的勾选项(早期jenkins)
    Gitlab Hook Plugin以纯文本形式存储和显示GitLab API令牌
          https://jenkins.io/security/advisory/2018-05-09/#SECURITY-263
生成认证token并验证:
    root@jenkins:~# openssl rand -hex 12
        5ca3642cf94eb64b6a0d6897

     jenkins配置远程触发

 

 

curl测试
root@docker-server1:/data/app1# curl  --head http://192.168.106.190:8080/job/test-job1/build?token=5ca3642cf94eb64b6a0d6897
        HTTP/1.1 201 Created
        Date: Wed, 30 Nov 2022 13:40:21 GMT
        X-Content-Type-Options: nosniff
        Location: http://192.168.106.190:8080/queue/item/8/
        Content-Length: 0
        Server: Jetty(10.0.11)

 gitlab自动触发:

 

 

python测试远程触发:

管理员--系统钩子(System Hooks)
# pip3 install jenkinsapi
# cat xxx.py
#!/usr/bin/env python
#coding:utf-8
#Author:xxx
from jenkinsapi.jenkins import Jenkins
conn = Jenkins('http://192.168.106.190:8080', username='jenkinsadmin', password='12345678',useCrumb='5ca3642cf94eb64b6a0d6897')
conn.build_job('test-job1')

#conn.build_job('test-job2')
#conn.build_job('test-job3')
~# python3 xxx.py

 手动实现镜像更新:
代码开发上传gitlab (192.168.106.190 模拟开发机器)
代码clone 、代码构建mvn、代码copy(192.168.106.190 jenkins服务器)
镜像构建和上传(构建镜像服务器 上传到harbor 192.168.106.131 (Dockerfile所在的机器))
harbor
执行镜像更新(执行镜像更新 192.168.106.131 docker-compose所在机器)

基于代码frontend.tar.gz演示代码更新流程
1.在开发机器(jenkins本机/opt/app1为例)编写代码:
ubuntu-dockerfile-case中的frontend.tar.gz文件解压并上传至gitlab app1项目
root@docker-server1:# cd /opt/
root@docker-server1:/opt# git clone http://192.168.106.200/laimiya/app1.git
上传文件
root@docker-server1:/opt/app1# git add .
root@docker-server1:/opt/app1# git commit -m "push case jd"
root@docker-server1:/opt/app1# pwd
/opt/app1
root@docker-server1:/opt/app1# ls
README.md  images  index.html

2.在镜像构建服务器(jenkins /data/laimiya)clone app1项目并打包:
root@jenkins:~# cd /data/laimiya/
root@jenkins:/data/laimiya# git clone http://192.168.106.200/laimiya/app1.git
root@jenkins:/data/laimiya# cd app1/
root@jenkins:/data/laimiya/app1# tar czvf frontend.tar.gz --exclude=.git --exclude=.gitignore --exclude=README.md ./
root@jenkins:/data/laimiya/app1# scp frontend.tar.gz 192.168.106.131:/opt/ubuntu-dockerfile/

3.在镜像构建服务器(docker-server1 192.168.106.131)构建镜像:
root@docker-server1:/opt/ubuntu-dockerfile# bash build-command.sh #构建并上传镜像到harbor镜像仓库

4.在web服务器(docker-server2 192.168.106.193)基于docker-compsoe运行服务
root@docker-server2:/data/app1# docker-compose pull
root@docker-server2:/data/app1# docker-compose up -d

 

Jenkins的参数化构建及案例;
详见jenkins配置

 

 


/data/scripts/laimiya-app1-deploy.sh

 

 

 

jenkins的监控:
https://github.com/simplesurance/jenkins-exporter #项目地址
    安装插件:
      安装插件
   Prometheus metrics
   CloudBees Disk Usage Simple
 配置插件
   系统管理-->系统设置-->启用指标收集
   重启jenkins
 验证指标数据
  prometheus收集数据:
   http://192.168.106.190:8080/prometheus/
  grafana 模板ID 9964(略)

验证jenkins指标数据:
http://192.168.106.190:8080/prometheus/

标签:opt,4.1,192.168,案例,app1,jenkins,docker,root
From: https://www.cnblogs.com/pang-lu/p/16943261.html

相关文章