光之使者 发表于 2024-7-23 08:49:18

企业级——自动化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]
查看完整版本: 企业级——自动化CI/CD之jenkins 01