Jenkins之自动生成Sophix热修复补丁

本文介绍了如何使用Jenkins结合Sophix自动创建热修复补丁的详细步骤,包括修改混淆规则、配置Jenkinsjob、编写替换和生成补丁的脚本,以及发送邮件通知。

本篇博客是《Jenkins之自动进行360加固》的后续。在分享完如何使用Jenkins实现自动加固后,本篇博客将继续分享使用Jenkins自动生成热修复补丁的实现过程。

背景及思路

项目使用git-flow分支模式,而热修复采用的是阿里的移动热修复Sophix方案,并且项目启用了混淆。因此,我的思路很简单:

  1. 在构建正式环境的Apk之前,修改混淆规则-applymapping...,使其与对应版本的混淆符号映射一致。
  2. 在构建正式环境的Apk之后,增加热修复阶段,进行热修复补丁生成。
  3. 热修复补丁生成之后,将补丁文件与一些git提交信息通过邮件发送出来。
  4. 以上步骤仅对hotfix/开头的分支有效。

应用混淆规则

约定

在之前的博客中,我们会把加固包对应的原apk及mapping文件发送出来。**我们约定,在加固包上架之后,把apk及mapping文件提交到项目的release文件夹中,再打上tag。**这样,当我们需要生成热修复补丁时,则可以方便地找到对应版本的原apk及mapping文件。

我们再约定,在app模块的混淆规则文件proguard-rules.pro中,添加一条规则,但是默认情况下注释掉,只在需要生成补丁时才启用它:

#-applymapping ...

Jenkins的配置

接下来,修改Jenkins中的job配置,添加或勾选Fetch tags一项,确保在拉取代码时把tag也给拉取下来。如下:
在这里插入图片描述

编写替换脚本

然后,编写脚本文件进行混淆规则的替换。考虑到热修复的相关文件可能会比较多,我在buildsystem下新建了一个文件夹hotfix,然后再在这个文件夹下添加修改混淆规则的脚本apply-rules.sh,内容如下:

#!/usr/bin/env bash

cd `dirname $0`/../../
projectDir=`pwd`

gitTag=`git describe --tags --abbrev=0 | sed "s/[^0-9\.].*//"`
ruleFile="$projectDir/`find release -name "mapping*$gitTag*.txt"`"

unix=false
case "`uname`" in
  Darwin* )
    unix=true
    ;;
esac

# sed 替换标识符说明: `#`会出现在规则文件中;`/`会出现在路径中;`@`会出现在Jenkins工作空间中。
if [ "$unix" = "true" ]; then
  sed -i "" "s!.*applymapping.*!-applymapping $ruleFile!g" $projectDir/app/proguard-rules.pro
else
  sed<
<think>我们正在解决用户的问题:如何在Jenkins中为用户账号生成API访问Token。 根据之前的引用,我们知道Jenkins API Token用于身份验证,特别是在自动化脚本或与其他工具(如SVN钩子)集成时。 生成步骤: 1. 登录Jenkins。 2. 点击右上角的用户名,进入用户设置。 3. 在左侧菜单中找到“API Token”部分。 4. 点击“生成新Token”按钮。 5. 输入一个名称(用于标识该Token的用途)并点击生成。 6. 复制并安全保存生成的Token(因为再次访问时将无法查看)。 注意:Token一旦生成,必须立即复制保存,因为Jenkins不会再次显示。 下面给出详细步骤:</think>### 如何在 Jenkins 中生成用户 API 访问令牌 以下是详细操作步骤(以 Jenkins 2.4+ 版本为例): #### 步骤 1:进入用户设置 1. 登录 Jenkins 后,点击右上角用户名 2. 选择 **Configure**(配置)选项 ![](https://www.jenkins.io/doc/book/resources/security/user-configure.png) #### 步骤 2:生成 API Token 1. 在配置页面找到 **API Token** 区域 2. 点击 **Add new Token** 按钮 3. 输入令牌描述(如 "SVN_Hook_Token") 4. 点击 **Generate** 生成令牌 ![](https://www.jenkins.io/doc/book/resources/security/generate-api-token.png) #### 步骤 3:保存令牌 1. **立即复制生成的令牌**(关闭页面后无法再次查看) 2. 点击 **Save** 保存配置 > ⚠️ 安全提示:令牌相当于密码,需妥善保管[^1] --- ### 令牌使用示例 ```bash # 通过API触发构建 curl -u username:API_TOKEN http://jenkins-url/job/myjob/build # 在SVN钩子中使用(post-commit.bat) curl -X POST "http://%USER%:%TOKEN%@jenkins-url/job/MyJob/build" ``` --- ### 安全最佳实践 1. **最小权限原则**:在 **Manage Jenkins > Manage Roles** 中限制令牌权限 2. **IP白名单**:在 **系统管理 > 脚本命令行** 配置安全策略: ```groovy import jenkins.model.Jenkins Jenkins.instance.disableSecurity() ``` 3. **定期轮换**:每 3-6 个月更新令牌 4. **HTTPS加密**:始终通过 HTTPS 传输令牌[^1] --- ### 令牌管理 | 操作 | 路径 | 注意事项 | |------|------|----------| | 查看令牌 | 用户配置页 | 仅显示创建时间 | | 撤销令牌 | 点击令牌旁的 ❌ | 立即生效 | | 批量管理 | 使用 [jenkins-cli](https://www.jenkins.io/doc/book/managing/cli/) | 需要 SSH 访问权限[^2] | ```bash # 通过CLI获取令牌示例 java -jar jenkins-cli.jar -s http://jenkins/ who-am-i --username admin --password ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值