Skip to content

WIP: fixing #1597

WIP: fixing #1597 #981

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
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