2 个版本
使用旧的 Rust 2015
0.1.1 | 2018年9月27日 |
---|---|
0.1.0 | 2018年9月10日 |
#1178 in 密码学
34KB
618 行
工件配置
一个用于下载工件和验证 sha 散列和 pgp 签名的程序。
下载工件
要开始构建过程,您需要创建一个输入文件,例如 urls.txt。
https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar
然后运行以下命令
artc download --input urls.txt
这将生成目标目录下的文件:./target/artc
asc.tsv 文件包含主要工件的指纹和 URL
3872ED7D5904493D23D78FA2C4C8CB73B1435348 https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom 694621A7227D8D5289699830ABE9F3126BB741C1 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar 694621A7227D8D5289699830ABE9F3126BB741C1 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom
keys 目录包含用于验证签名的任何下载的密钥
-rw-r--r-- 1 shane shane 2020 Sep 7 23:11 0374CF2E8DD1BDFD -rw-r--r-- 1 shane shane 1700 Sep 7 23:08 0DA8A5EC02D11EAD -rw-r--r-- 1 shane shane 3136 Sep 7 23:04 16AE34E5C9C3E2BB -rw-r--r-- 1 shane shane 12289 Sep 7 23:09 205C8673DC742C7C
最后,pubring.kbx 文件是包含导入的密钥的密钥库。
sha.tsv 文件包含 sha256,后面跟着一个 gen/ver 字段值。
c3c99bf58182889fe86315e9a01473ee2c95540b9dedef898cec64554d925c54 gen https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom 1158e94c7de4da480873f0b4ab4a1da14c0d23d4b1902cc94a58a6f0f9ab579e ver https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar bfadb3b40f65dd6de1666d6b29f8bb54031396c76eeef4146cf9f28255f8bf33 ver https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b gen https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom 7e8bdca281bdcb6dad48a80854837f1c0ab46f31a0b292370e320f471f5b9cfd gen https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar
gen 值表示 sha256 是由构建生成的。没有关联的 ${url}.sha2 文件可供下载和验证。
例如,此 URL 不存在,因此其字段值为 gen
https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar.sha2
ver 字段值表示 ${url}.sha2 文件存在,构建已将主工件的 sha256 与此值进行验证。
RBM
此命令生成 Tor RBM 配置文件。
artc rbm --keyring android.gpg
keyring 选项指定您将用于下载的工件的密钥圈名称。例如,如果您指定密钥圈为 android.gpg,则 pubring.kbx 文件将重命名为 android.gpg。
在 rbm/config 文件中可以发现以下条目。请注意,如果 sha 未经过验证,配置中有一个注释。如果 asc 文件无法使用,则构建将仅使用 sha256。
#Sha not verified from original source - URL: https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar sha256Sum: 7e8bdca281bdcb6dad48a80854837f1c0ab46f31a0b292370e320f471f5b9cfd - URL: https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar sig_ext: asc file_gpg_id: 694621A7227D8D5289699830ABE9F3126BB741C1 gpg_keyring: android.gpg - URL: https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom sig_ext: asc file_gpg_id: 694621A7227D8D5289699830ABE9F3126BB741C1 gpg_keyring: android.gpg - URL: https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom sig_ext: asc file_gpg_id: 3872ED7D5904493D23D78FA2C4C8CB73B1435348 gpg_keyring: android.gpg #Sha not verified from original source - URL: https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom sha256Sum: a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b
由于 RBM 使用扁平目录结构进行下载,因此还生成一个脚本来将工件放置在 Maven 仓库结构中。它位于 rbm/create_maven_repo.sh。
# TODO: Set $M2_REPO to location of maven repository mkdir -p $M2_REPO/com/android/tools/sdk-common/26.0.1 && cp "sdk-common-26.0.1.jar" "$_" mkdir -p $M2_REPO/com/google/guava/guava/22.0 && cp "guava-22.0.jar" "$_" mkdir -p $M2_REPO/com/google/guava/guava/22.0 && cp "guava-22.0.pom" "$_" mkdir -p $M2_REPO/com/android/tools/annotations/24.5.0 && cp "annotations-24.5.0.pom" "$_" mkdir -p $M2_REPO/com/android/tools/repository/26.0.1 && cp "repository-26.0.1.pom" "$_"
打包
作为生成 RBM 文件的替代方案,您可以将工件打包成 Maven 仓库格式。
artc package
这将从 artifacts 目录复制工件到 m2 目录,然后将 m2 目录存档为 maven-repo.tar.gz。
它输出用于 RBM 配置(或其他构建)的哈希值。
请注意,对于 RBM 构建,此存档需要上传到某个位置。然后需要将存档的 URL 添加到配置文件中。
- URL: https://example.com/repo/maven-repo.tar.gz sha256Sum: a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b
附加信息
可重复构建管理器 - https://rbm.torproject.org/
依赖项
~18–29MB
~518K SLoC