前言
本文使用jenkins结合gitee,docker实现kodcloud+mysql+redis+nginx集群部署
系统为centos7.9,已经配置好docker,docker加速镜像
使用主机如下
| 主机名 | IP | 作用 |
|---|---|---|
| T1 | 192.168.179.141 | jenkins |
| T2 | 192.168.179.142 | 部署kod节点 |
实现
- T1安装jenkins
- 安装jdk17
参考jenkins和java版本的适配jenkins的Java支持策略
#放在/usr/local内
sudo tar xf jdk-17.0.14_linux-x64_bin.tar.gz
sudo rm jdk-17.0.14_linux-x64_bin.tar.gz -f
#推荐保留版本编码如u441
mv ./jdk-17.0.14 /usr/local/
sudo ln -s /usr/local/jdk-17.0.14/ /usr/local/jdk
sudo cat >>/etc/profile<<'EOF'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile
java -version
- 安装jenkins服务端
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 install fontconfig -y
sudo yum install jenkins -y
- 修改system启动配置
sed -i 's#User.*#User=root#;s#Group.*#Group=root#;#JAVA_HOME#i\Environment="JAVA_HOME=/usr/local/jdk"' /usr/lib/systemd/system/jenkins.service
echo Environment="JAVA_HOME=/usr/local/jdk" >>
vim /usr/lib/systemd/system/jenkins.service
#注意:以下需要配置到[Service]中
User=root
Group=root
Environment="JAVA_HOME=/usr/local/jdk"
systemctl restart jenkins
进入jenkins
访问http://IP:8080进入jenkins,等待jenkins自动安装插件jenkins在进入配置完后可以修改访问地址,可以结合nginx配置,这里不配置
#查看管理员密码
cat /var/lib/jenkins/secrets/initialAdminPassword
- 添加jenkins管理节点
进入jenkins,配置节点
指定节点名为T1
指定工作目录为/app
指定标签kodbox (用于匹配项目)
指定Only build jobs with label expressions matching this node,仅构建与标签表达式匹配的项目,即项目中必须指定标签且与该节点匹配
- T2安装jenkins客户端agent2
curl -sO http://192.168.179.141:8080/jnlpJars/agent.jar
java -jar agent.jar -url http://192.168.179.141:8080/ -secret d19747da35a0a90223449f8f9c64fbe12699e42faa7ce189fd32767798fe7b73 -name T2 -webSocket -workDir "/app" >/dev/null &
这种方法比较简单,但是直接使用java后台运行难以长久,需要配置其他启动方式(后面介绍)
此时可以发现T2节点已经没有X了
- 安装git
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum repolist
yum install git -y
- 安装docker
yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo systemctl start docker
sudo systemctl enable docker
4.配置gitee仓库
创建仓库,推送代码步骤已略,这里只配置jenkins相关
代码仓库为KodCloudStack
ssh-keygen -t ed25519 -C "Gitee SSH Key"
cat ~/.ssh/id_ed25519.pub
ls ~/.ssh/
#私钥文件 id_ed25519,需要其内容配置到jenkins
#公钥文件 id_ed25519.pub,需要其内容配置到gitee
cat id_ed25519.pub
#请将'显示内容'配置到图中'参考命令'处5.项目构建
- 新建item(任务)
- 选择
freestyle project并填写任务名 - 进入configure任务配置界面
- General 常规



选择使用了discard old builds丢弃旧的构建防止日志过大
选择使用参数化构建,因为运行脚本START有两个可选内容,容器数据存储路径和域名(可以跳过,因为脚本设置了默认存储路径和域名)
选择限制项目运行的节点,因为节点选择了仅匹配标签的策略,所有使用对应标签选择该节点(图中jenkins已经显示匹配到了一个节点) - 源码管理

仓库URL需要到仓库获取,凭证即登录仓库的方式,需要user+passwd
其他默认 - Triggers

选择使用触发式远程构建,只要访问指定URL就可以触发构建,用于后面的触发脚本 - Build Steps
#测试变量
echo "new_home变量值为"$new_home
echo "new_web变量值为"$new_web
./START.sh <<EOF
$new_home
$new_web
EOF
- 构建
经过刚刚的配置,已经完成了任务的初始化,现在可以构建任务运行了
进入刚刚配置的kod项目,选择build with parameters(因为刚刚选择了参数化构建,一般只有build)
选择自定的选择项进行传参,他们会作为构建时的环境变量传入构建脚本 - 结果
构建成功
- 令牌触发
访问任务设置中设置的远程触发URL192.168.179.141:8080/job/kod/build?token=TEST
jenkins实现kodcloud容器集群部署出现的错误
因为出现的问题较多,单独写bolg描述
本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。


