Loosen the requirements on runs-on #21
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: Upload release artifacts | |
on: | |
release: | |
types: [created] | |
workflow_dispatch: | |
jobs: | |
binaries: | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
rust_target: x86_64-unknown-linux-musl | |
asset_name: action-validator_linux_amd64 | |
- os: macos-latest | |
rust_target: x86_64-apple-darwin | |
asset_name: action-validator_darwin_amd64 | |
- os: ubuntu-latest | |
rust_target: aarch64-unknown-linux-musl | |
asset_name: action-validator_linux_arm64 | |
- os: macos-latest | |
rust_target: aarch64-apple-darwin | |
asset_name: action-validator_darwin_arm64 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
~/.rustup | |
target/ | |
key: ${{ runner.os }}-${{ steps.rust-install.outputs.cachekey }}-${{ matrix.rust_target }}-binary-release | |
- name: Install rust | |
id: rust-install | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.rust_target }} | |
- name: Set Cargo.toml version | |
if: github.event_name == 'release' | |
shell: bash | |
env: | |
RELEASE_TAG: ${{ github.ref }} | |
run: | | |
mv Cargo.toml Cargo.toml.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" Cargo.toml.orig >Cargo.toml | |
mv Cargo.lock Cargo.lock.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" Cargo.lock.orig >Cargo.lock | |
- name: Install cross-compile linker for aarch64-unknown-linux-musl | |
if: matrix.rust_target == 'aarch64-unknown-linux-musl' | |
run: | | |
sudo apt update | |
sudo apt install gcc-aarch64-linux-gnu | |
- name: Build | |
env: | |
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: '/usr/bin/aarch64-linux-gnu-ld' | |
run: | | |
cargo +${{ steps.rust-install.outputs.name }} build --target ${{ matrix.rust_target }} --release --locked | |
- name: Upload | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref }} | |
file: target/${{ matrix.rust_target }}/release/action-validator | |
asset_name: ${{ matrix.asset_name }} | |
crate: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
~/.rustup | |
target/ | |
key: ${{ runner.os }}-${{ steps.rust-install.outputs.cachekey }}-crate-release | |
- name: Install rust | |
id: rust-install | |
uses: dtolnay/rust-toolchain@stable | |
- name: Set Cargo.toml version | |
if: github.event_name == 'release' | |
shell: bash | |
env: | |
RELEASE_TAG: ${{ github.ref }} | |
run: | | |
mv Cargo.toml Cargo.toml.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" Cargo.toml.orig >Cargo.toml | |
mv Cargo.lock Cargo.lock.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" Cargo.lock.orig >Cargo.lock | |
- name: Publish crate | |
if: github.event_name == 'release' | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} | |
run: | | |
cargo publish --allow-dirty | |
npm: | |
strategy: | |
matrix: | |
package-dir: | |
- packages/core | |
- packages/cli | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
~/.rustup | |
target/ | |
key: ${{ runner.os }}-${{ steps.rust-install.outputs.cachekey }}-npm-${{ matrix.package-dir }}-release | |
- name: Install rust | |
if: matrix.package-dir == 'packages/core' | |
id: rust-install | |
uses: dtolnay/rust-toolchain@stable | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
cache: npm | |
node-version: 18 | |
registry-url: "https://registry.npmjs.org" | |
- name: Install root dependencies | |
if: matrix.package-dir == 'packages/core' | |
run: npm ci | |
- name: Build | |
if: matrix.package-dir == 'packages/core' | |
run: npm run build | |
- name: Install package dependencies | |
working-directory: ${{ matrix.package-dir }} | |
run: npm ci | |
- name: Set package.json version | |
if: github.event_name == 'release' | |
shell: bash | |
env: | |
RELEASE_TAG: ${{ github.ref }} | |
working-directory: ${{ matrix.package-dir }} | |
run: | | |
mv package.json package.json.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" package.json.orig >package.json | |
mv package-lock.json package-lock.json.orig | |
sed "s/0\\.0\\.0-git/${RELEASE_TAG##*\/v}/" package-lock.json.orig >package-lock.json | |
- name: Copy README.md and LICENCE to package | |
env: | |
PACKAGE_DIR: ${{ matrix.package-dir }} | |
run: | | |
cp README.md $PACKAGE_DIR/README.md | |
cp LICENCE $PACKAGE_DIR/LICENCE | |
- name: Publish NPM | |
if: github.event_name == 'release' | |
run: npm publish --access public | |
working-directory: ${{ matrix.package-dir }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |