Skip to content

Commit

Permalink
Use HEMTT v1 build system (#104)
Browse files Browse the repository at this point in the history
* Use HEMTT v1

* Remove obsolete tools

* Download HEMTT from GitHub

* Use new HEMTT in CI/CD

* Fix HEMTT build errors

* Fix padding macro warning

* Fix path and env vars

* Do not archive when running CD and add build CI test

* Formatting

* Use maintained upload release asset action

* Fix helper script commands
  • Loading branch information
Timi007 authored Dec 26, 2023
1 parent c474be7 commit bb7a98d
Show file tree
Hide file tree
Showing 19 changed files with 171 additions and 1,957 deletions.
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

[*.yml]
indent_size = 2
14 changes: 13 additions & 1 deletion .github/workflows/arma.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@master
uses: actions/checkout@v4
- name: Validate SQF
run: python3 tools/sqf_validator.py
- name: Validate Config
run: python3 tools/config_style_checker.py
- name: Check for BOM
uses: arma-actions/bom-check@v1

build:
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4
- name: Setup HEMTT
uses: arma-actions/hemtt@v1
- name: Run HEMTT build
run: hemtt build
51 changes: 24 additions & 27 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,45 +12,36 @@ jobs:
if: github.repository == 'Metis-Team/mts_enhanced' && ! contains(github.event.head_commit.message, '[ci skip]')
runs-on: windows-latest
outputs:
NAME: ${{ env.NAME }}
MOD_NAME: ${{ env.MOD_NAME }}
MOD_NAME_LOWER: ${{ env.MOD_NAME_LOWER }}
MAIN_PREFIX: ${{ env.MAIN_PREFIX }}
VERSION: ${{ env.VERSION }}
VERSION_SHORT: ${{ env.VERSION_SHORT }}
SHA_SHORT: ${{ env.SHA_SHORT }}
steps:
- name: Checkout the source code
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Setup HEMTT
uses: arma-actions/hemtt@v1

- 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 HEMTT: $(Test-Path .\\ci\\hemtt.exe)"
echo "Check Binarize: $(Test-Path .\\ci\\binarize\\binarize_x64.exe)"
echo "Check ArmaScriptCompiler: $(Test-Path .\\ci\\ArmaScriptCompiler.exe)"
.\ci\hemtt.exe --version
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 "NAME=$(.\\ci\\hemtt.exe var name)" >> $env:GITHUB_ENV
echo "MOD_NAME=$(.\\ci\\hemtt.exe var modname)" >> $env:GITHUB_ENV
echo "MOD_NAME_LOWER=$((.\\ci\\hemtt.exe var modname).toLower())" >> $env:GITHUB_ENV
echo "MAIN_PREFIX=$(.\\ci\\hemtt.exe var mainprefix)" >> $env:GITHUB_ENV
echo "VERSION=$(.\\ci\\hemtt.exe var version)" >> $env:GITHUB_ENV
echo "VERSION_SHORT=$(($(.\\ci\\hemtt.exe var version) | Select-String -Pattern '^\d+\.\d+\.\d+').Matches.Value)" >> $env:GITHUB_ENV
echo "MOD_NAME=Metis_Enhanced" >> $env:GITHUB_ENV
$version = Select-String -Path "addons\\main\\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: Setup P-Drive for ArmaScriptCompiler
run: |
echo "Creating P: and linking ${{ env.MAIN_PREFIX }}\mts_enhanced\addons"
subst p: include
New-Item -ItemType Junction -Path "p:${{ env.MAIN_PREFIX }}\mts_enhanced\addons" -Target "addons"
- name: Test Binarize
run: |
echo "::group::Run Binarize without arguments (look for missing DLLs)"
Expand All @@ -60,16 +51,19 @@ jobs:

- name: Build (HEMTT)
run: |
echo "${{ env.NAME }} v${{ env.VERSION_SHORT }} (${{ env.VERSION }}; ${{ env.SHA_SHORT }})"
.\ci\hemtt.exe build --release --ci --time
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@v2
uses: actions/upload-artifact@v3
with:
name: ${{ env.MOD_NAME }}
path: releases/${{ env.VERSION }}/* # Upload folder to avoid double-zip artifacts
path: .hemttout/@*
retention-days: 1

publish-release:
Expand All @@ -78,14 +72,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download Artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3

- 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
- name: Prepare GitHub Release
id: release_drafter
uses: release-drafter/release-drafter@v5
with:
Expand All @@ -94,8 +90,9 @@ jobs:
version: ${{ needs.build.outputs.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload to GitHub
uses: actions/upload-release-asset@v1

- name: Upload mod archive to GitHub Release
uses: shogo82148/actions-upload-release-asset@v1.7.2
with:
upload_url: ${{ steps.release_drafter.outputs.upload_url }}
asset_path: ./${{ needs.build.outputs.MOD_NAME }}_${{ needs.build.outputs.VERSION_SHORT }}.zip
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ hemtt
hemtt.exe
releases/*
keys/*
.hemtt/local
.hemttout/
####
14 changes: 14 additions & 0 deletions .hemtt/hooks/post_release/01_rename_zip.rhai
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
let releases = HEMTT_RFS.join("releases");

let src = releases.join(HEMTT.project().prefix() + "-" + HEMTT.project().version().to_string() + ".zip");

if (src.exists()) {
let dst = releases.join(HEMTT.project().name() + "_" + HEMTT.project().version().to_string_short() + ".zip");

print("Moving archive to " + dst);
if (!src.move(dst)) {
fatal("Failed to rename " + src + " to " + dst);
}
} else {
warn("Cannot rename archive. File " + src + " does not exist!");
}
35 changes: 35 additions & 0 deletions .hemtt/project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name = "Metis_Enhanced"
mainprefix = "z"
prefix = "mts"
author = "Bix, PhILoX, Timi007"

[files]
include = [
"mod.cpp",
"README.md",
"LICENSE",
"mts_enhanced_picture.paa",
"mts_enhanced_logo_small.paa",
"mts_enhanced_logo_over_small.paa",
"meta.cpp"
]

[signing]
authority = "mts_enhanced"

[version]
git_hash = 0

[asc]
enabled = true
exclude = [
"/initsettings.sqf",
"/initkeybinds.sqf",
"/xeh_prep.sqf",
]

[hemtt.config]
preset = "Hemtt"

[hemtt.release]
folder = "Metis_Enhanced"
11 changes: 3 additions & 8 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"label": "Build Debug",
"detail": "Build Arma addon with HEMTT in debug mode.",
"type": "process",
"command": "hemtt.exe",
"command": "hemtt",
"args": ["build"],
"group": "build",
"presentation": {
Expand All @@ -18,13 +18,8 @@
"label": "Build Release",
"detail": "Build Arma addon with HEMTT for release.",
"type": "process",
"command": "hemtt.exe",
"args": [
"build",
"--release",
"--time",
"-f"
],
"command": "hemtt",
"args": ["release"],
"group": "build"
}
]
Expand Down
Loading

0 comments on commit bb7a98d

Please sign in to comment.