Skip to content

Instantly share code, notes, and snippets.

@twiceyuan
Last active October 25, 2018 07:44
Show Gist options
  • Save twiceyuan/50a0066f09a9917889b5a15ea3628c00 to your computer and use it in GitHub Desktop.
Save twiceyuan/50a0066f09a9917889b5a15ea3628c00 to your computer and use it in GitHub Desktop.
[Jenkins 构建开源 Android 项目配置] #Android #Jenkins

在开发 Android 项目时,为了自动化构建输出签名 APK 方便,通常会配置 signingConfigs 项来直接输出签名后的 APK。在构建开源项目时,证书文件一般不会上传到仓库,证书相关的配置也会存在被 ignore 的本地 properties 文件中。之前使用 Travis 构建开源项目时,使用的方式是仓库中存有一个加密的证书文件,通过在 Travis 控制台配置这个加密文件的密钥,以及其他必需的配置项来完成构建。在 Jenkins 里也是类似的方式不过更加方便一些。

首先,可以把证书文件直接上传到 Jenkins 里:

  1. 进入 Credentials - System - Global credentials (unrestricted) - Add Credentials,选择 Secret File,选择要上传的签名文件,ID 和 Description 按照需要给一个有含义的文本即可

  2. 同级下面,再通过 Add Credentials 添加一项,选择 Username and Password。Username 存储签名需要的 Alias,密码存储 Store Password 和 AliasPassword(这里我自己的约定是这样的,如果不相符可以建立更多的 credential 项)。

  3. 在构建项目下面,Build Environment 下面勾选 Use secret text(s) or file(s)Binding 下添加一个 Secret FileUsername and Password,分别对应 1、2 步添加的两项,绑定三个变量:KEY_PATHKEY_ALIASKEY_PASSWD

  4. 在构建时使用 Execute Shell,在构建之前的脚本之前获取变量来生成 gradle.properties 文件:

    echo "\
    CERT_PATH=$KEY_PATH\n\
    CERT_ALIAS=$KEY_ALIAS\n\
    CERT_KEY_PASSWD=$KEY_PASSWORD\n\
    CERT_STORE_PASSWD=$KEY_PASSWORD" > gradle.properties
  5. gradle 配置中读取的变量和第 4 步保持对应:

    signingConfigs {
      release {
        keyAlias CERT_ALIAS
        keyPassword CERT_KEY_PASSWD
        storeFile file(CERT_PATH)
        storePassword CERT_STORE_PASSWD
      }
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment