Skip to content

Commit

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

* Remove obsolete build scripts

* Use new HEMTT in CI/CD pipeline

* Remove P-Drive setup

* Update CBA macros

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

* Use maintained upload release asset action

* Better job name

* Fix helper script commands
  • Loading branch information
Timi007 authored Dec 26, 2023
1 parent 461599a commit 9abebad
Show file tree
Hide file tree
Showing 18 changed files with 121 additions and 1,913 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
52 changes: 25 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_marker' && ! contains(github.event.head_commit.message, '[ci skip]')
runs-on: windows-latest
outputs:
NAME: ${{ env.NAME }}
MOD_NAME: ${{ env.MOD_NAME }}
PREFIX: ${{ env.PREFIX }}
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 "PREFIX=$(.\\ci\\hemtt.exe var prefix)" >> $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_Marker" >> $env:GITHUB_ENV
$version = Select-String -Path "addons\\markers\\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 }}\${{ env.PREFIX }}\addons"
subst p: include
New-Item -ItemType Junction -Path "p:${{ env.MAIN_PREFIX }}\${{ env.PREFIX }}\addons" -Target "addons"
- name: Test Binarize
run: |
echo "::group::Run Binarize without arguments (look for missing DLLs)"
Expand All @@ -60,32 +51,38 @@ 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:
needs: build
if: github.ref == 'refs/heads/release'
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 +91,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/[email protected]
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!");
}
36 changes: 36 additions & 0 deletions .hemtt/project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name = "Metis_Marker"
mainprefix = "z"
prefix = "mts"
author = "Bix, PhILoX, Timi007"

[files]
include = [
"mod.cpp",
"README.md",
"LICENSE",
"mts_picture.paa",
"mts_logo_small.paa",
"mts_logo_over_small.paa",
"meta.cpp"
]

[signing]
authority = "mts_markers"

[version]
path = "addons/markers/script_version.hpp"
git_hash = 0

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

[hemtt.config]
preset = "Hemtt"

[hemtt.release]
folder = "Metis_Marker"
30 changes: 0 additions & 30 deletions .hemtt/template/scripts/get_version.lua

This file was deleted.

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
2 changes: 1 addition & 1 deletion build.bat
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
@echo off
hemtt.exe build
hemtt build
pause
2 changes: 1 addition & 1 deletion build_release.bat
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
@echo off
hemtt.exe build --release --time -f
hemtt release
pause
44 changes: 0 additions & 44 deletions hemtt.toml

This file was deleted.

32 changes: 16 additions & 16 deletions include/x/cba/addons/main/script_macros_common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- Provide a solid structure that can be dynamic and easy editable (Which sometimes means we cannot adhere to Aim #1 ;-)
An example is the path that is built from defines. Some available in this file, others in mods and addons.
Follows Standard:
Follows Standard:
Object variables: PREFIX_COMPONENT
Main-object variables: PREFIX_main
Paths: MAINPREFIX\PREFIX\SUBPREFIX\COMPONENT\SCRIPTNAME.sqf
Expand All @@ -29,6 +29,10 @@
and include your mod's script_macros.hpp
In your scripts you can then include the addon's component.hpp with relative path)
use in subcomponents (subconfigs)
define SUBCOMPONENT and include parent component's script_component.hpp
currently only supported by SUBADDON, additional macros may be added in the future
TODO:
- Try only to use 1 string type " vs '
- Evaluate double functions, and simplification
Expand All @@ -54,6 +58,10 @@
#define ADDON DOUBLES(PREFIX,COMPONENT)
#define MAIN_ADDON DOUBLES(PREFIX,main)

#ifdef SUBCOMPONENT
#define SUBADDON DOUBLES(ADDON,SUBCOMPONENT)
#endif

/* -------------------------------------------
Macro: VERSION_CONFIG
Define CBA Versioning System config entries.
Expand Down Expand Up @@ -857,15 +865,10 @@ Macro: ISNILS()
#define COMPILE_SCRIPT(var1) compileScript ['PATHTO_SYS(PREFIX,COMPONENT_F,var1)']


#define VERSIONING_SYS(var1) class CfgSettings \
{ \
class CBA \
{ \
class Versioning \
{ \
class var1 \
{ \
}; \
#define VERSIONING_SYS(var1) class CfgSettings { \
class CBA { \
class Versioning { \
class var1 {}; \
}; \
}; \
};
Expand Down Expand Up @@ -1032,12 +1035,9 @@ Macro: PATHTO_FNC()
#define QQEFUNC(var1,var2) QUOTE(QEFUNC(var1,var2))

#ifndef PRELOAD_ADDONS
#define PRELOAD_ADDONS class CfgAddons \
{ \
class PreloadAddons \
{ \
class ADDON \
{ \
#define PRELOAD_ADDONS class CfgAddons { \
class PreloadAddons { \
class ADDON { \
list[]={ QUOTE(ADDON) }; \
}; \
}; \
Expand Down
15 changes: 0 additions & 15 deletions sqfc.json

This file was deleted.

Loading

0 comments on commit 9abebad

Please sign in to comment.