Merge branch 'master' into release #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on the workflow of ACRE (https://github.com/IDI-Systems/acre2/blob/master/.github/workflows/release.yml) | |
name: Release | |
on: | |
push: | |
branches: | |
- release | |
jobs: | |
build: | |
if: github.repository == 'Metis-Team/mts_nature' && ! contains(github.event.head_commit.message, '[ci skip]') | |
runs-on: windows-latest | |
outputs: | |
MOD_NAME: ${{ env.MOD_NAME }} | |
VERSION: ${{ env.VERSION }} | |
VERSION_SHORT: ${{ env.VERSION_SHORT }} | |
SHA_SHORT: ${{ env.SHA_SHORT }} | |
steps: | |
- name: Checkout the source code | |
uses: actions/checkout@v4 | |
- name: Setup HEMTT | |
uses: arma-actions/hemtt@main | |
- name: Setup Tools | |
run: | | |
C:\msys64\usr\bin\wget.exe ${{ secrets.FTP_SERVER }}/arma_tools.zip --user ${{ secrets.FTP_USERNAME }} --password ${{ secrets.FTP_PASSWORD }} -q | |
Expand-Archive arma_tools.zip -DestinationPath ci | |
echo "Check Binarize: $(Test-Path .\\ci\\binarize\\binarize_x64.exe)" | |
hemtt --version | |
echo "Install Binarize dependencies" | |
cp .\ci\binarize\X3DAudio1_7.dll,.\ci\binarize\XAPOFX1_5.dll C:\Windows\System32\ | |
echo "::group::Set Binarize registry path" | |
New-Item "HKCU:\\Software\\Bohemia Interactive\\binarize" -Force | New-ItemProperty -Name path -Value "${{ github.workspace }}\ci\binarize" | |
echo "::endgroup::" | |
echo "Set env variables" | |
echo "MOD_NAME=Metis_Nature" >> $env:GITHUB_ENV | |
$version = Select-String -Path "addons\\nature\\script_version.hpp" -Pattern '#define (MAJOR|MINOR|PATCHLVL|BUILD) (\d+)' | ForEach-Object { $_.Matches.Groups[2].Value } | Join-String -Separator "." | |
$version_short = (Select-String -InputObject $version -Pattern '^\d+\.\d+\.\d+').Matches.Value | |
echo "VERSION=$version" >> $env:GITHUB_ENV | |
echo "VERSION_SHORT=$version_short" >> $env:GITHUB_ENV | |
echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $env:GITHUB_ENV | |
- name: Test Binarize | |
run: | | |
echo "::group::Run Binarize without arguments (look for missing DLLs)" | |
./ci/binarize/binarize_x64.exe || true # binarize exits with 1 if no file given | |
echo "::endgroup::" | |
shell: bash # outputs missing dll information | |
- name: Build (HEMTT) | |
run: | | |
echo "${{ env.MOD_NAME }} v${{ env.VERSION }} (${{ env.SHA_SHORT }})" | |
hemtt release --no-archive | |
env: | |
BIOUTPUT: 1 # output binarize log | |
- name: Rename build folder | |
run: mv .hemttout/release .hemttout/@${{ env.MOD_NAME }} | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.MOD_NAME }} | |
path: .hemttout/@* | |
retention-days: 1 | |
include-hidden-files: true # Because .hemttout is a hidden directory | |
if-no-files-found: error | |
publish-release: | |
needs: build | |
if: github.ref == 'refs/heads/release' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
- name: Prepare Archives | |
run: | | |
mv ${{ needs.build.outputs.MOD_NAME }}/* . | |
echo "::group::Archive build" | |
zip -r ${{ needs.build.outputs.MOD_NAME }}_${{ needs.build.outputs.VERSION_SHORT }}.zip @${{ needs.build.outputs.MOD_NAME }} | |
echo "::endgroup::" | |
- name: Prepare GitHub Release | |
id: release_drafter | |
uses: release-drafter/release-drafter@v6 | |
with: | |
name: Version ${{ needs.build.outputs.VERSION_SHORT }} | |
tag: v${{ needs.build.outputs.VERSION }} | |
version: ${{ needs.build.outputs.VERSION }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload mod archive to GitHub Release | |
uses: shogo82148/[email protected] | |
with: | |
upload_url: ${{ steps.release_drafter.outputs.upload_url }} | |
asset_path: ./${{ needs.build.outputs.MOD_NAME }}_${{ needs.build.outputs.VERSION_SHORT }}.zip | |
asset_name: ${{ needs.build.outputs.MOD_NAME }}_${{ needs.build.outputs.VERSION_SHORT }}.zip | |
asset_content_type: application/zip | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |