summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-21 01:10:56 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-21 01:48:40 +0100
commitb48b0d650cc045fb309819d34928478c05640bf9 (patch)
treef1cf0637371f31a61fdc3de1a8290e83322d972e /.github/workflows
parentc8b0be21f50b881756fcb61c6b72a96081264e3e (diff)
Release action
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/release.yml62
1 files changed, 62 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..2ec7c504
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,62 @@
+# Based on ripgrep's release action:
+# https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/release.yml
+
+name: Build Release Binaries
+on:
+ release:
+ types: [created]
+
+jobs:
+ build-release:
+ name: build-release
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ build: [linux, macos, win-msvc]
+ include:
+ - build: linux
+ os: ubuntu-22.04
+ target: x86_64-unknown-linux-gnu
+ - build: macos
+ os: macos-12
+ target: x86_64-apple-darwin
+ - build: win-msvc
+ os: windows-2022
+ target: x86_64-pc-windows-msvc
+
+ steps:
+ - uses: actions/checkout@v3
+ - uses: dtolnay/rust-toolchain@stable
+
+ - name: Build release binary
+ run: cargo build -p typst-cli --release
+
+ - name: Strip binary (Linux and macOS)
+ if: matrix.build == 'linux' || matrix.build == 'macos'
+ run: strip "target/release/typst"
+
+ - name: Build archive
+ shell: bash
+ run: |
+ directory="typst-${{ matrix.target }}"
+ mkdir "$directory"
+ cp {README.md,LICENSE,NOTICE} "$directory/"
+ if [ "${{ matrix.os }}" = "windows-2022" ]; then
+ cp "target/release/typst.exe" "$directory/"
+ 7z a "$directory.zip" "$directory"
+ echo "ASSET=$directory.zip" >> $GITHUB_ENV
+ else
+ cp "target/release/typst" "$directory/"
+ tar czf "$directory.tar.gz" "$directory"
+ echo "ASSET=$directory.tar.gz" >> $GITHUB_ENV
+ fi
+
+ - name: Upload release archive
+ uses: actions/upload-release-asset@v1.0.2
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: ${{ env.ASSET }}
+ asset_name: ${{ env.ASSET }}
+ asset_content_type: application/octet-stream