Skip to content

Fetch Native Windows on ARM Node builds for Node 20+ #1166

Fetch Native Windows on ARM Node builds for Node 20+

Fetch Native Windows on ARM Node builds for Node 20+ #1166

Workflow file for this run

on:
push:
tags:
- v*
pull_request:
branches:
- main
name: Production
jobs:
linux:
name: Build - Linux
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up docker buildx
uses: docker/setup-buildx-action@v2
- name: Build docker image
uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: ./ci/docker
push: false
load: true
tags: volta
- name: Compile and package Volta
run: docker run --volume ${PWD}:/root/workspace --workdir /root/workspace --rm --init --tty volta /root/workspace/ci/build-linux.sh volta-linux
- name: Upload release artifact
uses: actions/upload-artifact@v3
with:
name: linux
path: target/release/volta-linux.tar.gz
linux-arm:
name: Build - Linux ARM
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Install cross-rs
uses: taiki-e/install-action@v2
with:
tool: cross
- name: Compile Volta
run: cross build --release --target aarch64-unknown-linux-gnu
- name: Package Volta
run: |
cd target/aarch64-unknown-linux-gnu/release && tar -zcvf "volta-linux-arm.tar.gz" volta volta-shim volta-migrate
- name: Upload release artifact
uses: actions/upload-artifact@v3
with:
name: linux-arm
path: target/aarch64-unknown-linux-gnu/release/volta-linux-arm.tar.gz
macos:
name: Build - MacOS
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up cargo
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: aarch64-apple-darwin,x86_64-apple-darwin
- name: Compile and package Volta
run: ./ci/build-macos.sh volta-macos
- name: Upload release artifact
uses: actions/upload-artifact@v3
with:
name: macos
path: target/universal-apple-darwin/release/volta-macos.tar.gz
windows:
name: Build - Windows
runs-on: windows-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up cargo
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Add cargo-wix subcommand
run: cargo install cargo-wix
- name: Compile and package installer
run: |
cargo wix --nocapture --package volta --output target\wix\volta-windows.msi
- name: Create zip of binaries
run: powershell Compress-Archive volta*.exe volta-windows.zip
working-directory: ./target/release
- name: Upload installer
uses: actions/upload-artifact@v3
with:
name: windows-installer
path: target/wix/volta-windows.msi
- name: Upload zip
uses: actions/upload-artifact@v3
with:
name: windows-zip
path: target/release/volta-windows.zip
release:
name: Publish release
runs-on: ubuntu-latest
needs:
- linux
- macos
- windows
if: github.event_name == 'push'
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Determine release version
id: release_info
env:
TAG: ${{ github.ref }}
run: echo "version=${TAG:11}" >> $GITHUB_OUTPUT
- name: Fetch Linux artifact
uses: actions/download-artifact@v2
with:
name: linux
path: release
- name: Fetch Linux ARM artifact
uses: actions/download-artifact@v2
with:
name: linux-arm
path: release
- name: Fetch MacOS artifact
uses: actions/download-artifact@v2
with:
name: macos
path: release
- name: Fetch Windows installer
uses: actions/download-artifact@v2
with:
name: windows-installer
path: release
- name: Fetch Windows zip
uses: actions/download-artifact@v2
with:
name: windows-zip
path: release
- name: Show release artifacts
run: ls -la release
- name: Create draft release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
- name: Upload Linux artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-linux.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux.tar.gz
asset_content_type: application/gzip
- name: Upload Linux ARM artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-linux-arm.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-arm.tar.gz
asset_content_type: application/gzip
- name: Upload MacOS artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-macos.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-macos.tar.gz
asset_content_type: application/gzip
- name: Upload Windows installer
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-windows.msi
asset_name: volta-${{ steps.release_info.outputs.version }}-windows-x86_64.msi
asset_content_type: application/x-msi
- name: Upload Windows zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-windows.zip
asset_name: volta-${{ steps.release_info.outputs.version }}-windows.zip
asset_content_type: application/zip
- name: Upload manifest file
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./ci/volta.manifest
asset_name: volta.manifest
asset_content_type: text/plain