Jenkins入门系列(保姆级文档)

更多博客:我的个人博客

大家好,我是一根甜苦瓜。

今天来分享如何从0到1玩转Jenkins。

主要目标:

  1. 在服务器上安装Jenkins
  2. 配置Jenkins,包括源的配置,插件的安装等
  3. jenkins 部署一个 Go 项目。

jenkins

Jenkins 是一个开源的自动化服务器,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 可以通过插件扩展其功能,例如构建、部署和自动化软件项目。

官网: https://www.jenkins.io/doc/book/installing/linux/#debianubuntu

安装Jenkins

下面演示基于ubuntu 20.04 安装 Jenkins 的过程

1. 安装Java

Jenkins 是基于 Java 开发的,我们需要先在系统上安装 Java 环境。

$ sudo apt update
# 安装openjdk-11-jre
$ sudo apt install openjdk-11-jre
# 验证Java是否安装成功
$ java -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

2. 安装Jenkins

复制下面的命令即可安装jenkin

## 1. 导入jenkins的key
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

## 2. 添加源
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null

# 3. 安装jenkins
sudo apt-get install jenkins

查看Jenkins的启动状态,命令为 systemctl status jenkins

在这里插入图片描述

3. 首次启动

在这里插入图片描述
首次启动Jenkins,需要查看初始密码,命令为 sudo cat /var/lib/jenkins/secrets/initialAdminPassword

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
b10156ae772d47a4b19a946e96364fe5

然后就跳转到了【安装插件】的页面

这里我们先不安装任何插件。原因是此时下载插件的源是国外的,国内访问速度慢,等我们后面更换了国内的源之后,再安装对应的插件会快很多。

点击 【选择插件来安装

在这里插入图片描述
点击【】,不安装任何插件,然后next,进入创建用户界面
在这里插入图片描述
创建一个管理员账户,然后保存并完成
在这里插入图片描述

接下来指定端口,这里可以修改为自己喜欢的端口,这里我选择默认使用 8080,直接点击 【保存并完成
在这里插入图片描述

接下来就是安装完成,点击【开始使用Jenkins】,就可以进入到Jenkins的首页了。

在这里插入图片描述

配置Jenkins

上面的 jenkins 没有安装任何的插件,这一节主要来讲怎么修改 jenkins 的插件下载源,以及安装一些常用的插件

1. 修改插件下载源

首先停止jenkins的运行,命令为 sudo systemctl stop jenkins。 然后寻找源的配置文件

$ sudo find / -name *.UpdateCenter.xml
find: ‘/run/user/1000/doc’: 权限不够
find: ‘/run/user/1000/gvfs’: 权限不够
/var/lib/jenkins/hudson.model.UpdateCenter.xml

修改找到的配置文件 /var/lib/jenkins/hudson.model.UpdateCenter.xml

# 修改前
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>


# 修改后 替换为清华的源
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

sudo systemctl start jenkins 重启jenkins,完工!我们验证一下源是否修改完成

在这里插入图片描述
下拉页面到底部,查看
在这里插入图片描述
如下图,页面底部的源地址就是我们刚才配置的清华源地址,没问题。
在这里插入图片描述

2. 安装插件

安装插件的思路都是一样的,我们这里主要演示安装中文插件,后续其他插件安装流程都类似。

点击左侧的"系统管理",然后点击"插件管理"

2. 安装插件

安装插件的思路都是一样的,我们这里主要演示安装中文插件,后续其他插件安装流程都类似。

点击左侧的"系统管理",然后点击"插件管理"
在这里插入图片描述
这次我们选择 Available plugins,然后搜索中文插件,找到【“Chinese (Simplified) - 简体中文”】,点击安装即可。
在这里插入图片描述
安装完记得重启
在这里插入图片描述
默默等待吧
在这里插入图片描述
当然我们也可以自己重启系统的 jenkins 服务,或者在页面中使用 127.0.0.1:8080/restart 重启服务

在这里插入图片描述

点击确认,之后 jenkins 就会执行重启
在这里插入图片描述

再次登录 jenkins 发现已经汉化,虽然汉化得不是很完美。。。。。

在这里插入图片描述

基于用同样的方式大家自行安装常用的插件,比如: git,ssh,docker,pipeline 等.

3. 配置gitee/gitlab 凭证

在这里插入图片描述
如下图,点击Credentials(如果服务器上没有安装git环境,是看不到这个按钮的)
在这里插入图片描述
然后鼠标悬停在图示按钮上,即可点击add credentials

在这里插入图片描述
按照要求填写gitee/gitlab的账号密码,以及描述最后点击create即可。

在这里插入图片描述

用Jenkins部署项目

我们这里以一个 Go 项目为例,演示如何用 Jenkins 部署项目。(部署采用的是shell命令部署GO项目的二进制可执行文件)

1. 部署逻辑

在这里插入图片描述

从上图中,不难看出,整体的部署逻辑还是十分清晰的,Jenkins主要负责的就是自动化构建:

  1. 拉取最新的代码
  2. 下载依赖,并编译打包项目
  3. 将打包好的项目上传到服务器
  4. 运行这个项目

而且这些流程基本上都是通过 Shell命令来实现的。下面就在github上创建一个项目,并演示如何用jenkins自动化部署这个项目。地址为:https://github.com/M-500/deploy-go-demo

1. 创建一个自由风格的项目

回到 Jenkins首页,点击【新建项目(New Item)】

在这里插入图片描述
选择创建自由风格的项目,并创建一个项目名称,这里我取名为 deploy-go-demo,然后点击 OK

在这里插入图片描述

接下来就自动跳转到了配置页面,这里我们主要配置源码管理构建触发器,以及构建shell命令。先将项目的git地址填入,同时配置好git的凭证信息和分支名称。
在这里插入图片描述
接下来就是配置构建的shell命令了,这里我们不需要拉取代码,因为每次运行的时候Jenkins都会自动pull拉取。主要逻辑就是下载依赖,编译打包,上传到服务器,停止旧的进程,启动新的进程。
在这里插入图片描述
写入Shell命令
在这里插入图片描述
之后保存就行了,跳转到如下页面
在这里插入图片描述
启动运行一下试试,点击Build,就会自动执行所有的shell命令执行自动化部署。
在这里插入图片描述

这里把Shell命令粘出来了

cd  binary-deploy
go mod tidy 
# 编译成Linux可执行文件(文件名为my-app)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build  -o my-app .
# 将可执行文件发送到远端(这里要配置scp免密传输,不然会上传失败)
scp ./my-app user@A.B.C.D:/Workspace/demo
scp ./build.sh user@A.B.C.D:/Workspace/demo
# 执行远程shell,将服务器的旧进程杀死
ssh user@A.B.C.D "
pid=\$(ps aux | grep 'my-app-server' | grep -v grep | awk '{print \$2}');
if [ -n \"\$pid\" ]; then
  echo '关闭远端进程id为 : '\$pid;
  kill -9 \$pid;
else
  echo '远端进程尚未启动';
fi;
# 启动新进程 (由于启动采用的nohup 守护进程的方式,不知道为啥Jenkins执行nohup会阻塞,所以把启动命令扔进了shell脚本中)
ssh user@A.B.C.D "cd /Workspace/demo && ./build.sh"

总结

Jenkins 是一个非常强大的自动化工具,可以用来自动化构建、测试和部署软件。后续还有很多功能可以继续挖掘,比如pipelinewebhook等等。总而言之,作为一个多功能牛马,Jenkins是打工的必备技能,大家有空还是多玩玩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一根甜苦瓜

祝老板身体棒棒,夜夜笙歌

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值