一、jenkins
Jenkins是一个开源的、提供友好操作界面的自动化持续集成(CI)服务工具。需要注意的是Jenkins基于Java环境运行,安装时需要先安装对应Java环境再安装Jenkins, 官方安装文档,本文主要记录容器安装运行docker in docker的过程。
默认访问地址: http://localhost:8080/
二、docker安装
1.镜像
使用长期支持 (LTS) 版本 (可用于生产)如:jenkins/jenkins:lts、jenkins/jenkins:2.387.1-lts,注:镜像最好指定版本
2.运行
docker run --name jenkins \
-u root:root -d \
-p 8088:8080 \
-p 8089:50000 \
--restart always --privileged \
-v /mnt/disk1/docker/jenkins:/var/jenkins_home \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \
-e TZ=Asia/Shanghai \
jenkins/jenkins:lts
注:a.安装插件提示版本过低
设置docker镜像加速可能会获取不到镜像或者lts的镜像不是最新版本导致插件安装失败,登录后输入http://ip:8088/manage/更新Jenkins版本或进入插件管理设置插件国内镜像地址 (如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 设置镜像加速据说需要替换json中的地址重启才会生效,我这里速度还可以就没有替换镜像地址),重启重写安装插件即可。
b.设置jenkins_home目录映射,是持久化Jenkins信息,其它目录映射为docker in docker所需,不同机器docker文件映射不同
#宿主容器均为CentOS
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7 \
#宿主为CentOS,容器为debian
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \
#宿主容器均为Debian
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
三、ubuntu安装
1.安装java
sudo apt update
sudo apt install fontconfig openjdk-17-jre
#查看版本
java --version
2.安装jenkins
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
3.修改端口
sudo vi /lib/systemd/system/jenkins.service
[Service]
Environment="JENKINS_PORT=8081"
...
#设置自动启动
sudo systemctl enable jenkins
#查看默认密码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
四、centos安装
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload
#设置自动启动
sudo systemctl enable jenkins
五、使用
1、中文插件
Locale plugin
Localization: Chinese (Simplified)
进入appearance(http://localhost:8080/manage/appearance/)进行设置
2、重启jenkins
#方式一、直接在浏览器添加restart
http://localhost:8080/restart
#方式二、重启jenkins服务
systemctl restart jenkins
3、移除失败且不需要的插件
#1、进入目录 jenkins/plugins
cd /var/lib/jenkins/plugins
#2、删除该目录插件名称.JPI文件
rm -rf github*
#3、重启
systemctl restart jenkins
4、发布注意项
a、基础环境准备
Publish Over SSH
:jenkins插件ssh 远程拷贝(系统配置中 ,设置Publish over SSH ->Passphrase 及 SSH Servers)
注意项目
-
系统配置中设置ssh server 远端路径Remote Directory,如果不设置默认为用户根路径,无论配置的是否绝对路径
-
配置Source files多次目录结构需要设置**,如 dist/**
-
如果是多层文件夹注意移除文件夹前缀,即配置Remove prefix 参数
-
Exec command脚本路径是基于系统配置ssh server的远端路径(工作目录需要重新指定)
git
:宿主机安装(一般Jenkins配置环境时捆绑添加,不需要设置)
Generic Webhook Trigger
:通用webhook配置较麻烦但是灵活
触发请求地址
http://<jenkins url>/generic-webhook-trigger/invoke/invoke?token=<token>
配置
0、Post content parameters 新增
1、Variable(变量):ref
2、Expression(表达式,并选择请求类型):$.ref
3、Token(令牌):设置令牌
4、Optional filter->
Expression(过滤表达式):^refs/heads/(master|test_version)$(指定请求中mater、test_version分支触发)
Text(通过变量ref,填入文本):$ref
5、配置轮询 SCM,每三分钟轮询一次 H/3 * * * *
b、node发布环境
Node JS
:需要在全局工具配置中配置,选择node版本(如果使用pnpm打包在Global npm packages to install中写入pnpm)
#1、执行shell
set -e
pnpm -v
pnpm install --registry https://registry.npmmirror.com
pnpm build:dev
#2、Send files or execute commands over SSH
#Source files(需要上传的文件) -> dist/**
#Remove prefix (上传时需要移除的前缀) -> dist
#Remote directory (目标路径,基于系统中配置的Remote directory路径)
#Exec command (执行脚本,vue打包需要先删除静态资源避免冗余)
cd <Remote directory,这里输入绝对路径>
rm -rf assets
cp -rpv temp/* .
rm -rf temp
c、java发布环境
Maven Integration
:jenkins插件 Maven环境,需要在全局工具配置中配置选择版本
java
:宿主机下载java jdk (全局工具配置中,设置JDK解压自动下载,设置解压路径为/var/jenkins_home/tools/hudson.model.JDK/<配置的jdk名称(jdk20)>/jdk-20,解压路径根据执行情况调整)
d、全局工具配置地址
分别在全局配置中配置 mave、java sdk(http://
Comments NOTHING