今天打开打通jenkins流水线了,我用的jenkins版本是2.492.3
1.api token生成
首先是生成api token,点击头像以后,在security页签里,点击生成新token按钮即可生成(需要备份)
2. jenkins credential生成
然后在jenkins上配置credentials:
a. 在jenkins中配置credentials
connection name自定义
gitlab host url为gitlab主页地址
credential需要在gitlab生成,见2.c
点Test Connection,可以看到success
注:如果遇到错误302,表示url没有填gitlab主页目录
如果报错401,表示gitlab token无效
b. 多网卡用户
如果多网卡用户,遇到jenkins访问地址不对的情况,可以配置jenkins url来指定
c. gitlab分配access token
建议是单独给jenkins分配一个账号+维护者权限
然后进入Preferences->Access Tokens
点击add new token
勾选read_api, read_user, read_repository三个权限
然后token就生成成功了
3. gitlab trigger jenkins
接下来的步骤相对自由,我接下来首先做的是打通gitlab trigger jenkins
a. 配置webhook
进入jenkins项目页的Triggers页签,可以看到gitlab的webhook链接
进入gitlab的项目页
点击Setting->Webhook,点击add new webhook
在url里输入之前jenkins查到的webhook
勾选两个trigger后
即可完成webhook的设置
当然这里可能遇到两个问题:
i. 可能问题1
gitlab一直报错: Invalid url given
这个需要让管理员在网络页签里勾选这个选项
ii. 可能问题2
点击Test按钮,报错:
Hook executed successfully but returned HTTP 403 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 403 anonymous is missing the Job/Build permission</title> </head> <body><h2>HTTP ERROR 403 anonymous is missing the Job/Build permission</h2> <table> <tr><th>URI:</th><td>/project/xscholar</td></tr> <tr><th>STATUS:</th><td>403</td></tr> <tr><th>MESSAGE:</th><td>anonymous is missing the Job/Build permission</td></tr> <tr><th>SERVLET:</th><td>Stapler</td></tr> </table> <hr/><a href="https://jetty.org/">Powered by Jetty:// 12.0.17</a><hr/> </body> </html>
这是因为只有webhook并没有job build的权限
我试了一下说可以在url后面带token的形式,但是实践并无法解决这个问题
当前通过开启jenkins的匿名用户访问解决,如果你们的jenkins是纯公网服务,需要解决该问题
这里记一下,待打通部署流程解决