name: Development Build
on:
push:
branches:
- 'dev' workflow_dispatch:
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
linux_build:
strategy:
matrix:
include:
- arch: x86
artifact: subconverter-linux-x86
os: ubuntu-latest
target: i686-unknown-linux-gnu
- arch: amd64
artifact: subconverter-linux-amd64
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- arch: armv7
artifact: subconverter-linux-armv7
os: ubuntu-latest
target: armv7-unknown-linux-musleabihf
- arch: aarch64
artifact: subconverter-linux-aarch64
os: ubuntu-latest
target: aarch64-unknown-linux-musl
runs-on: ${{ matrix.os }}
name: Linux ${{ matrix.arch }} Dev Build
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Determine Version
id: get_version
run: |
SHA=$(git rev-parse --short HEAD)
echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
echo "Determined version: $SHA"
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libssl-dev
- name: Install cross
run: cargo install cross
- name: Build with cross
run: cross build --release --features=web-api --target ${{ matrix.target }}
- name: Prepare artifact
run: |
mkdir -p subconverter/
cp target/${{ matrix.target }}/release/subconverter subconverter/
cp -r base/* subconverter/
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
path: subconverter/
- name: Package Pre-release Artifact (Linux/macOS)
run: tar czf ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz subconverter
- name: Create Pre-release
uses: softprops/action-gh-release@v2
with:
files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz
tag_name: dev-${{ env.RELEASE_VERSION }}
name: Dev Build ${{ env.RELEASE_VERSION }}
prerelease: true
draft: true
macos_build:
strategy:
matrix:
include:
- arch: x86_64
artifact: subconverter-macos-x86_64
os: macos-13
target: x86_64-apple-darwin
- arch: aarch64
artifact: subconverter-macos-aarch64
os: macos-14
target: aarch64-apple-darwin
runs-on: ${{ matrix.os }}
name: macOS ${{ matrix.arch }} Dev Build
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Determine Version
id: get_version
run: |
SHA=$(git rev-parse --short HEAD)
echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
echo "Determined version: $SHA"
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build
run: cargo build --release --features=web-api --target ${{ matrix.target }}
- name: Prepare artifact
run: |
mkdir -p subconverter/
cp target/${{ matrix.target }}/release/subconverter subconverter/
cp -r base/* subconverter/
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
path: subconverter/
- name: Package Pre-release Artifact (Linux/macOS)
run: tar czf ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz subconverter
- name: Create Pre-release
uses: softprops/action-gh-release@v2
with:
files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz
tag_name: dev-${{ env.RELEASE_VERSION }}
name: Dev Build ${{ env.RELEASE_VERSION }}
prerelease: true
draft: true
windows_build:
strategy:
matrix:
include:
- arch: x86
artifact: subconverter-windows-x86
target: i686-pc-windows-msvc
- arch: amd64
artifact: subconverter-windows-amd64
target: x86_64-pc-windows-msvc
runs-on: windows-latest
name: Windows ${{ matrix.arch }} Dev Build
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Determine Version
id: get_version
shell: bash
run: |
SHA=$(git rev-parse --short HEAD)
echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
echo "Determined version: $SHA"
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build
run: |
cargo install --force --locked bindgen-cli
cargo build --release --features=web-api --target ${{ matrix.target }}
- name: Prepare artifact
shell: bash
run: |
mkdir -p subconverter/
cp target/${{ matrix.target }}/release/subconverter.exe subconverter/
cp -r base/* subconverter/
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
path: subconverter/
- name: Package Pre-release Artifact (Windows)
run: 7z a ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.7z subconverter/
- name: Create Pre-release
uses: softprops/action-gh-release@v2
with:
files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.7z
tag_name: dev-${{ env.RELEASE_VERSION }}
name: Dev Build ${{ env.RELEASE_VERSION }}
prerelease: true
draft: true