0%

Jenkins + Gogs 自动化部署

使用 Docker 运行 Jenkins, 结合 Gogs 完成 Java 和 Vue 项目的自动化部署
Docker 的安装可以参考Docker 部署微服务 (Cloud-Admin) 以及 Docker 参数、命令

  1. 安装以及配置 Jenkins

    1. 安装 Jenkins

      新建目录

      1
      mkdir /var/jenkins_home

      修改所属用户

      1
      chown 1000 /var/jenkins_home

      没有此 ID 用户则添加

      1
      useradd -u 1000 jenkins

      运行容器

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      docker run -d -i --name jenkins --network docker-net -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime:ro jenkins/jenkins:lts
      # 配置 Nginx 反向代理可以添加参数
      --env JENKINS_OPTS="--prefix=/jenkins"
      # Nginx 配置
      location /jenkins {
      proxy_pass http://172.17.0.1:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_redirect off;
      }

      查看日志 会实时显示日志,最后会显示其中类似 f3f67320f92e4ba6bdecb083a03af92c 的一行即为密码

      1
      docker logs -f jenkins
    2. 配置 Jenkins

      访问 http://localhost:8080(Nginx 反向代理访问http://localhost/jenkins) 输入上一步的密码,选择第一种安装插件方式即可

      如果提示 该 jenkins 实例似乎已离线:

      • 访问 http://localhost:8080/pluginManager/advanced 找到最底部的 Update Site 选项,修改 URL 的 https 为 http。

      • 修改 /var/jenkins_home/updates/default.json 文件的 connectionCheckUrl 属性的值,改为可访问地址, 重启 Jenkins

      1. 安装插件
        系统管理 -> 插件管理 -> 可选插件
        搜索安装Generic Webhook Trigger, NodeJS Plugin, Maven Integration, Publish Over SSH
      2. 配置
      • 系统管理 -> 系统设置 -> 新增 Publish over SSH 配置
        SSH Servers 配置

      • 系统管理 -> 全局工具配置 -> Maven 安装以及 NodeJS 安装, 勾选自动安装即可
        SSH Servers 配置

  2. 自动部署 Gogs 上的 Java 项目

    目前项目为微服务,使用 docker 部署,并且只自动部署测试分支,所以以下例子只有推送 release 分支且指定模块下有修改才触发自动部署。

    1. 新建任务

      新建任务 -> 输入名称 -> 构建一个 maven 项目 -> 确定 -> 输入描述。

    2. 输入源码管理信息

      源码管理

    3. 构建触发器
      • 勾选Generic Webhook Trigger
        Generic Webhook Trigger
      • 新增三个 Post content parameters
        Post content parameters
        Post content parameters
        Post content parameters
      • 输入 Token
        输入 Token
    4. Optional filter

      Optional filter

    5. Pre Steps 以及 Build

      maven

    6. Post Steps

      Post Steps

    7. 登录 Gogs 在仓库管理 -> 管理 Web 钩子 -> 添加 Web 钩子 -> gogs

      推送地址为:http://localhost:8080/generic-webhook-trigger/invoke?token=` 构建触发器中输入的 Token`
      gogs config

  3. 自动部署 Gogs 上的 Vue 项目

    1. 新建任务

      新建任务 -> 输入名称 -> 构建一个自由风格的软件项目 -> 确定

    2. 构建触发器和 Optional filter 参照 Java 项目部署即可
    3. 构建环境

      构建环境
      Cache location 选项:

      • 每个节点,这是默认的 NPM 行为。所有下载包都放在 Lunix 系统上的~/.npm 或 Windows 系统上的 %APP_DATA%\npm-cache 中。
      • 每个执行者,每个执行者在~/npm-cache/$executorNumber 中都有自己的 NPM 缓存文件夹。
      • 每个作业,放在 $WORKSPACE/npm-cache 下的工作区文件夹中。此缓存将与工作区一起被刷除,并且在删除作业时将被删除。
    4. 构建

      构建
      命令如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # node-sass 安装失败可以修改 package.json:"node-sass": "^4.13.0", 并设置淘宝镜像
      # SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass npm install --registry=https://registry.npm.taobao.org
      npm install --registry=https://registry.npm.taobao.org
      npm run build
      cd dist
      tar -zcf ../dist.tar.gz *

      rm -rf /**/dist/*
      tar -zxf /**/dist.tar.gz -C /**/dist
      rm -rf /**/dist.tar.gz
  4. 企业微信通知

    1. 安装插件
      Jenkins 企业微信通知插件
    2. 系统配置
      系统配置
    3. 任务单独配置
      任务单独配置
    4. 效果图
      效果图