gleam/.github/workflows/release.yaml

117 lines
3.4 KiB
YAML

name: release
on:
push:
tags:
- "v*"
jobs:
create-release:
name: create-release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.release.outputs.upload_url }}
steps:
- name: Create GitHub release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
build-release:
name: build-release
needs: create-release
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [macos, windows-64bit]
toolchain: [stable]
include:
- build: macos
os: macos-latest
target: x86_64-apple-darwin
- build: windows-64bit
os: windows-latest
target: x86_64-pc-windows-msvc
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
target: ${{ matrix.target }}
profile: minimal
override: true
- name: Build release binary
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target ${{ matrix.target }}
- name: Build archive
shell: bash
run: |
VERSION="${GITHUB_REF#refs/tags/}"
if [ "${{ matrix.os }}" = "windows-latest" ]; then
ARCHIVE="gleam-$VERSION-${{ matrix.build }}.zip"
cp "target/${{ matrix.target }}/release/gleam.exe" "gleam.exe"
7z a "$ARCHIVE" "gleam.exe"
echo "ASSET=$ARCHIVE" >> $GITHUB_ENV
else
ARCHIVE="gleam-$VERSION-${{ matrix.build }}.tar.gz"
cp "target/${{ matrix.target }}/release/gleam" "gleam"
tar -czvf "$ARCHIVE" "gleam"
echo "ASSET=$ARCHIVE" >> $GITHUB_ENV
fi
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/gzip
build-release-musl:
needs: create-release
runs-on: ubuntu-latest
container: clux/muslrust:stable
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Link to predefined musl toolchain
run: |
ln -s /root/.cargo $HOME/.cargo
ln -s /root/.rustup $HOME/.rustup
- name: Build release binary
run: cargo build --release
- name: Build archive
shell: bash
run: |
VERSION="${GITHUB_REF#refs/tags/}"
ARCHIVE="gleam-$VERSION-linux-amd64.tar.gz"
cp "target/x86_64-unknown-linux-musl/release/gleam" "gleam"
tar -czvf "$ARCHIVE" "gleam"
echo "ASSET=$ARCHIVE" >> $GITHUB_ENV
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/gzip