fix: tests #35
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: Release binaries | |
on: | |
push: | |
tags: | |
- 'v[0-9].*' # Release tags matching v*, i.e. v1.0, v20.15.10 | |
branches: | |
- 'ci/test/release' | |
jobs: | |
create_release: | |
name: Create release | |
if: > | |
github.repository_owner == 'input-output-hk' | |
|| startsWith(github.ref, 'refs/heads/ci/test/') | |
|| startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-ci-test.') | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.release_info.outputs.version }} | |
tag: ${{ steps.release_info.outputs.tag }} | |
date: ${{ steps.release_info.outputs.date }} | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- id: release_info | |
name: Get release information | |
run: python3 ci/release-info.py "$GITHUB_EVENT_NAME" | |
- if: ${{ steps.release_info.outputs.release_type == 'nightly' }} | |
name: Delete existing nightly releases | |
continue-on-error: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
set +e | |
git ls-remote --tags --refs origin 'refs/tags/nightly*' | | |
cut -f 2 | | |
while read ref; do | |
hub release delete ${ref#refs/tags/} | |
git push --delete origin $ref | |
done | |
- id: create_release | |
name: Create a draft release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
release_tag='${{ steps.release_info.outputs.tag }}' | |
hub release create ${{ steps.release_info.outputs.release_flags }} --draft \ | |
-m "Release ${{ steps.release_info.outputs.version }} (in progress)" \ | |
-t $GITHUB_SHA $release_tag | |
upload_url=$(hub release show -f '%uA' $release_tag) | |
echo "::set-output name=upload_url::$upload_url" | |
cache_info: | |
name: Bootstrap cache | |
if: > | |
github.repository_owner == 'input-output-hk' | |
|| startsWith(github.ref, 'refs/heads/ci/test/') | |
|| startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-ci-test.') | |
runs-on: ubuntu-latest | |
outputs: | |
crates-io-index-head: ${{ steps.ls-crates-io-index.outputs.head }} | |
cargo-lock-hash: ${{ steps.hash-cargo-lock.outputs.hash }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- id: ls-crates-io-index | |
name: Get head commit hash of crates.io registry index | |
run: | | |
commit=$( | |
git ls-remote --heads https://github.com/rust-lang/crates.io-index.git master | | |
cut -f 1 | |
) | |
echo "$commit" | |
echo "::set-output name=head::$commit" | |
- id: hash-cargo-lock | |
name: Calculate dependency cache key | |
run: | | |
hash=$( | |
ci/strip-own-version-from-cargo-lock.pl Cargo.lock | | |
sha1sum | cut -d ' ' -f 1 | |
) | |
echo "$hash" | |
echo "::set-output name=hash::$hash" | |
update_deps: | |
name: Update dependencies | |
needs: cache_info | |
# Caches on Windows and Unix do not interop: | |
# https://github.com/actions/cache/issues/330#issuecomment-637701649 | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Cache cargo registry index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry/index | |
key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }} | |
restore-keys: cargo-index- | |
- id: cargo-deps | |
name: Cache cargo dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry/cache | |
~/.cargo/git/db | |
key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }} | |
- name: Check out the repository | |
uses: actions/checkout@v2 | |
- name: Fetch dependencies and update cargo registry | |
run: cargo fetch --locked | |
build_assets: | |
name: Build assets | |
needs: [create_release, cache_info, update_deps] | |
runs-on: ${{ matrix.config.os }} | |
outputs: | |
status: ${{ job.status }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
# Linux | |
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu } | |
# Macos | |
- { os: macos-latest, target: x86_64-apple-darwin } | |
target_cpu: [generic] | |
toolchain: [stable] | |
cross: [false] | |
include: | |
# Windows | |
- config: { os: windows-latest, target: x86_64-pc-windows-msvc } | |
target_cpu: generic | |
toolchain: stable-x86_64-pc-windows-msvc | |
cross: false | |
steps: | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
target: ${{ matrix.config.target }} | |
override: true | |
default: true | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Restore cargo registry index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry/index | |
key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }} | |
- name: Restore cargo dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry/cache | |
~/.cargo/git/db | |
key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }} | |
- name: Set up features and cargo config | |
shell: bash | |
run: | | |
mkdir .cargo | |
cat > .cargo/config.toml <<EOF | |
[target.${{ matrix.config.target }}] | |
rustflags = ["-C", "target-cpu=${{ matrix.target_cpu }}"] | |
[profile.release] | |
lto = "thin" | |
EOF | |
- if: ${{ matrix.cross }} | |
name: Create Cross.toml | |
shell: bash | |
run: | | |
cat > Cross.toml <<EOF | |
[build.env] | |
passthrough = ["DATE"] | |
EOF | |
- name: Build vitup binary | |
uses: actions-rs/cargo@v1 | |
env: | |
DATE: ${{ needs.create_release.outputs.date }} | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: > | |
--manifest-path vitup/Cargo.toml | |
--verbose | |
--locked | |
--release | |
--target ${{ matrix.config.target }} | |
- name: Build iapyx binary | |
uses: actions-rs/cargo@v1 | |
env: | |
DATE: ${{ needs.create_release.outputs.date }} | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: > | |
--manifest-path iapyx/Cargo.toml | |
--verbose | |
--locked | |
--release | |
--target ${{ matrix.config.target }} | |
- name: Build snapshot trigger service binary | |
uses: actions-rs/cargo@v1 | |
env: | |
DATE: ${{ needs.create_release.outputs.date }} | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: > | |
--manifest-path snapshot-trigger-service/Cargo.toml | |
--verbose | |
--release | |
--target ${{ matrix.config.target }} | |
- name: Build registration service binary | |
uses: actions-rs/cargo@v1 | |
env: | |
DATE: ${{ needs.create_release.outputs.date }} | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: > | |
--manifest-path registration-service/Cargo.toml | |
--verbose | |
--release | |
--target ${{ matrix.config.target }} | |
- id: pack-assets | |
name: Pack binaries | |
shell: bash | |
run: python3 ./ci/pack-assets.py ${{ needs.create_release.outputs.version }} ${{ matrix.config.target }} ${{ matrix.target_cpu }} | |
- name: Upload binaries to the release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.pack-assets.outputs.release-archive }} | |
asset_name: ${{ steps.pack-assets.outputs.release-archive }} | |
asset_content_type: ${{ steps.pack-assets.outputs.release-content-type }} | |
- name: Upload checksum to the release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.pack-assets.outputs.release-archive }}.sha256 | |
asset_name: ${{ steps.pack-assets.outputs.release-archive }}.sha256 | |
asset_content_type: text/plain | |
publish_release: | |
name: Publish release | |
needs: [create_release, build_assets] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v2 | |
- name: Publish release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
hub release edit --draft=false \ | |
-m 'vit-testing ${{ needs.create_release.outputs.version }}' \ | |
${{ needs.create_release.outputs.tag }} | |
remove_failed_release: | |
name: Remove the release upon a build failure | |
needs: [create_release, build_assets] | |
runs-on: ubuntu-latest | |
# we need always() to force the check to run even if one of the needed jobs fails | |
if: ${{ always() && needs.build_assets.outputs.status == 'failure' }} | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v2 | |
- name: Remove release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: hub release delete ${{ needs.create_release.outputs.version }} |