企业级——自动化CI/CD之jenkins 01

打印 上一主题 下一主题

主题 651|帖子 651|积分 1953

介绍

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、摆设、自动化, 满足任何项目的必要。
以上介绍引自官方
安装

本次安装使用docker运行ubuntu+openjdk-17作为基础镜像,挂载jenkins.war包和所需maven、nodejs、golang等第三方库。告急办理编译时对各个工具的需求,减少基础镜像的重复编译以及方便jenkins升级(只下载war包)。
尚有一种编译方式,在Jenkinsfile各个阶段,使用docker镜像进行按需编译,比如我必要编译golang代码,我可以使用golang基础镜像进行源码编译。本次不做介绍。

  • 准备运行war的环境镜像, 以ubuntu为基础构建openjdk:17镜像
  1. FROM hub.atomgit.com/amd64/ubuntu:23.10
  2. MAINTAINER clibing <wmsjhappy@gmail.com>
  3. ARG JDK_VERSION="17"
  4. ARG JAVA_OPTS="-XX:+PrintFlagsFinal"
  5. ARG JAVA_GC_LOG="/var/log/jvmgc.log"
  6. ENV JAVA_GC_LOG ${JAVA_GC_LOG}
  7. ENV JAVA_HOME /usr/lib/jvm/default-jvm
  8. # refs => http://calvin1978.blogcn.com/articles/jvmoption-7.html
  9. ENV JAVA_OPTS   -Djava.security.egd=file:/dev/./urandom \
  10.                 -XX:AutoBoxCacheMax=20000 \
  11.                 -XX:+UnlockExperimentalVMOptions \
  12.                 -XX:+UseCGroupMemoryLimitForHeap \
  13.                 -XX:+AlwaysPreTouch \
  14.                 -XX:+PrintCommandLineFlags \
  15.                 -XX:+PrintGCDateStamps \
  16.                 -XX:+PrintGCDetails \
  17.                 -XX:+PrintGCApplicationStoppedTime \
  18.                 -Xloggc:${JAVA_GC_LOG} \
  19.                 ${JAVA_OPTS}
  20. RUN apt update -y
  21. # RUN apt -y install fonts-dejavu fontconfig procps
  22. RUN apt -y install libnss3 iputils-ping net-tools
  23. # RUN apt -y install fonts-dejavu fontconfig procps openjdk-${JDK_VERSION}-jdk libnss3 iputils-ping net-tools \
  24. RUN apt -y install  openjdk-${JDK_VERSION}-jdk \
  25.     && ln -s /usr/lib/jvm/java-${JDK_VERSION}-openjdk-* /usr/lib/jvm/default-jvm
  26. RUN rm -rf /var/cache/apk/*
  27. ENV PATH=${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  28. WORKDIR /workdir
  29. CMD ["/bin/bash"]
复制代码
编译hub.linuxcrypt.cn/clibing/openjdk:17
  1. #########################################################################
  2. # File Name: build.sh
  3. # Author: clibing
  4. # mail: wmsjhappy@@gmail.com
  5. # Created Time: 五  7/19 09:28:24 2024
  6. #########################################################################
  7. #!/bin/bash
  8. export JDK_VERSION=17
  9. docker buildx build --platform=linux/amd64,linux/arm64/v8 \
  10.     --build-arg JDK_VERSION=$JDK_VERSION \
  11.     -t hub.linuxcrypt.cn/clibing/openjdk:$JDK_VERSION \
  12.     --push \
  13.     -f Dockerfile .
复制代码

  • 下载jenkins.war, apache maven, apache ant


选择Generic Java package (.war)


  • 启动jenkins
当前项目目录结构
  1. .
  2. ├── data
  3. │   ├── build                    编译目录,只是保留
  4. │   ├── m2repository             maven/conf/settings.xml中配置的localRepository位置
  5. │   └── sdk
  6. │       ├── ant                  编译依赖的工具ant
  7. │       ├── go                   golang sdk
  8. │       ├── install              下载的 tar.gz文件
  9. │       └── maven                apache maven
  10. ├── docker-compose.yml           docker编排
  11. ├── jenkins.war                  jenkins.war包
  12. └── ubuntu.openjdk               基础镜像制作
  13.     ├── Dockerfile
  14.     └── build.sh
复制代码
docker-compose.yaml编排文件
  1. name: jenkins
  2. services:
  3.   jenkins:
  4.     image: hub.linuxcrypt.cn/clibing/openjdk:17
  5.     container_name: jenkins
  6.     init: true # fix zombie process  需要启用init,防止编译时执行shell产生僵尸进程
  7.     privileged: true
  8.     security_opt:
  9.       - no-new-privileges:true
  10.     ports:
  11.       - 8080:8080
  12.     user: root
  13.     environment:
  14.       JENKINS_HOME: /data/jenkins
  15.       M2_HOME: /data/sdk/maven
  16.       GO111MODULE: on
  17.       GOPATH: /data/build/go
  18.       GOPROXY: https://goproxy.cn,https://proxy.golang.org,direct
  19.     volumes:
  20.       - ./jenkins.war:/opt/jenkins.war # 离线war包
  21.       - ./data/jenkins:/data/jenkins
  22.       - ./data/sdk:/data/sdk # apache maven, go sdk, other..
  23.       - /var/run/docker.sock:/var/run/docker.sock
  24.     labels:
  25.       - "traefik.enable=true"
  26.       - "traefik.http.routers.jenkins.rule=Host(`build.clibing.com`)"
  27.       - "traefik.http.routers.jenkins.tls=true"
  28.     networks:
  29.       - traefik
  30.       - spider-cluster
  31.     command: "java -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -jar /opt/jenkins.war --httpPort=8080"
  32. networks:
  33.   traefik:
  34.     external: true
  35.   spider-cluster:
  36.     name: spider-cluster
  37.     external: true
复制代码

  • 向导安装

解锁Jenkins,必要按照提示文件,贴入内容


选择保举的插件


默认插件安装进行中...


  • 跳过新账号添加,使用admin账号, 记得登陆后必要修改密码,否则再次登陆照旧必要输入安装时的长字符串

暂不创建,使用admin账号


  • 实例配置,选择默认即可

选择默认

构建


  • 修改之前演示demo的pom.xml,修改localhost为本机ip地点(告急办理容器内对服务的访问),并推送到gitea仓库
  1. <distributionManagement>
  2.       <repository>
  3.           <id>local-releases</id>
  4.           <url>http://192.168.1.243:8081/repository/release/</url>
  5.       </repository>
  6.       <snapshotRepository>
  7.           <id>local-snapshots</id>
  8.           <url>http://192.168.1.243:8081/repository/snapshots/</url>
  9.       </snapshotRepository>
  10.   </distributionManagement>
  11.   <repositories>
  12.         <repository>
  13.             <id>local-repo</id>
  14.             <url>http://192.168.1.243:8081/repository/maven-public/</url>
  15.             <releases>
  16.                 <enabled>true</enabled>
  17.             </releases>
  18.             <snapshots>
  19.                 <enabled>true</enabled>
  20.             </snapshots>
  21.         </repository>
  22.     </repositories>
复制代码

  • 配置jenkins的maven,ant配置 Dashboard > Manage Jenkins > Tools

配置本地maven,ant


  • 创建job,采用自由风格

create a job


选择自由风格,注意黄色使用Pipeline模式(本次不考虑)


设置丢失模式,防止构建消耗磁盘空间


添加仓库


增加gitea账号


选择上一步添加的账号


选择分支,注意默认是master,必要修改仓库对应的分支,本次必要修改为main


选择maven编译


注意:下拉选择maven本地安装,不必要以mvn开头,填写内容为输入的参数


立即触发


  • 编辑结果

查看日志,发布乐成


可以看到最新的快照版本

参考

以上内容已经分享到百度网盘,可以下载参考,私信复兴"自动化CI/CD之jenkins"
链接: https://pan.baidu.com/s/105kLtbsOj1P1l1Eut-o-6g?pwd=

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表