安装Jenkins Master
通过二进制安装
略过。。。
通过容器安装
通过 https://hub.docker.com/r/jenkins/jenkins/tags?page=1&name=2.318 过滤版本
# 定义版本,例如centos7+jdk8的jenkins
jenkinsTag=2.318-centos7-jdk8
# 定义jenkins主服务访问端口
jenkinsPort=18080
# 定义容器所用的dns
jenkinsDns=119.29.29.29
# 定义jenkins的web域名
jenkinsDomain=
docker volume create jenkins_home
docker run --name jenkins_${jenkinsTag} \
--hostname ${jenkinsDomain} \
--restart always \
--mount 'type=volume,src=jenkins_home,dst=/var/jenkins_home' \
-p ${jenkinsPort}:8080 \
-p 50000:50000 \
--dns ${jenkinsDns} \
-d jenkins/jenkins:${jenkinsTag}
echo "docker run --name jenkins_${jenkinsTag} --hostname ${jenkinsDomain} --restart always --mount 'type=volume,src=jenkins_home,dst=/var/jenkins_home' -p ${jenkinsPort}:8080 -p 50000:50000 --dns ${jenkinsDns} -d jenkins/jenkins:${jenkinsTag}" > docker-jenkins-install.command
- 调用宿主机 docker 命令所需的依赖(不一定可用,特别是最后一个库文件,不同版本位置不一定一致)
💥此操作仅当你需要在master上运行工程,并且工程中涉及到了docker命令。
✨推荐在宿主机上以二进制方式运行从节点,授权从节点代理程序的执行用户访问宿主机docker命令
--mount 'type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock' \
--mount 'type=bind,src=/usr/bin/docker,dst=/usr/bin/docker' \
--mount 'type=bind,src=/usr/lib64/libltdl.so.7,dst=/usr/lib/x86_64-linux-gnu/libltdl.so.7'
- 如果私有git不对外,则添加额外的host解析
#定义私有git服务的域名
gitlabDomain=
#定义私有git服务的ip
gitlabWanIP=
--add-host $gitlabDomain}:${gitlabWanIP}
- 宿主机添加hosts内网解析
localIP=`curl http://100.100.100.200/latest/meta-data/private-ipv4`
echo "${localIP} ${jenkinsDomain}" >> /etc/hosts
上述localIP的获取仅适用于阿里云ecs,如果你不是,则可以通过下面命令获取,不一定保证可行
localIP=ip addr show | grep -A3 " eth0" | grep "inet " | awk -F"/" '{print $1}' | awk '{print $NF}'
通过访问WEB界面初始化安装过程
浏览器访问:http://
- 解锁秘钥:
根据页面提示访问【容器里的】/var/jenkins_home/secrets/initialAdminPassword
获得解锁秘钥
docker exec -it jenkins_${jenkinsTag} /bin/bash cat /var/jenkins_home/secrets/initialAdminPassword
- 插件安装:选择【安装推荐的插件】
- 管理员用户创建,并点击【使用admin账户继续】,并点击【保存完成】
添加Jenkins 从节点
默认没有独立的Node节点,也就是说默认情况下构建是运行在Jenkins Master本身所在容器上。
但是我们可以添加一个额外的Node节点,并安装构建所需的环境。
路径:[manage jenkins]-[manage nodes and clouds]-[create node] - 填入agent名-创建,随后参照下图配置
保存之后,在列表里点击创建的【agent01】,Jenkins 会列出创建命令。
✨在使用列出的命令之前,需要提前在执行命令的系统环境中满足两个条件:
-
需要提前在Node节点上安装一个jdk环境
-
需要先下载代理程序 agent.jar,下载地址位于Jenkins Master服务:http://${jenkinsDomain}:18080/jnlpJars/agent.jar
满足上述条件之后,根据 Jenkins 列出的命令,执行下列命令:
# 创建目录(截图里填入的地址:/<远程工作目录>/<内部数据目录>)
mkdir -p /export/jenkins_agent_home/remoting
# 授权密码(从jenkins列出的命令里可以拿到)
echo 6ffa296c09a3bee21e7217d > secret-file
# 运行命令
nohup java -jar agent.jar -jnlpUrl http://${jenkinsDomain}:18080/computer/agent01/jenkins-agent.jnlp -secret @secret-file -workDir "/export/jenkins_agent_home" -failIfWorkDirIsMissing >> agent.log &
# 将运行命令写入本地文件,方便之后启动
echo "nohup java -jar agent.jar -jnlpUrl http://${jenkinsDomain}:18080/computer/agent01/jenkins-agent.jnlp -secret @secret-file -workDir "/export/jenkins_agent_home" -failIfWorkDirIsMissing >> agent.log &" > jenkins_agent.command
配置Jenkins 从节点构建环境
- 安装awscli、ansible、aliyun
cd /export/jenkins_agent_home
[[ -d src ]] || mkdir src
cd src
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
mkdir ~/.pip/
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
yum install python3
python3 get-pip.py
pip install awscli
pip install ansible
curl 'https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz' -o aliyun-cli-linux-latest-amd64.tgz
tar xf aliyun-cli-linux-latest-amd64.tgz
cp aliyun /usr/bin/
如果 get-pip.py 无法下载,可以访问链接:https://www.aliyundrive.com/s/aVJppvovbCf 下载
- 调用宿主机docker命令
usermod -aG docker jenkins
WEB界面的额外配置
其它插件安装
实用工具集合插件:Pipeline Utility Steps
输出着色: AnsiColor
新界面:Blue Ocean
docker插件:Docker Pipeline、Docker
通用webhook触发器:Generic Webhook Trigger
gitlab插件:gitlab,GitLab Branch Source
用户角色管理:Role-based Authorization Strategy
HTTP请求插件:HTTP Request
Kubernetes:Kubernetes、Kubernetes CLI
- kubernetes 插件提供额外的agent功能
- kubernetes cli 插件提供了一些 pipeline 扩展语法
多分支基于webhook扫描插件:Multibranch Scan Webhook Trigger
openssl rand -hex 8
可以生成用户webhook的token- webhook地址示例:
http://<jenkins>/multibranch-webhook-trigger/invoke?token=e632bc43e840e631
多分支构建策略扩展插件:Pipeline: Multibranch build strategy extension
构建超时(最新版本默认已有):Build Timeout
构建期间用户信息(最新版本默认已有):build user vars plugin
中文包(最新版本默认已有):Localization: Chinese (Simplified)
时间戳(最新版本默认已有):Timestamper
工作空间清道夫(最新版本默认已有):Workspace Cleanup
用户和角色管理
-
安装插件 Role-based Authorization Strategy
-
启用插件 Configure Global Security 中启用 Role-Based Strategy 策略
-
配置全局角色和项目角色 Manage and Assign Roles - Manage Roles
全局角色Global roles 设置两个: admin 和 read
项目角色Project roles:每一个项目设置一个
Pattern:
.*\.<项目名>
权限: 看图
-
创建项目用户
-
分配角色 Manage and Assign Roles - Assign Roles
给管理员分配 admin,给项目用户分配 read 和 cp (cp是我设置的项目角色)
-
安装配置文件插件 Config File Provider
-
自动安装 git ,jdk,maven (这种方式只有在进行了一次构建后,才会安装)
-
maven 私服配置文件
-
通过 Config File Provider 添加一个项目maven配置
-
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id><Repository Policy名></id> <username></username> <password></password> </server> <server> <id><Repository Policy名></id> <username></username> <password></password> </server> </servers> <profiles> <profile> <id>< 仓库名 ></id> <repositories> <repository> <id><maven 仓库组或仓库ID></id> <url><maven 私服具体仓库组或仓库地址></url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>项目名</activeProfile> </activeProfiles> </settings>
-
然后构建项目的时候,构建环境-Provide Configuration files-Files,并且Build-高级-Settings file-Provided settings.xml
-