fix: Prevent fork bomb on Windows #1181
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
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 |