WIP: fixing #1597 #981
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
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 | |
macos: | |
name: Build - MacOS | |
runs-on: macos-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Set up cargo | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.75 | |
- name: Cargo Cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Compile and package Volta | |
run: ./ci/build-macos-x86_64.sh volta-macos | |
- name: Upload release artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos | |
path: target/release/volta-macos.tar.gz | |
macos-aarch64: | |
name: Build - MacOS (ARM) | |
runs-on: macos-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Set up cargo | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.75 | |
target: aarch64-apple-darwin | |
- name: Cargo Cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Compile and package Volta | |
run: ./ci/build-macos-arm.sh volta-macos-aarch64 | |
- name: Upload release artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-aarch64 | |
path: target/aarch64-apple-darwin/release/volta-macos-aarch64.tar.gz | |
windows: | |
name: Build - Windows | |
runs-on: windows-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Set up cargo | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.75 | |
- name: Cargo Cache | |
uses: Swatinem/rust-cache@v2 | |
- 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: Load Certificate File | |
id: certificate_file | |
if: github.event_name == 'push' | |
uses: timheuer/base64-to-file@v1 | |
with: | |
fileName: "volta-certificate.pfx" | |
encodedString: ${{ secrets.INSTALLER_CERTIFICATE }} | |
- name: Sign Installer | |
if: github.event_name == 'push' | |
env: | |
CERTIFICATE_FILE: ${{ steps.certificate_file.outputs.filePath }} | |
CERTIFICATE_PASSWORD: ${{ secrets.INSTALLER_CERTIFICATE_PASSWORD }} | |
run: | | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe" sign /fd sha256 /f "$env:CERTIFICATE_FILE" /p "$env:CERTIFICATE_PASSWORD" /tr http://ts.ssl.com /td sha256 /d "Volta: Start Your Engines" /du "https://volta.sh" "target\wix\volta-windows.msi" | |
- name: Verify Signature | |
if: github.event_name == 'push' | |
run: | | |
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe" verify /pa "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 | |
- macos-aarch64 | |
- 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 MacOS artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: macos | |
path: release | |
- name: Fetch MacOS (ARM) artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: macos-aarch64 | |
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 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 MacOS (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-macos-aarch64.tar.gz | |
asset_name: volta-${{ steps.release_info.outputs.version }}-macos-aarch64.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 |