Verify binaries using hashes #44
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Generate artifacts for intl4x | |
permissions: | |
contents: write | |
on: | |
pull_request: | |
branches: [ main ] | |
paths: | |
- pkgs/intl4x/hook/hashes.dart | |
push: | |
tags: | |
- 'intl4x-icu*' | |
schedule: | |
- cron: '0 0 * * 0' # weekly | |
workflow_dispatch: | |
jobs: | |
dart-libs: | |
name: Build Dart binaries | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
with: | |
submodules: true | |
- name: Install Rust toolchains | |
run: | | |
rustup toolchain install stable | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: dev | |
- name: Setup additional linkers | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get install gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu gcc-i686-linux-gnu | |
mkdir .cargo | |
echo "[target]" >> .cargo/config.toml | |
echo "aarch64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang\"" >> .cargo/config.toml | |
echo "armv7-linux-androideabi.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi30-clang\"" >> .cargo/config.toml | |
echo "i686-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android30-clang\"" >> .cargo/config.toml | |
echo "x86_64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android30-clang\"" >> .cargo/config.toml | |
echo "riscv64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/riscv64-linux-android35-clang\"" >> .cargo/config.toml | |
echo "aarch64-unknown-linux-gnu.linker=\"aarch64-linux-gnu-gcc\"" >> .cargo/config.toml | |
echo "armv7-unknown-linux-gnueabihf.linker=\"arm-linux-gnueabihf-gcc\"" >> .cargo/config.toml | |
echo "riscv64gc-unknown-linux-gnu.linker=\"riscv64-linux-gnu-gcc\"" >> .cargo/config.toml | |
- name: Build Linux | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
cd submodules/icu4x | |
mkdir bin | |
cd ffi/dart | |
dart pub get | |
cd ../.. | |
dart run ffi/dart/tool/build_libs.dart bin/android_arm android_arm dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/android_arm64 android_arm64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/android_ia32 android_ia32 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/android_x64 android_x64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/linux_arm linux_arm dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/linux_arm64 linux_arm64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/linux_riscv64 linux_riscv64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/linux_x64 linux_x64 dynamic default_components,experimental_components | |
cargo run -p icu_datagen -- --locales full --keys all --format blob --out bin/full.postcard | |
cd provider/datagen # avoid global feature resolution | |
rustup target add aarch64-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-unknown-linux-gnu | |
rustup target add riscv64gc-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target riscv64gc-unknown-linux-gnu | |
rustup target add x86_64-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-unknown-linux-gnu | |
cd ../.. | |
cp target/aarch64-unknown-linux-gnu/release/icu4x-datagen bin/linux_arm64-datagen | |
cp target/riscv64gc-unknown-linux-gnu/release/icu4x-datagen bin/linux_riscv64-datagen | |
cp target/x86_64-unknown-linux-gnu/release/icu4x-datagen bin/linux_x64-datagen | |
- name: Build Mac | |
if: matrix.os == 'macos-latest' | |
run: | | |
cd submodules/icu4x | |
mkdir bin | |
cd ffi/dart | |
dart pub get | |
cd ../.. | |
dart run ffi/dart/tool/build_libs.dart bin/ios_arm ios_arm dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/ios_arm64 ios_arm64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/ios_x64 ios_x64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/macos_arm64 macos_arm64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/macos_x64 macos_x64 dynamic default_components,experimental_components | |
cd provider/datagen # avoid global feature resolution | |
rustup target add aarch64-apple-darwin | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-apple-darwin | |
rustup target add x86_64-apple-darwin | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-apple-darwin | |
cd ../.. | |
cp target/aarch64-apple-darwin/release/icu4x-datagen bin/macos_arm64-datagen | |
cp target/x86_64-apple-darwin/release/icu4x-datagen bin/macos_x64-datagen | |
- name: Build Windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
cd submodules/icu4x | |
mkdir bin | |
cd ffi/dart | |
dart pub get | |
cd ../.. | |
dart run ffi/dart/tool/build_libs.dart bin/windows_arm64 windows_arm64 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/windows_ia32 windows_ia32 dynamic default_components,experimental_components | |
dart run ffi/dart/tool/build_libs.dart bin/windows_x64 windows_x64 dynamic default_components,experimental_components | |
cd provider/datagen # avoid global feature resolution | |
rustup target add aarch64-pc-windows-msvc | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-pc-windows-msvc | |
rustup target add x86_64-pc-windows-msvc | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-pc-windows-msvc | |
cd ../.. | |
cp target/aarch64-pc-windows-msvc/release/icu4x-datagen.exe bin/windows_arm64-datagen.exe | |
cp target/x86_64-pc-windows-msvc/release/icu4x-datagen.exe bin/windows_x64-datagen.exe | |
- name: Upload artifacts | |
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 | |
with: | |
name: dart-${{matrix.os}}-libs | |
path: submodules/icu4x/bin | |
check_hashes_local: | |
needs: dart-libs | |
if: github.event_name == 'pull_request' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: dev | |
- name: Download binaries | |
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e | |
with: | |
merge-multiple: true | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Check hashes of locally built artifacts | |
run: | | |
cd pkgs/intl4x | |
dart pub get | |
dart --enable-experiment=native-assets tool/generate_hashes.dart local ../.. | |
git diff --exit-code | |
build_local: | |
needs: dart-libs | |
runs-on: ${{ matrix.os }} | |
env: | |
ICU4X_BUILD_MODE: local | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e | |
with: | |
merge-multiple: true | |
- run: echo "LOCAL_ICU4X_BINARY=$(realpath linux_x64)" >> $GITHUB_ENV | |
if: matrix.os == 'ubuntu-latest' | |
- run: echo "LOCAL_ICU4X_BINARY=$(realpath macos_x64)" >> $GITHUB_ENV | |
if: matrix.os == 'macos-latest' | |
- run: echo "LOCAL_ICU4X_BINARY=$(realpath windows_x64)" >> $GITHUB_ENV | |
if: matrix.os == 'windows-latest' | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
with: | |
submodules: true | |
- name: Display structure of downloaded files | |
run: ls -R | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: dev | |
- name: Check hashes of released artifacts | |
run: | | |
dart --enable-experiment=native-assets tool/generate_hashes.dart | |
git diff --name-only --exit-code | |
if: ${{matrix.os == 'ubuntu-latest'}} | |
- run: | | |
cd pkgs/intl4x | |
dart pub get | |
- run: | | |
cd pkgs/intl4x | |
dart --enable-experiment=native-assets test | |
release: | |
needs: dart-libs | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Release | |
uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0 | |
with: | |
files: '**' | |
fail_on_unmatched_files: true | |
body: "Build artifacts for `package:intl4x`, based on ICU4X at ref ${{ github.ref_name }}" |