jenkins☞安装和基本配置

阅读量: zyh 2020-03-25 12:26:44
Categories: > Tags:

安装Jenkins Master

https://github.com/jenkinsci/docker/blob/master/README.md

通过二进制安装

略过。。。

通过容器安装

通过 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
  1. 调用宿主机 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'
  1. 如果私有git不对外,则添加额外的host解析
#定义私有git服务的域名
gitlabDomain=
#定义私有git服务的ip
gitlabWanIP=
--add-host $gitlabDomain}:${gitlabWanIP}
  1. 宿主机添加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://:18080

  1. 解锁秘钥:

根据页面提示访问【容器里的】/var/jenkins_home/secrets/initialAdminPassword获得解锁秘钥

docker exec -it jenkins_${jenkinsTag} /bin/bash cat /var/jenkins_home/secrets/initialAdminPassword
  1. 插件安装:选择【安装推荐的插件】
  2. 管理员用户创建,并点击【使用admin账户继续】,并点击【保存完成】

添加Jenkins 从节点

默认没有独立的Node节点,也就是说默认情况下构建是运行在Jenkins Master本身所在容器上。

但是我们可以添加一个额外的Node节点,并安装构建所需的环境。

路径:[manage jenkins]-[manage nodes and clouds]-[create node] - 填入agent名-创建,随后参照下图配置

image-20211102164349471

保存之后,在列表里点击创建的【agent01】,Jenkins 会列出创建命令。

✨在使用列出的命令之前,需要提前在执行命令的系统环境中满足两个条件:

  1. 需要提前在Node节点上安装一个jdk环境

  2. 需要先下载代理程序 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 从节点构建环境

  1. 安装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 下载

  1. 调用宿主机docker命令
usermod -aG docker jenkins

WEB界面的额外配置

其它插件安装

https://plugins.jenkins.io/

实用工具集合插件:Pipeline Utility Steps

输出着色: AnsiColor

新界面:Blue Ocean

docker插件:Docker PipelineDocker

通用webhook触发器:Generic Webhook Trigger

gitlab插件:gitlabGitLab Branch Source

用户角色管理:Role-based Authorization Strategy

HTTP请求插件:HTTP Request

Kubernetes:KubernetesKubernetes CLI

多分支基于webhook扫描插件:Multibranch Scan Webhook Trigger

多分支构建策略扩展插件:Pipeline: Multibranch build strategy extension

构建超时(最新版本默认已有):Build Timeout

构建期间用户信息(最新版本默认已有):build user vars plugin

中文包(最新版本默认已有):Localization: Chinese (Simplified)

时间戳(最新版本默认已有):Timestamper

工作空间清道夫(最新版本默认已有):Workspace Cleanup

用户和角色管理

  1. 安装插件 Role-based Authorization Strategy

  2. 启用插件 Configure Global Security 中启用 Role-Based Strategy 策略

    image-20200515180703925

  3. 配置全局角色和项目角色 Manage and Assign Roles - Manage Roles

    全局角色Global roles 设置两个: admin 和 read

    image-20200515181449965

    项目角色Project roles:每一个项目设置一个

    Pattern: .*\.<项目名>

    权限: 看图

    image-20200515181359533

  4. 创建项目用户

  5. 分配角色 Manage and Assign Roles - Assign Roles

    给管理员分配 admin,给项目用户分配 read 和 cp (cp是我设置的项目角色)

    image-20200515181740598