1. 登录jenkins
浏览器输入地址http://192.168.137.100:8080/
,并在弹出的界面中输入用户名与密码即可登录
2. 插件安装
登录之后进入系统管理:
选择插件安装:
安装如下插件:
- ssh: 执行远程脚本
- Gitlab: 继承gitlab使用
- Build Authorization Token Root: 构建授权token
- Gitlab hook: 钩子插件(找不到这个插件不知道为啥)
- Credentials: 签名证书管理插件(默认已经安装)
如果找不到,可以去官网进行下载:
https://plugins.jenkins.io/ui/search?sort=relevance&categories=&labels=&view=Tiles&page=1&query=Gitlab
3. 配置jenkins和gitlab密钥对(特别重要)
3.1 生成秘钥对
在jenkins服务器上通过命令方式生成密钥对,这样jenkins和gitlab就通过密钥进行验证
$ ssh-keygen -t rsa
一路回车 会生成/root/.ssh/目录,其中包含id_rsa,id_rsa.pub两个文件。其中带有.pub的表示公钥文件:
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
3.2 添加私钥到Jenkins
注意,在Jenkins中我们添加的是私钥!私钥!私钥!
把私钥文件id_rsa文件的内容添加到jenkins上:
# 通过下面指令显示私钥串:
$ cat ~/.ssh/id_rsa
在浏览器中打开jenkins,进入到系统管理----凭据----系统-----全局凭据中添加凭证:
选择指定密钥对类型输入秘钥私钥确认添加即可
3.3 添加公钥到gitlab
选择SSHkey:
直接在页面中添加秘钥即可。
主要这里我们添加的是公钥!
4. gitlab设置外发请求
gitlab和jenkins同在本地网络时,需要以管理员权限设置“外发请求”启用"允许Webhook和服务对本地网络的请求",如下:
5. 配置gitlab API访问认证(access token)以及操作权限
然后根据需要选择本令牌对应的使能权限功能即可:
下拉即可看到新创建的令牌:
翻到最上,有访问令牌内容,一定要先复制保存好,用于jenkins创建和gitlab通信的凭据:
6. jenkins配置访问gitlab的凭据
跟上面添加秘钥似的在Jenkins操作只不过选择“Giltab API token”:
至此,我们有了两个令牌:
7. jenkins授权启用’/project’端点以创建gitlab连接
往下拉找到gitlab并进行配置:
Connection name: 自定义即可
Gitlab host url: gitlab的访问地址
Credentials: 为创建的用于和gitlab通信的凭据
点击test connection,左边提示success即正常
后面点击add可以类似添加多个的这种使能。
8. jenkins中创建任务
点击New Item选项:
选择“构建一个自由风格的软件项目”
任务名字要与gitlab的proejct名字相同,如下:
接下来会进行项目相关配置:
点击“高级”,生成token(需要提前复制下来),如下:
9b8752b6657aa53ff89045b696773710
9. gitlab对应的project上,创建webhook
输入URL和凭据令牌,并使能标签推送事件以及合并请求事件:
凭据添加成功:
10. 进行信号测试
选择支持的事件,即可触发一次pipeline的构建,如下:
11. 在jenkins上查看执行记录
如下显示成功,表示在giltab进行推送代码之后进行的构建:
12. 进行触发测试
将gitlab上面的目标项目先clone到本地;
修改内容之后push上传;
可以看到Jenkins中会直接触发构建。
13. 更换Jenkins执行用户
默认搭建好环境相关Jenkins执行用户时jenkins,好多操作都涉及到权限问题或者编译完的东西其他用户没法修改访问,因此,最好更改下jenkins用户。
13.1 jenkins用户加入到root组
gpasswd -a root jenkins
13.1 修改Jenkins执行用户
$ sudo vi /etc/default/jenkins
将JENKINS_USER值指定为目标用户
# JENKINS_USER=$NAME => JENKINS_USER=ubuntu
13.2 修改文件夹权限
sudo chown -R jenkins:jenkins /usr/share/java/jenkins.war
sudo chown -R jenkins:jenkins /var/lib/jenkins/
sudo chown -R jenkins:jenkins /var/log/jenkins/
sudo chown -R jenkins:jenkins /var/cache/jenkins/
13.3 重启服务
$ sudo systemctl restart jenkins
或者
$ sudo service jenkins restart