写代码有AI,项目部署有Jenkins

380 阅读7分钟

我正在参加「掘金·启航计划」

1. Jenkins 环境安装(Docker)

通过 Docker 快速安装和配置 Jenkins 持续构建系统

核心内容:

  • Jenkins 的功能介绍
  • Jenkins 的安装演示

功能介绍

Jenkins 是一个能最大程度实现对手工操作进行自动化的任务管理和执行工具。并且它可以通过定时器或事件来自动触发运行这些任务。

安装 Docker

要使用 Jenkins 的话,其实需要安装多个软件,采用传统方式安装会比较复杂。

现在最流行的方式是使用 Docker 进行软件的安装,最为简便方便。

本章 Jenkins 的安装过程基于 Docker ,大家可先自行下载和安装好 Docker ,然后再安装 Jenkins。

Docker 下载地址:www.docker.com/products/do…

# 1、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 2、 查看docker版本,验证是否验证成功
docker -v

配置步骤

  1. 使用 docker pull 命令下载 Jenkins 的镜像文件

    docker pull jenkins/jenkins:lts-jdk11
    
  2. 通过 docker run 命令运行 Jenkinks

    docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
    

    运行过程中,控制台中会输出一个用于后续安装步骤的密码,注意获取:

    image-20211026172612585.png
  3. 可以后台运行容器

    docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
    
  4. 更换端口 为8686

    docker run -d -p 8686:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
    
  5. 访问:http://localhost:8080,开始进行可视化配置

    在打开的页面中输入之前获取的控制台密码:

    image-20211026172641998.png

  6. 创建 Jenkins 管理员账号

    image-20211026173321918.png 比如,账号密码设置为:test1/test1

    然后登录,进入 Jenkins 主界面:

    image-20211026173421524.png

  7. 搜索并安装 NodeJS 插件,用于在 Jenkins 环境下构建前端项目

    image-20211026173938403.png

    image-20211026174012871.png

  8. 配置 NodeJS 插件,指定要安装的 NodeJS 版本

    image-20211026174410983.png

image-20211026174536257.png

  1. 新建一个自由风格的构建任务:

    新建任务-创建属于自己的工程

    image-20211026182017717.png

    image-20211026182108092.png

  2. 在任务中勾选 Provide Node& npm xxxx 来启用 NodeJS(非常重要),并编写测试用的 shell 命令

    image-20211026182229193.png

    测试--下列 shell 脚本用于测试 git 和 node 是否能正常运行:

    image-20211026182336968.png

  3. 保存配置,运行构建:

    image-20211026182609250.png

    构建完毕后,查看构建历史:

    • 绿色图标表示构建成功
    • 红色表示构建失败

    image-20211026182655145.png

    点击一个构建历史中的 ”控制台输出“,可查看该次构建的详细日志。里面包含构建运行的每一步的输出信息:

    image-20211026182850341.png

实现自动拉取代码

实现从 git 代码拉取 -> 打包 -> 上传的全自动过程

核心内容:

  1. 为运行 Jenkins 的容器生成密钥,以便对 Git 进行免密访问
  2. 配置 Jenkins 任务中的构建步骤,实现所有环节的自动化

具体步骤:

  1. 执行命令,获取运行 Jenkins 服务的 Docker 容器ID

        docker ps
    

    找到输出信息中的 Jenknis 容器ID:

    image-20211027090811723.png

  2. 使用获取到的容器ID,通过 docker 命令进入到运行 Jenkins 服务的 Docker 容器内部:

    docker exec -it 容器ID bash
    

    进入容器后,通过命令生成容器内的 SSH 密钥:

      ssh-keygen -t ed25519 -C "jenkins@mydomain.com"
    

    生成的秘钥文件在目录 /var/jenkins_home/.ssh 目录下。

  3. 将生成的公钥文件(id_xxx.pub)内容,配置到 Git 服务器(如 Gitee)账号中。

  4. 修改之前已创建的 Jenknins 任务配置,添加从 Git 拉取代码的操作:

    image-20211027093051603.png

自动构建代码

实现对之前通过git拉取的前端项目代码

步骤详情

  1. 添加构建步骤,编写 build 前端代码的脚本:

    image-20211027093340222.png

  2. 保存配置,再次执行任务构建,并在构建的控制台输出中确认是否成功构建:

    image-20211027093619794.png

    也可以在”工作空间“中看到当前 Jenkins 进行构建工作的目录中的文件情况:

    image-20211027093738452.png

上传代码到服务器

上传构建后的代码到服务器 Nginx 托管目录,完成部署

步骤详情

  1. 先将 Jenkins 容器的 SSH 公钥添加到服务器的 .ssh/authorized_keys 文件中

  2. 再去 Jenkins 容器内执行 ssh 命令,确保能够成功免密远程登录到服务器

  3. 执行 Jenkins 构建任务,构建成功后,确认服务器上的 Nginx 托管目录中是否已包含最新代码

2. Jenkins安装教程 (win10系统)

1.Jenkins下载

官网下载地址

17070225-f9d30a7a4733c399.png

2.Jenkins安装

17070225-513533de21058d49.webp

17070225-0945746f8cb934c4.webp

Jenkins默认的端口是8080,但是最好修改端口为18080,在点击Test Port看看端口是否可用

17070225-ae03ef812556068c.webp

17070225-2b70d56be4ff9d85.webp

17070225-e5248320460b21f8.webp

17070225-ebb6ec1f4143e2b6.webp

3. 登录Jenkins页面

登录http://localhost:18080来访问jenkins

image-20211026172641998.png

注意:管理员密码在安装 jenkins目录中的 jenkins.err.log

Snipaste_2023-02-24_16-28-19.png

4. 安装推荐插件

5. 创建管理员用户

Snipaste_2023-02-27_09-01-52.png

Snipaste_2023-02-27_09-03-03.png

6. 安装 nodejs 插件

Snipaste_2023-02-27_09-05-58.png

Snipaste_2023-02-27_09-08-05.png

7. 配置nodeJs

image-20211026174410983.png

image-20211026174536257-5241537.png

8. 构建项目

image-20211026182017717.png

Snipaste_2023-02-27_10-02-47.png image-20211026182108092.png

  1. 在任务中勾选 Provide Node& npm xxxx 来启用 NodeJS(非常重要),并编写测试用的 shell 命令

    image-20211026182229193.png

  2. 添加构建步骤 (windows) Snipaste_2023-02-27_09-16-07.png

  3. 测试--下列 shell 脚本用于测试 git 和 node 是否能正常运行:

    image-20211026182336968.png

9 添加 git 码源 clone

  1. 在Repository URL 输入框中 添加 git 地址:地址为 http://xxxxxxxx 开头的地址

  2. Credentials 中添加凭证

    Snipaste_2023-02-27_09-30-22.png

10 添加打包的构建命令

Snipaste_2023-02-27_10-02-47.png

11 添加 Publish Over SSH 插件

用于 远程复制代码(添加ssh 认证凭据

Snipaste_2023-02-27_10-14-07.png

12 配置 远程地址及目录

用于 远程复制代码(添加ssh 认证凭据)

Snipaste_2023-02-27_10-25-26.png

注意 Remote Directory 的路径 /usr/local/nginx/html/

Snipaste_2023-02-27_10-37-31.png

13 构建复制至远程代码中

Snipaste_2023-02-27_10-28-25.png

Snipaste_2023-02-27_10-34-43.png

注意:Transfer Set

Source files 路径 dist/**/*

Snipaste_2023-02-27_10-33-05.png

14 jenkins 设置时间

jenkins 安装后时间一直是utc时间,不太方便。

系统管理->脚本命令行 运行:

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

Snipaste_2023-05-17_10-50-50.png

3 Jenkins 自动化部署SpringBoot项目

1 安装 JDK

  1. 检索可用包

        yum search java|grep jdk
    
  2. 安装

    yum install java-1.8.0-openjdk
    

2 安装 maven 插件

e060d7f76aef2a266951dbc3be506a15.png

由于 maven 默认的服务器在国外,这里下载会很慢,需要配置 maven 阿里镜像

3 配置 maven 镜像

进到【用户配置文件】目录中,寻找这个settings.xml这个文件

  • 然后往下滑找到<mirrors>这个标记,代表配置文件中的镜像设置
  • 把下面的这段复制进去,然后点击Ctrl + s保存即可,这个镜像是阿里的国内源
<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>        
</mirror>

4 配置 Pre Steps

构建后 运行 命令

BUILD_ID=dontKillMe
source /etc/profile
nohup java -jar /usr/appl/dhcss/dhcss-user-8903/*.jar >mylog.log 2>&1 &

Snipaste_2023-06-06_09-43-06.png

5 shell 脚本未执行问题

- 问题

jenkins 远程部署一台机器时,jenkins构建显示成功,但是查看服务日志却没有真正执行 sh run.sh 脚本,导致服务并没有启动

- 解决

只需要在命令最上方加上 source /etc/profile 就可以了

4 gitlab钩子自动构建项目

1 触发远程构建

Snipaste_2023-11-24_11-15-36.png

2 下载插件Build Authorization Token Root

Snipaste_2023-11-24_11-29-00.png

3 gitlab配置webhooks

将步骤1的触发远程构建地址,需要将身份验证令牌携带

Snipaste_2023-11-24_11-33-19.png

4.遇见的报错

  1. 需配置本地网络允许访问

Snipaste_2023-11-24_11-35-02.png (管理员身份才能配置)

Snipaste_2023-11-24_11-38-58.png

  1. 如果出现403错误:No valid crumb was included in the request

    请在系统管理 –> Configure Global Security中调整设置:

    取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选。

    Snipaste_2023-11-27_13-51-28.png

  2. 如果依旧出现403错误:Hook executed successfully but returned HTTP 403

Snipaste_2023-11-27_13-55-17.png

  • 创建URL 用test账号登录,从右上角点击用户,进入用户设置,点击Show API Token...

Snipaste_2023-11-27_14-08-30.png

  • 使用新的URL 根据这些内容,就可以创建一个这样的URL:

    http://test:fe20f2d33760fbeec0a362dbbf59cd18@`your-jenkins.com/job/JobName/build? token=`iFdsjS24SDFqp53JGsd9k0Cm

  • 注意格式

    http://(用户名):(Jenkins生成的Token)@(Jenkins的IP地址:端口号)/view/%E5%89%8D%E7%AB%AF/job/%E5%A4%A7%E8%B1%AA%E4%BA%91%E5%8A%9E%E5%85%AC-%E6%B5%8B%E8%AF%95/build?token= (身份验证令牌)

  • 提示

    image.png