介绍
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 install openjdk-${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
选择Generic Java package (.war)
当前项目目录结构- .
- ├── 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.sh
复制代码 docker-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
复制代码
解锁Jenkins,必要按照提示文件,贴入内容
选择保举的插件
默认插件安装进行中...
- 跳过新账号添加,使用admin账号, 记得登陆后必要修改密码,否则再次登陆照旧必要输入安装时的长字符串
暂不创建,使用admin账号
选择默认
构建
- 修改之前演示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
配置本地maven,ant
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企服之家,中国第一个企服评测及商务社交产业平台。 |