Skip to content

use insta for snapshots #1269

use insta for snapshots

use insta for snapshots #1269

Workflow file for this run

name: Build
on:
push:
branches: [main]
tags:
- v*
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: ${{ matrix.os.name }}
runs-on: ${{ matrix.os.runner }}
strategy:
fail-fast: false
matrix:
os:
- runner: ubuntu-latest
name: ubuntu
artifact: linux-x64
exe: hemtt
- runner: windows-latest
name: windows
artifact: windows-x64
exe: hemtt.exe
# Intel Mac
- runner: macos-13
name: macos-x64
artifact: macos-x64
exe: hemtt
# ARM Mac
- runner: macos-latest
name: macos-arm
artifact: macos-arm64
exe: hemtt
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- run: echo "RELEASE=true" >> $GITHUB_ENV
if: startsWith(github.ref, 'refs/tags/') && matrix.os.name == 'ubuntu'
- run: echo "RELEASE=true" >> $env:GITHUB_ENV
if: startsWith(github.ref, 'refs/tags/') && matrix.os.name == 'windows'
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
key: build-${{ matrix.os.name }}
- name: Compile
run: cargo build --release
- name: Upload
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os.artifact }}
path: target/release/${{ matrix.os.exe }}
mods:
name: ${{ matrix.os.name }} / ${{ matrix.mod.repo }}
runs-on: ${{ matrix.os.runner }}
needs:
- build
strategy:
fail-fast: false
matrix:
os:
- runner: ubuntu-latest
name: ubuntu
artifact: linux-x64
- runner: windows-latest
name: windows
artifact: windows-x64
mod:
- repo: CBATeam/CBA_A3
commit: b99dddf46aca7cea008bca56f5a553c5d7776219
- repo: acemod/ACE3
commit: eb57fa49c404e662abcd18c7e52c1f7c4b67a9b0
- repo: IDI-Systems/acre2
commit: e5c1bba58b63e18d03721a68d32efd39748af551
- repo: ArmaForces/Mods
commit: 79d21ac395d16cb7ed1ed556b0da4cbc67af98c9
- repo: Theseus-Aegis/Mods
commit: 943906d18817a7f0829742f0c91cdad34456c594
- repo: SynixeContractors/Mod
commit: b04fb1ea3a291366017026e2ec94f95a0f28eb8b
steps:
- name: Download HEMTT
uses: actions/download-artifact@v4
with:
name: ${{ matrix.os.artifact }}
path: hemtt
- name: Checkout
uses: actions/checkout@v4
with:
repository: ${{ matrix.mod.repo }}
path: mod
ref: ${{ matrix.mod.commit }}
- name: Install Linux & MacOS
if: startsWith(matrix.os.runner, 'ubuntu') || startsWith(matrix.os.runner, 'macos')
run: |
cd hemtt && cp hemtt /usr/local/bin/hemtt && chmod +x /usr/local/bin/hemtt
- name: Install Windows
if: startsWith(matrix.os.runner, 'windows')
run: |
cd hemtt && copy hemtt.exe C:\Windows\System32\hemtt.exe
- name: Run `hemtt dev` on ${{ matrix.mod.repo }}
run: |
cd mod && hemtt dev
- name: Install Arma 3 Tools
uses: arma-actions/arma3-tools@linux
with:
toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }}
- name: Run `hemtt build` on ${{ matrix.mod.repo }}
run: |
cd mod && hemtt build
release:
name: Release
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs:
- build
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download Linux x64
uses: actions/download-artifact@v4
with:
name: linux-x64
path: release
- name: Rename Linux x64
run: |
cd release && mv hemtt linux-x64
- name: Download Windows x64
uses: actions/download-artifact@v4
with:
name: windows-x64
path: release
- name: Zip Windows x64
run: |
cd release && zip windows-x64.zip hemtt.exe && rm hemtt.exe
- name: Download MacOS x64
uses: actions/download-artifact@v4
with:
name: macos-x64
path: release
- name: Rename MacOS x64
run: |
cd release && mv hemtt darwin-x64
- name: Download MacOS ARM64
uses: actions/download-artifact@v4
with:
name: macos-arm64
path: release
- name: Rename MacOS ARM64
run: |
cd release && mv hemtt darwin-arm64
- name: Release
uses: softprops/action-gh-release@v2
with:
files: |
release/*
draft: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
winget:
needs:
- release
runs-on: windows-latest
steps:
# Requires forked winget-pkgs: https://github.com/microsoft/winget-pkgs to the same account as this project
- name: Submit to WinGet
uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: BrettMayson.HEMTT
installers-regex: 'windows-x64.zip'
token: ${{ secrets.WINGET_TOKEN }} # Classic Personal Access Token with [public_repo, workflow] scopes