企业级——自动化CI/CD之jenkins 01
介绍Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、摆设、自动化, 满足任何项目的必要。
以上介绍引自官方
安装
本次安装使用docker运行ubuntu+openjdk-17作为基础镜像,挂载jenkins.war包和所需maven、nodejs、golang等第三方库。告急办理编译时对各个工具的需求,减少基础镜像的重复编译以及方便jenkins升级(只下载war包)。
尚有一种编译方式,在Jenkinsfile各个阶段,使用docker镜像进行按需编译,比如我必要编译golang代码,我可以使用golang基础镜像进行源码编译。本次不做介绍。
[*]准备运行war的环境镜像, 以ubuntu为基础构建openjdk:17镜像
FROM hub.atomgit.com/amd64/ubuntu:23.10
MAINTAINER clibing <wmsjhappy@gmail.com>
ARG JDK_VERSION="17"
ARG JAVA_OPTS="-XX:+PrintFlagsFinal"
ARG JAVA_GC_LOG="/var/log/jvmgc.log"
ENV JAVA_GC_LOG ${JAVA_GC_LOG}
ENV JAVA_HOME /usr/lib/jvm/default-jvm
# refs => http://calvin1978.blogcn.com/articles/jvmoption-7.html
ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom \
-XX:AutoBoxCacheMax=20000 \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseCGroupMemoryLimitForHeap \
-XX:+AlwaysPreTouch \
-XX:+PrintCommandLineFlags \
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-XX:+PrintGCApplicationStoppedTime \
-Xloggc:${JAVA_GC_LOG} \
${JAVA_OPTS}
RUN apt update -y
# RUN apt -y install fonts-dejavu fontconfig procps
RUN apt -y install libnss3 iputils-ping net-tools
# RUN apt -y install fonts-dejavu fontconfig procps openjdk-${JDK_VERSION}-jdk libnss3 iputils-ping net-tools \
RUN apt -y installopenjdk-${JDK_VERSION}-jdk \
&& ln -s /usr/lib/jvm/java-${JDK_VERSION}-openjdk-* /usr/lib/jvm/default-jvm
RUN rm -rf /var/cache/apk/*
ENV PATH=${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
WORKDIR /workdir
CMD ["/bin/bash"]编译hub.linuxcrypt.cn/clibing/openjdk:17
#########################################################################
# File Name: build.sh
# Author: clibing
# mail: wmsjhappy@@gmail.com
# Created Time: 五7/19 09:28:24 2024
#########################################################################
#!/bin/bash
export JDK_VERSION=17
docker buildx build --platform=linux/amd64,linux/arm64/v8 \
--build-arg JDK_VERSION=$JDK_VERSION \
-t hub.linuxcrypt.cn/clibing/openjdk:$JDK_VERSION \
--push \
-f Dockerfile .
[*]下载jenkins.war, apache maven, apache ant
[*]apache ant: https://mirrors.tuna.tsinghua.edu.cn/apache/ant/binaries/apache-ant-1.10.13-bin.tar.gz
[*]apache maven: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
[*]jenkins.war: https://www.jenkins.io/download/
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/5542a73db7694e9aa1f7ec3601c4affa~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=7syRjFEUdruCK8SSsKxeOXgBXAw%3D
选择Generic Java package (.war)
[*]启动jenkins
当前项目目录结构
.
├── data
│ ├── build 编译目录,只是保留
│ ├── m2repository maven/conf/settings.xml中配置的localRepository位置
│ └── sdk
│ ├── ant 编译依赖的工具ant
│ ├── go golang sdk
│ ├── install 下载的 tar.gz文件
│ └── maven apache maven
├── docker-compose.yml docker编排
├── jenkins.war jenkins.war包
└── ubuntu.openjdk 基础镜像制作
├── Dockerfile
└── build.shdocker-compose.yaml编排文件
name: jenkins
services:
jenkins:
image: hub.linuxcrypt.cn/clibing/openjdk:17
container_name: jenkins
init: true # fix zombie process需要启用init,防止编译时执行shell产生僵尸进程
privileged: true
security_opt:
- no-new-privileges:true
ports:
- 8080:8080
user: root
environment:
JENKINS_HOME: /data/jenkins
M2_HOME: /data/sdk/maven
GO111MODULE: on
GOPATH: /data/build/go
GOPROXY: https://goproxy.cn,https://proxy.golang.org,direct
volumes:
- ./jenkins.war:/opt/jenkins.war # 离线war包
- ./data/jenkins:/data/jenkins
- ./data/sdk:/data/sdk # apache maven, go sdk, other..
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.http.routers.jenkins.rule=Host(`build.clibing.com`)"
- "traefik.http.routers.jenkins.tls=true"
networks:
- traefik
- spider-cluster
command: "java -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -jar /opt/jenkins.war --httpPort=8080"
networks:
traefik:
external: true
spider-cluster:
name: spider-cluster
external: true
[*]向导安装
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/e9956df9d84345928b478cf08bf181b0~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=Fc%2BDkHLzns352tjHqJ4Eo%2BqwAZs%3D
解锁Jenkins,必要按照提示文件,贴入内容
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/60c57e5a65a341a7b81c67bcb43ea35f~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=ISu%2FauLNsPMmswdOOVu0DoYPoDA%3D
选择保举的插件
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/730562e2e8bb4553a45d26d179ebc755~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=5ym3zIG4wnzR1fp%2BAtpOpSwyGqk%3D
默认插件安装进行中...
[*]跳过新账号添加,使用admin账号, 记得登陆后必要修改密码,否则再次登陆照旧必要输入安装时的长字符串
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/994cd3e559574c82ab3f50a25e30181a~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=gvdM1kh3oKPC%2BA31dlMhmaUM3xo%3D
暂不创建,使用admin账号
[*]实例配置,选择默认即可
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/6853fdc6cf68484a94d12731442b6c37~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=D0MG9uC8Uaf%2BbVDKbrVFaqfsqr4%3D
选择默认
构建
[*]修改之前演示demo的pom.xml,修改localhost为本机ip地点(告急办理容器内对服务的访问),并推送到gitea仓库
<distributionManagement>
<repository>
<id>local-releases</id>
<url>http://192.168.1.243:8081/repository/release/</url>
</repository>
<snapshotRepository>
<id>local-snapshots</id>
<url>http://192.168.1.243:8081/repository/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>local-repo</id>
<url>http://192.168.1.243:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
[*]配置jenkins的maven,ant配置 Dashboard > Manage Jenkins > Tools
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/294f5d047d914272abb075b1705dabb2~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=rnpnr%2BBjzQjyTAt19nLB3ZJ8Khs%3D
配置本地maven,ant
[*]创建job,采用自由风格
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/3563a124a8f44975ae0e9a0acf0e1534~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=FHyuof%2BeMOjPMISg4ld0qQNwsP8%3D
create a job
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/075cbcf4252c497d82d41c3f72456a4e~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=RQfS%2BQZ3B3gFQoG4UWzYvq2bEnY%3D
选择自由风格,注意黄色使用Pipeline模式(本次不考虑)
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/59703ed7a6f64e9ea3e1c95c0e879e33~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=1L%2Ffpj0P80spR6SAE37OkqE2d0Y%3D
设置丢失模式,防止构建消耗磁盘空间
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/a476679ac0b24d33a2bb1f23e5779731~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=C%2FybqEXTso%2FEgNQ%2Fq7YflWStgVw%3D
添加仓库
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/26815402ee644e5792acfbcd396cfd2a~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=dqaPFMJH%2Fp15csZ5%2FCwXj3WUAmA%3D
增加gitea账号
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/4678e88ccf33499f84c53c3d9098cb8a~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=50LjcCPqkBe1Gen%2BQjUxfbXr4LI%3D
选择上一步添加的账号
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/7622644658354b4aac1d9ee3178ababa~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=m2SqXgsukn6grrr4vNWViVYXjF0%3D
选择分支,注意默认是master,必要修改仓库对应的分支,本次必要修改为main
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/5ce2468c7d3043699957b318ed8aca2a~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=%2Bkj2L8vkMcELYdhEInF%2F4gX4TP4%3D
选择maven编译
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/3410a7bb1b024c8ab4a93fed6a4172df~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=svN7rOGkauyjLkdu%2Br1d70%2ByrsE%3D
注意:下拉选择maven本地安装,不必要以mvn开头,填写内容为输入的参数
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/be1772bb17604b0883507205c8a268c6~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=31pdq0UgUYJ4M6eAbT%2F5B9U9Q9w%3D
立即触发
[*]编辑结果
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/0b70aa451d524c89bf2a91b68dcef7ed~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=k%2FOo6ag31OhbzXx874XP0dVojW0%3D
查看日志,发布乐成
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/4545f88f80ea404fb71f8c07ec0bb701~tplv-73owjymdk6-watermark.image?policy=eyJ2bSI6MywidWlkIjoiNTM2MjE3NDA1ODk0NDg4In0%3D&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1722263330&x-orig-sign=74LNYSo48cT7okTbX%2Fdv2UT8P8E%3D
可以看到最新的快照版本
参考
以上内容已经分享到百度网盘,可以下载参考,私信复兴"自动化CI/CD之jenkins"
链接: https://pan.baidu.com/s/105kLtbsOj1P1l1Eut-o-6g?pwd=
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]