Skip to content

Jenkins自动化构建

Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件

  • Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序

Linux安装

安装方法

bash
$ dnf search jenkins
Last metadata expiration check: 0:29:36 ago on Mon 20 Nov 2023 08:58:40 AM CST.
=================================== Name & Summary Matched: jenkins ===================================
python3-jenkins.noarch : Python bindings for the remote Jenkins API

因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库:

bash
$ wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
$ mv jenkins.repo /etc/yum.repos.d/

根据对应 repo 就可以使用 dnf 进行安装了,但是安装是有认证的,需要使用 rpm 导入 GPG 密钥以确保软件合法

bash
$ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# 或者
$ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

之后编辑一下 jenkins.repo

bash
$ vim /etc/yum.repos.d/jenkins.repo

http://pkg.jenkins.io/redhat-stable-stable 删除掉

bash
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1

安装 Jenkins

bash
$ dnf install jenkins --nogpgcheck

启动 Jenkins 服务

bash
$ systemctl start jenkins
$ systemctl stop jenkins
$ systemctl status jenkins
$ systemctl enable jenkins

检查是否启动成功

image-20231124084054138

修改配置

修改 Jenkins 端口

  • 我环境变量默认使用的 jdk1.8,我安装的 jenkins 是新版需要配置 jdk11-17
  • 默认端口为 8080,我要改为 8081
bash
$ vim /usr/lib/systemd/system/jenkins.service
# The Java home directory. When left empty, JENKINS_JAVA_CMD and PATH are consulted.
Environment="JAVA_HOME=/home/software/jdk-17.0.9"
# Port to listen on for HTTP requests. Set to -1 to disable.
Environment="JENKINS_PORT=8081"

image-20231123140910187

重新加载配置文件,之后重启 jenkins

bash
# 重新加载 service 配置文件
$ systemctl daemon-reload
# 重启 jenkins
$ systemctl restart jenkins

直接访问 Jenkins 是无法展示页面的,需要将其加入到安全组中

image-20231120103102460

打开浏览器,输入 IP + 对应端口,之后需要解锁 Jenkins

  • 获取输入管理员密码
bash
$ cat /var/lib/jenkins/secrets/initialAdminPassword
fc53e288a4ac429baa33b44b412dd7a1

安装插件

安装推荐插件即可

image-20231120103330881

额外插件安装:

  • 上面默认安装的插件就不再提及用途了
插件名称插件用途
Maven Integration pluginMaven
Zentimestamp plugin时间戳变量
Build Name and Description Setter自定义构建任务名称
Persistent Parameter Plugin持久化构建参数
Role-based Authorization Strategy用户权限管理插件
Deploy to container Plugin远程部署插件
Generic Webhook Trigger Plugin特定提交触发自动构建
Publish Over SSH远程控制主机执行脚本
Job Configuration History Plugin记录job的历史更新记录
Console Column Plugin视图中展示上一个控制台
Rebuilder按照上次构建所选的参数进行构建
Git Parameter可添加Git的branch或者tag来作为参数进行构建
Build Trigger Badge项目视图首页展示项目构建人
Version Number Plugin提供更加丰富的构建版本号
Figlet Buildstep在构建过程中输出一个简单的横幅
Extended Choice Parameter Plugin回滚使用的这个插件
Docker Pipelinepipeline中docker环境隔离的能力
Parameterized Remote Trigger Plugin远程触发另一个jenkins项目构建配置
Blue Ocean持续交付(CD)Pipeline过程的可视化
Simple Theme主题
DingTalk构建通知

Jenkins:插件安装及使用教程

Jenkins针对不同的项目视图对不同的用户进行权限分配

新版Jenkins 2.346.1自动化部署(SVN+Maven)

Jenkins构建(8):Jenkins 执行远程shell :Send files or execute commands over SSH

jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置

前端工程化:保姆级教学 Jenkins 部署前端项目

Jenkins Blue Ocean 环境搭建和Pipeline基本使用(基于docker-compose)

Jenkins持续集成部署实战采坑系列(三)

Generic Webhook Trigger 实现特定提交触发自动构建

Jenkins常用插件汇总以及简单介绍

Windows安装

下载

安装包官网下载链接

image-20230525094343594

注意:如果使用官网最新的 Jenkins.war 包,需要安装 Java11 以上

升级参考:Java 8(JDK 1.8)升级更新至 Java 17(JDK 17)

image-20230525094421475

启动

下载好之后即可启动,启动激活方法跟 Linux 是一样的

  • **注意:**解锁 Jenkins 的密码所在地址每台电脑会有所区别,复制自己的即可
bash
# 前台启动命令
$ java -jar jenkins.war --httpPort=8084

# 后台启动命令
$ nohup java -jar jenkins.war --httpPort=8084 &
# 查看 java 的 pid
$ ps -ef | grep java
# 关闭 java 进程
$ kill -9 xxx(pid)

image-20230525102631276

Jenkins使用

构建前端

  1. 点击 新建Item,开始创建项目

    image-20230524141426137

  2. 输入一个任务名称,如:jenkins-test-project。选择 Freestyle project,点击 确定

    image-20230524141640031

  3. 点击 General。添加描述:这是我的第一个 jenkins 项目,用来测试

    image-20230524150322503

  4. 点击 源码管理,点击 Git,在 Repository URL 中输入

    http://192.168.1.242:9000/lilin/test-jenkins.git

    一般还得添加 Credentials,这里就不演示了

    image-20230524151659589

  5. 点击 构建环境。这里无需勾选任何东西,如果为了展示更加优化,可以勾选 Add timestamps to the Console OutputColor ANSI Console Output

    注意:需要安装两个插件 TimestamperAnsiColor

    image-20230525105556265

  6. 点击 构建,点击 增加构建步骤。选择 Execute shell,填入如下内容。之后点击保存即可

    bash
    node -v
    
    # 内网环境下需要修改
    npm install --registry https://registry.npm.taobao.org/
    npm run build
    
    DIR_PATH=`pwd`/dist
    # 需要修改
    FILE_NAME=jenkins-test-project
    # 需要修改
    TO_PATH=D:/Develop/nginx-1.20.2/project
    cd $TO_PATH
    rm -rf $FILE_NAME
    mkdir  $FILE_NAME
    cp -r $DIR_PATH/* $TO_PATH/$FILE_NAME

构建后端

构建后端跟前端基本上是一样的,也会有一些其他操作

  1. 写一些自动化脚本,比如杀程序的(需要借助:Publish Over SSH 插件)

    bash
    $ vim start.sh

    编写自动杀进程、启动程序脚本

    shell
    #!/bin/bash
    # !修改为自己的目录
    BASE=/home/template
    # !修改为自己的文件名
    FILE=xxx.jar
    
    # 删除历史数据
    rm -rf $BASE/$FILE
    # 数据包拷贝到指定位置,!修改为自己的文件目录位置
    cp $BASE/xxx/target/$FILE $BASE/$FILE
    PID=`ps -ef | grep ticket-base | grep 'java -jar' | awk '{printf $2}'`
    # 如果pid为空,提示一下,否则,执行kill命令
    if [ -z $PID ];
      then
        echo "java server not started"
      else
        kill -9 $PID
        echo "java server stoping...."
    fi
    # 启动程序
    nohup java -jar $BASE/$FILE >/dev/null 2>&1 &
    echo 'java server starting...'
  2. 构建完前端自动构建后端(需要借助:Parameterized Remote Trigger Plugin 插件),前后端打成一个 jar 包

    • 构建上下游项目

常备不懈,才能有备无患