Ubuntu Jenkins+gitlab使用

最近开始接触Jenkins,本文将记录一些使用的方法以备日后参考使用。
环境为VM ubuntu

Jenkins安装

首先要确保拥有java环境,在此不做过多阐述,自行谷歌。

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

依次安装,然后默认用户名为jenkins ,配置文件在 etc/default/jenkins中,可以更改端口号等相关配置,密码在 /var/lib/jenkins/secrets/initialAdminPassword中,如果没有权限访问可以修改文件夹权限。

访问通过ip:8080在浏览器中访问。(8080)为默认端口

更新

sudo apt-get update
sudo apt-get install jenkins

卸载

先卸载Jenkins和依赖
后卸载相关配置

sudo apt-get remove jenkins
sudo apt-get remove --auto-remove jenkins

sudo apt-get purge jenkins
sudo apt-get purge --auto-remove jenkins

查看 Jenkins 的运行状态
sudo service jenkins status

启动 Jenkins 服务
sudo service jenkins start

重启 Jenkins 服务
sudo service jenkins restart

停止 Jenkins 服务
sudo service jenkins stop

gitlab安装

首先安装相关的依赖

sudo apt-get install curl openssh-server ca-certificates postfix

安装postfix时候需要选择internet site

《Ubuntu Jenkins+gitlab使用》 图片.png

一般要是卡就稍微等一下

填写服务器ip地址(最好不要填写域名,以防万一)

《Ubuntu Jenkins+gitlab使用》 图片.png

安装gitlab

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo apt-get install gitlab-ee

《Ubuntu Jenkins+gitlab使用》 图片.png

配置gitlab

sudo vi /etc/gitlab/gitlab.rb

GitLab默认会占用80、8080和9090端口。Jenkins默认也会使用8080端口,所以,这一步操作将会修改GitLab的默认端口为11000、11001和11002。
更改配置

external_url 'http://127.0.0.1'

改为

external_url 'http://<你的服务器地址或域名>:11000'
 # unicorn['port'] = 8080

改为

unicorn['port'] = 11001
#prometheus['listen_address'] = 'localhost:9090'

改为

prometheus['listen_address'] = 'localhost:11002'

配置生效和启动

sudo gitlab-ctl reconfigure

一定要取消注释

未修改配置启动

sudo gitlab-ctl start
sudo gitlab-ctl stop

《Ubuntu Jenkins+gitlab使用》 图片.png

有时候会出现502错误
1 unicorn原8080默认端口被容器中别的进程已经占用,必须调整为没用过的
2 gitlab的timeout设置过小,默认为60

external_url   13行
gitlab_rails['webhook_timeout']   104行  时间太短了,建议设置为90
gitlab_workhorse['auth_backend']   550行
unicorn['port']    617行
prometheus['listen_address']    1274行
注意:gitlab_workhorse[‘auth_backend’] 和unicorn[‘port’] 必须为同一端口号
一直报502,开新窗口,不断刷新,然后好了……………..

《Ubuntu Jenkins+gitlab使用》 图片.png

可能需要注册登录
然后新建项目

《Ubuntu Jenkins+gitlab使用》 图片.png
《Ubuntu Jenkins+gitlab使用》 图片.png

每个项目都会有一些相关的配置,下文会用到

《Ubuntu Jenkins+gitlab使用》 图片.png

进入jenkins 系统管理->插件管理

《Ubuntu Jenkins+gitlab使用》 图片.png

安装GitLab Plugin Git Plugin两个插件
有的可能已经安装过了

《Ubuntu Jenkins+gitlab使用》 图片.png

获取项目的private token
在Gitlab
项目主页->Setting-CI/CD Settings->General pipelines settings获取

在jenkins中进行配置
打开 系统管理->系统设置->配置中拉取gitlab

《Ubuntu Jenkins+gitlab使用》 图片.png

connection name 随便填写
gitlab host URL 填写gitlab的地址,ip:端口号, credentials添加jenkins

《Ubuntu Jenkins+gitlab使用》 图片.png
《Ubuntu Jenkins+gitlab使用》 图片.png

选择GitLab API token

《Ubuntu Jenkins+gitlab使用》 图片.png

选则刚刚新建的GitLab API token

保存

在jenkins中
打开 系统管理->系统设置->配置中拉取git plugin

《Ubuntu Jenkins+gitlab使用》 图片.png

填写刚刚记录的配置

Jenkins Job

在jenkins里,一个任务叫做一个job。一般我们的项目会有多个分支,比如开发分支和产品分支,我们可以对每一个分支都新建一个job,比如,我们对开发分支创建一个测试的job,每次有代码提交就自动运行一次测试,对产品分支创建一个打包的job,每次有代码提交就运行打包任务。

创建一个Jenkins Job

创建一个自由风格的软件项目

进入GitLab settings -> SSH Keys

《Ubuntu Jenkins+gitlab使用》 图片.png

从gitlab以SSH方式拉取或提交代码需要用到这个SSH 秘钥,哪台机器需要从gitlab上拉取代码,就在哪台机器上生成一次SHH Key,因此,在jenkins服务器上,以及你的开发PC上,都需要生成SSH密钥。

windows下生成SSH密钥

安装GIT
打开GIT Bash

ssh-keygen -t rsa -C "<填写一些文字作为注释,方便管理>" -b 4096

此时,会生成文件:id_rsa.pug
复制密钥至SSH key中进行添加
然后就可以使用之前给的命令进行项目的提交了。

配置job

打开jenkins,进入job

《Ubuntu Jenkins+gitlab使用》 图片.png

将Gitlab的git地址放进去

《Ubuntu Jenkins+gitlab使用》 图片.png

选择add
选择SSH Username with private key

《Ubuntu Jenkins+gitlab使用》 图片.png

选择apply后可能会有报错
如果是git权限不够的话,请更换jenkins用户进行SSH生成
解决方案如下
https://blog.csdn.net/u010947098/article/details/60965469

最后需要在gitlab创建分支。默认gitlab是没有分支的。

设置发送邮件

安装Email Extension Plugin插件
开通SMTP服务(此处以qq邮箱为例,图片均来自网络)
设置->账户->开启POP3/SMTP服务->短信验证->获取第三方授权码

《Ubuntu Jenkins+gitlab使用》 图片.png
《Ubuntu Jenkins+gitlab使用》 图片.png

《Ubuntu Jenkins+gitlab使用》 图片.png

《Ubuntu Jenkins+gitlab使用》 图片.png

《Ubuntu Jenkins+gitlab使用》 图片.png

进入jenkins 系统管理->系统设置

《Ubuntu Jenkins+gitlab使用》 图片.png

必须在Jenkins location中设置系统管理员邮箱地址

《Ubuntu Jenkins+gitlab使用》 图片.png

在Post-build Actions配置邮箱地址

《Ubuntu Jenkins+gitlab使用》 图片.png

构建触发器

build periodically中设置

* * * * *
(五颗星,中间用空格隔开)

第一颗表示分钟,取值0~59
第二颗表示小时,取值0~23
第三颗表示一个月的第几天,取值1~31
第四颗表示第几月,取值1~12
第五颗表示一周中的第几天,取值0~7,其中0和7代表的都是周日
######1.每30分钟构建一次:
H/30 * * * *
######2.每2个小时构建一次
H H/2 * * *
######3.每天早上8点构建一次
0 8 * * *
######4.每天的8点,12点,22点,一天构建3次
0 8,12,22 * * *
(多个时间点,中间用逗号隔开)

安装Gitlab Hook插件

配置jenkins工程

在jenkins工程页面,找到构建触发器,勾选Build when a change is pushed to GitLab

《Ubuntu Jenkins+gitlab使用》

选择高级配置,生成secret token,记录备用

《Ubuntu Jenkins+gitlab使用》 图片.png

配置GitLab

选择GitLab工程 Settings -> Integrations 填写刚刚保存内容

《Ubuntu Jenkins+gitlab使用》 图片.png

《Ubuntu Jenkins+gitlab使用》 图片.png

选择Add webhook

注意:如果发现gitlab禁止本地访问,解决办法如下:

登录GitLab管理员账号,账号为:admin@example.com,密码为第一次登录的密码,选择Configure GitLab->settings->outbound requests

《Ubuntu Jenkins+gitlab使用》 图片.png

官方文档如下:https://docs.gitlab.com/ee/security/webhooks.html

最后测试,返回200即为成功。

构建node环境

安装node插件。在系统管理->全局工具配置->NodeJs中

《Ubuntu Jenkins+gitlab使用》 图片.png

在jenkins中 构建触发器->Build Environment

《Ubuntu Jenkins+gitlab使用》 图片.png

构建Execute shell操作

在jenkins中 构建触发器->Build

《Ubuntu Jenkins+gitlab使用》 图片.png

开始构建

在jenkins中 Job->Build Now

《Ubuntu Jenkins+gitlab使用》 图片.png

然后进入Console Output便可以查看控制台输出信息

(示例代码由express myapp建成)

《Ubuntu Jenkins+gitlab使用》 图片.png
《Ubuntu Jenkins+gitlab使用》 图片.png
《Ubuntu Jenkins+gitlab使用》 图片.png

就此我们完成了Jenkins+gitlab的集成测试部署等功能。

参考文章:https://blog.csdn.net/ruangong1203/article/details/73065410

有兴趣可以加入JavaScript交流群,和大佬们一起成长!!!

群号:348108867

《Ubuntu Jenkins+gitlab使用》 图片.png

    原文作者:差很多先生CL
    原文地址: https://www.jianshu.com/p/c9517402daaf
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞