Jenkins 流水线自动构建部署

记录一下从安装到自动化部署项目的步骤

Jenkins

记录一下从安装到自动化部署项目的步骤

安装

因为要自动化部署项目,且只有一个服务器,操作也在同一服务器上,所以我这里优先选择安装到本机而不是使用docker进行运行,请根据实际情况进行选择。

以Debian系为例
【官方安装指南】https://www.jenkins.io/zh/download/

  1. 导入Jenkins软件包仓库密钥

     sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
        https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
    
  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. 安装

    sudo apt-get update
      sudo apt-get install fontconfig openjdk-17-jre
      sudo apt-get install jenkins
    

到此安装完成,系统会自动为jenkins创建用户隔离权限。

【后续步骤】https://www.jenkins.io/doc/book/installing/linux/

如需修改端口,请修改Service文件

vim /lib/systemd/system/jenkins.service

content:
Environment="JENKINS_PORT=20000"

修改后记得重载服务。

启动Jenkins

sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

访问对应端口,即可进入到Jenkins的后台页面,将Status中的密钥填入,继续后续的用户配置即可。

配置工作目录: 将一个文件的权限赋予Jenkins用户,后续Jenkins操作的文件将放在这里。

至此安装结束。

配置自动任务

  1. 点击New Item创建一个任务。

  2. 选择Freestyle project,这里使用系统内的工具进行构建,不再重复安装,如由Jenkins统一配置可以选择其他。

  3. 为jenkins用户的工作目录准备好项目文件,和git ssh权限。

    su jenkins  # 切换到jenkins用户
    ssh-keygen  # 生成密钥,填入Git托管平台
    
  4. Build Steps中使用 Execute shell编写命令

    【java 后端示例】

    #!/bin/bash
    BUILD_ID=NULL
    export JAVA_HOME=/usr/local/jdk17/
    export PATH=$JAVA_HOME/bin:/usr/local/maven3.9.4/bin:$PATH
    
    # pull latest code & build jar file
    cd /home/jenkins/slms
    git pull -f
    cd backend
    mvn clean package -DskipTests
    
    # kill old process and move jar file
    PID=$(cat /home/jenkins/slms-backend/server.pid)
    kill -9 $PID || true
    rm -rf /home/jenkins/slms-backend/*.jar
    mv /home/jenkins/slms/backend/target/*.jar /home/jenkins/slms-backend/
    
    # run new process and note the application pid
    cd /home/jenkins/slms-backend/
    nohup java -jar backend-0.0.1-SNAPSHOT.jar --server.port=20002 > server.log 2>&1 &
    echo $! > server.pid
    

    【node 前端示例】

     export PATH=/usr/local/nvm/versions/node/v18.20.5/bin:$PATH
    
    cd /home/jenkins/slms
    git pull -f
    cd frontend
    pnpm i
    pnpm run build
    
    rm -rf /home/jenkins/slms-frontend/dist
    mv /home/jenkins/slms/frontend/dist /home/jenkins/slms-frontend/dist
    
  5. 配置完成后点击运行,根据输出日志信息进行排错。

配置触发机制

【Jenkins流水线触发方式】

  • 主动定时轮询Git的版本变更

  • 根据时间周期执行

  • Git托管平台支持的情况下通过主动通知Jenkins进行执行

  • 或者自定义实现的远程触发

  • 根据其他流水线执行完成后执行

这里配置【主动定时轮询Git的版本变更】的方式进行执行为例

  1. 配置 Source Code Management选择Git 指定对应的仓库

  2. 配置Git平台的访问密钥或者用户名密码

  3. 指定好要触发的分支

  4. 配置Build Triggers选择Poll SCM

H/15 * * * * 
MINUTE HOUR DOM MONTH DOW

具体可点击网页上的问号,查看详细解释。

待续