Some jenkins settings

Jenkins连接到特定 gitlab project 的特定branch

我采用的方法是在pipeline的script中使用git命令来指定branch。如下:

        stage('Clone repository') {
            steps {
                git branch: 'develop',
                credentialsId: 'gitlab-credential-id',
                url: 'http://gitlab.com/repo.git'
            }
        }
  1. 注意这里的credential最好用username/password type,其他类型的credential可能会报Warning: CredentialId "xxx" could not be found.错误。
  2. 如果报stderr host key verification failed.错误,这是因为服务器没在ssh的known_hosts里面。只需在jenkins master机器上用jenkins用户连接一次git server。
    比如执行git ls-remote -h http://gitlab.com/repo.git HEAD,并对随后的ssh warning消息输入"yes"。
    个人建议使用HTTP协议连接,因为ssh协议的url格式我没搞明白,不知该如何指定用户名。。。

参考链接1
参考链接2
参考链接3

Jenkins Gitlab webhook设置

参考链接

  1. 这里有个需要注意的地方,就是在jenkins中填用于gitlab连接的URL,填的是整个gitlab server的URL,而不是某个project的链接。
  2. 如果发现webhook test时发现类似报错:
Hook executed successfully but returned HTTP 403
Hook execution failed: java.lang.Exception: anonymous is missing the Job/Build permission at ...

则可参考链接中legshort的回答,添加secret token。

Jenkins 添加slave服务器

添加服务器并使用SSH连接时,常常出现一个报错:

No Known Hosts file was found at /var/jenkins_home/.ssh/known_hosts

Known Hosts是SSH中的一个概念。SSH会将所有连接过的节点保存在.ssh/known_hosts文件中。而陌生的节点,当然不在known host里面。
要解决上面的问题,只需要保证使用jenkins的用户在master节点上曾经通过ssh连接过slave节点即可。

此外,注意你在添加slave服务器的工作路径时,确保你在slave服务器上使用的用户可以访问那个路径。否则会报 permission 相关的错误。

Jenkins script中使用sudo命令

一般不推荐jenkins作为root用户运行。
但是作为一般用户运行时,script中有命令需要用到sudo的话,会报sudo: no tty present and no askpass program specified
我采用的解决方法是,编辑sudoer文件,使得用户在使用sudo时无需输入密码。(当然,首先需要该用户在sudo组里)。具体步骤参考链接。

在有些系统下,可能需要将改动放在sudoer文件的最后一行。

Jenkins邮件设置

推荐使用 Email Extension插件。
有两个地方需要注意:

  1. 邮箱的服务器地址要写对。
    比如QQ邮箱的服务器地址为smtp.qq.com,而企业邮箱的服务器地址为smtp.exmail.qq.com,两者不要搞混。
    至于端口、是否启用SSL等,在邮箱的设置页面中一般会有解释。
  2. 如果报错SMTPSenderFailedException: 501 mail from address must be same as authorization user,检查全局设置中的System Admin e-mail address与发送邮件的username是否一致。
    个人猜测,System Admin e-mail address中的内容属于authorization user。而设置的用户名/密码作authentication用,并且作为邮件中的from address。两者不一致,才会出现以上报错。

authentication证明你的身份,authorization证明你有这个权限

你可能感兴趣的:(Some jenkins settings)