name: build
on:
workflow_dispatch:
jobs:
create-release:
runs-on: ubuntu-22.04
outputs:
tag-exists: ${{ steps.check-tag.outputs.exists }}
tag: ${{ steps.project-version.outputs.PROJECT_VERSION }}
steps:
- uses: actions/checkout@v4
- name: Get project version
id: project-version
run: echo "PROJECT_VERSION=$(cargo pkgid | sed 's/.*@//')" >> "$GITHUB_OUTPUT"
- uses: mukunku/tag-exists-action@v1.6.0
id: check-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: ${{ steps.project-version.outputs.PROJECT_VERSION }}
- name: Tag and release
id: tag-release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ steps.project-version.outputs.PROJECT_VERSION }}
if: steps.check-tag.outputs.exists == 'false'
with:
tag_name: ${{ env.TAG }}
release_name: ${{ env.TAG }}
draft: false
prerelease: false
build:
strategy:
matrix:
include:
- os: ubuntu-22.04
packages: sudo apt install autoconf automake autoconf-archive -y
extension:
rust-flags:
archive: tar -czvf talmudifier_linux.tar.gz talmudifier
archive-name: talmudifier_linux.tar.gz
- os: macos-latest
packages: brew install autoconf automake autoconf-archive
extension:
rust-flags:
archive: tar -czvf talmudifier_macos.tar.gz talmudifier
archive-name: talmudifier_macos.tar.gz
- os: windows-latest
packages: echo "anyway..."
extension: .exe
rust-flags: "-Ctarget-feature=+crt-static"
archive: Compress-Archive -Path talmudifier.exe -DestinationPath talmudifier_windows.zip
archive-name: talmudifier_windows.zip
runs-on: ${{ matrix.os }}
needs: create-release
if: needs.create-release.outputs.tag-exists == 'false'
steps:
- uses: actions/checkout@v4
- name: Install packages
run: ${{ matrix.packages }}
- name: Install vcpkg
run: cargo install cargo-vcpkg
- name: vcpkg build
run: cargo vcpkg build
- name: Build
env:
TECTONIC_DEP_BACKEND: "vcpkg"
RUSTFLAGS: ${{ matrix.rust-flags }}
run: cargo build --bin talmudify --features clap --release
- name: Rename
working-directory: target/release
run: mv talmudify${{ matrix.extension }} talmudifier${{ matrix.extension }}
- name: Archive
working-directory: target/release
run: ${{ matrix.archive }}
- name: Upload
uses: softprops/action-gh-release@v2
with:
files: target/release/${{ matrix.archive-name }}
tag_name: ${{ needs.create-release.outputs.tag }}