[Hunter] Remove Marksmanship from Kill Command #139
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
name: CI | |
on: | |
pull_request: | |
branches: [ thewarwithin ] # TODO: remove if-checks for only DF branch when TWW APLS are ready | |
push: | |
branches: [ thewarwithin ] | |
paths-ignore: | |
- 'SpellDataDump/**' | |
- 'dbc_extract3/**' | |
- 'casc_extract/**' | |
env: | |
SIMC_PROFILE: profiles/CI.simc | |
CCACHE_COMPRESS: true # always enable ccache compression | |
ccache-generation: 0 # bump if you need to "clean" ccache | |
jobs: | |
ubuntu-gcc-build: | |
name: ubuntu-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
compiler: [gcc-12, gcc-7] | |
cppVersion: [17, 20] | |
include: | |
- compiler: gcc-7 | |
cxx: g++-7 | |
packages: gcc-7 g++-7 | |
os: ubuntu-20.04 | |
- compiler: gcc-12 | |
cxx: g++-12 | |
packages: gcc-12 g++-12 | |
os: ubuntu-22.04 | |
exclude: | |
- compiler: gcc-7 | |
cppVersion: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
env: { ccache-prefix: 'ubuntu-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-ccache-${{ env.ccache-generation }}' } | |
with: | |
path: ${{ runner.workspace }}/.ccache | |
key: ${{ env.ccache-prefix }}-${{ github.sha }} | |
restore-keys: ${{ env.ccache-prefix }}- | |
- name: Install deps | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libcurl4-openssl-dev ninja-build ccache ${{ matrix.packages }} | |
- name: Configure | |
run: cmake -H. -B'${{ runner.workspace }}/b/ninja' -GNinja -DBUILD_GUI=OFF | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} -DCMAKE_C_COMPILER=${{ matrix.compiler }} | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_CXX_STANDARD=${{ matrix.cppVersion }} | |
- name: Build | |
env: | |
CCACHE_BASEDIR: ${{ runner.workspace }} | |
CCACHE_DIR: ${{ runner.workspace }}/.ccache | |
CCACHE_MAXSIZE: 192M # full build consumes around ~80, ~2x that to be safe | |
run: | | |
ccache -z | |
ninja -C '${{ runner.workspace }}/b/ninja' | |
ccache -s | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
ubuntu-clang-build: | |
name: ubuntu-build-${{ matrix.compiler }}-C++${{ matrix.cppVersion }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
cppVersion: [17, 20] | |
compiler: [clang++-7, clang++-15] | |
include: | |
- compiler: clang++-7 | |
os: ubuntu-20.04 | |
packages: clang-7 lld-7 | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
packages: clang-15 lld-15 | |
enable_file_prefix_map: true | |
exclude: | |
- compiler: clang++-7 | |
cppVersion: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
env: { ccache-prefix: 'ubuntu-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-ccache-${{ env.ccache-generation }}' } | |
with: | |
path: ${{ runner.workspace }}/.ccache | |
key: ${{ env.ccache-prefix }}-${{ github.sha }} | |
restore-keys: ${{ env.ccache-prefix }}- | |
- name: Install deps | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libcurl4-openssl-dev ninja-build ccache ${{ matrix.packages }} | |
- name: Configure | |
env: | |
UBSAN_STRIP_COUNT: "`echo \"${{ runner.workspace }}//\" | grep -o '/' - | wc -l`" | |
run: cmake -H. -B'${{ runner.workspace }}/b/ninja' -GNinja -DBUILD_GUI=OFF | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }} | |
-DCMAKE_CXX_FLAGS="-Og ${{ matrix.enable_file_prefix_map && format('-ffile-prefix-map={0}/=/', runner.workspace) || ''}} | |
-fno-omit-frame-pointer -fsanitize=address,undefined | |
-fsanitize-undefined-strip-path-components=$UBSAN_STRIP_COUNT" | |
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld -fsanitize=address,undefined" | |
-DCMAKE_CXX_STANDARD=${{ matrix.cppVersion }} | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Build | |
env: | |
CCACHE_BASEDIR: ${{ runner.workspace }} | |
CCACHE_DIR: ${{ runner.workspace }}/.ccache | |
CCACHE_MAXSIZE: 256M # full build consumes around ~124, ~2x that to be safe | |
run: | | |
ccache -z | |
ninja -C '${{ runner.workspace }}/b/ninja' | |
ccache -s | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
tww-spelldata-dump: | |
name: Spell Data Dump | |
runs-on: ${{ matrix.os }} | |
needs: [ ubuntu-clang-build ] | |
if: github.event_name == 'push' | |
strategy: | |
fail-fast: false | |
matrix: | |
cppVersion: [17] | |
compiler: [clang++-15] | |
include: | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
steps: | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
- uses: actions/checkout@v4 | |
- name: Dump Spell Data | |
env: | |
UBSAN_OPTIONS: print_stacktrace=1 | |
SIMC_CLI_PATH: ${{ runner.workspace }}/b/ninja/simc | |
run: ${{ github.workspace}}/SpellDataDump/spelldatadump_ci.sh | |
- name: Check for Non-Trivial Changes | |
run: | | |
if [ "$(git ls-files -m)" = "SpellDataDump/build_info.txt" ]; then | |
git checkout -- SpellDataDump/build_info.txt | |
fi | |
- name: Setup | |
run: echo "SHORT_SHA=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_ENV | |
- name: Commit Spell Data | |
uses: EndBug/add-and-commit@v9 | |
with: | |
message: 'Update Spell Data Dump ${{ env.SHORT_SHA }}' | |
default_author: github_actions | |
fetch: --no-tags --force --prune --no-recurse-submodules --depth=1 origin ${{ github.ref_name }} | |
add: '*.txt' | |
tww-test: | |
name: tww-test-${{ matrix.spec }}-${{ matrix.fightstyle }} | |
runs-on: ${{ matrix.os }} | |
needs: [ ubuntu-clang-build ] | |
strategy: | |
fail-fast: false | |
matrix: | |
cppVersion: [ 17 ] | |
compiler: [ clang++-15 ] | |
spec: [ | |
deathknight_blood, deathknight_unholy, deathknight_frost, | |
druid_balance, druid_feral, druid_guardian, | |
rogue_assassination, rogue_outlaw, rogue_subtlety, | |
demonhunter_vengeance, demonhunter_havoc, priest_shadow | |
] | |
fightstyle: [ singletarget, multitarget, dungeonslice ] | |
include: | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
- fightstyle: multitarget | |
style_arg: desired_targets=10 | |
- fightstyle: dungeonslice | |
style_arg: fight_style=DungeonSlice | |
env: | |
UBSAN_OPTIONS: print_stacktrace=1 | |
SIMC_ARGS: output=/dev/null threads=2 iterations=10 cleanup_threads=1 | |
PLAYER_ARGS: load_default_gear=1 | |
steps: | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
- name: Setup | |
id: setup | |
env: | |
MATRIX_SPEC: ${{ matrix.spec }} | |
run: | | |
echo "CLASS_STR=${MATRIX_SPEC%%_*}" >> "$GITHUB_ENV" | |
echo "SPEC_STR=${MATRIX_SPEC##*_}" >> "$GITHUB_ENV" | |
- name: "Log Debug" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} log=1 debug=1 ${{ matrix.style_arg }} \ | |
enable_all_talents=1 enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "HTML JSON" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} html=test.html json=test.json ${{ matrix.style_arg }} \ | |
enable_all_talents=1 enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "No Talents, No Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "No Talents, No Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "No Talents, All Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_item_effects=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "No Talents, All Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "Starter Talents, No Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} load_default_talents=1 | |
- name: "Starter Talents, No Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} load_default_talents=1 | |
- name: "Starter Talents, All Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_item_effects=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} load_default_talents=1 | |
- name: "Starter Talents, All Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} load_default_talents=1 | |
- name: "All Talents, No Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_talents=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "All Talents, No Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_talents=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "All Talents, All Effects, No Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_talents=1 enable_all_item_effects=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: "All Talents, All Effects, All Sets" | |
if: always() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} ${{ matrix.style_arg }} \ | |
enable_all_talents=1 enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} | |
- name: Dump APL | |
id: dump_apl | |
if: github.event_name == 'push' && matrix.fightstyle == 'singletarget' && !failure() | |
run: | | |
${{ runner.workspace }}/b/ninja/simc save_profiles=1 save_full_profile=0 \ | |
enable_all_talents=1 enable_all_item_effects=1 enable_all_sets=1 \ | |
${{ env.CLASS_STR }}=${{ matrix.spec }} spec=${{ env.SPEC_STR }} ${{ env.PLAYER_ARGS }} \ | |
save_actions=${{ matrix.spec }}.simc | |
- name: Upload APL | |
if: steps.dump_apl.outcome == 'success' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: apl-${{ github.sha }}-${{ matrix.spec }} | |
path: ${{ matrix.spec }}.simc | |
retention-days: 1 | |
tww-apl-dump: | |
name: Action Priority List Dump | |
runs-on: ${{ matrix.os }} | |
needs: [ tww-test, tww-spelldata-dump ] | |
if: github.event_name == 'push' && ( success() || failure() ) | |
strategy: | |
fail-fast: false | |
matrix: | |
cppVersion: [17] | |
compiler: [clang++-15] | |
include: | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download APLs | |
uses: actions/download-artifact@v4 | |
with: | |
path: ActionPriorityLists | |
pattern: apl-${{ github.sha }}-* | |
merge-multiple: true | |
- name: Setup | |
run: echo "SHORT_SHA=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_ENV | |
- name: Commit APLs | |
uses: EndBug/add-and-commit@v9 | |
with: | |
message: 'Update APL Dump ${{ env.SHORT_SHA }}' | |
default_author: github_actions | |
fetch: --no-tags --force --prune --no-recurse-submodules --depth=1 origin ${{ github.ref_name }} | |
add: '*.simc' | |
- name: Cleanup | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: apl-${{ github.sha }}-* | |
ubuntu-run: | |
name: ubuntu-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-${{ matrix.type }} | |
runs-on: ${{ matrix.os }} | |
needs: [ ubuntu-clang-build, ubuntu-gcc-build ] | |
if: github.ref_name == 'dragonflight' | |
strategy: | |
fail-fast: false | |
matrix: | |
cppVersion: [17, 20] | |
compiler: [clang++-7, clang++-15, gcc-7, gcc-12] | |
type: [spell_query, log_debug, patchwerk, dungeon_slice] | |
include: | |
- type: spell_query | |
simc_flags: spell_query=spell > /dev/null | |
- type: log_debug | |
simc_flags: $SIMC_PROFILE log=1 debug=1 max_time=100 | |
- type: patchwerk | |
simc_flags: $SIMC_PROFILE iterations=10 cleanup_threads=1 | |
- type: dungeon_slice | |
simc_flags: $SIMC_PROFILE iterations=10 fight_style=DungeonSlice cleanup_threads=1 | |
- compiler: clang++-7 | |
os: ubuntu-20.04 | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
- compiler: gcc-12 | |
os: ubuntu-22.04 | |
- compiler: gcc-7 | |
os: ubuntu-20.04 | |
exclude: | |
- compiler: clang++-7 | |
cppVersion: 20 | |
- compiler: gcc-7 | |
cppVersion: 20 | |
steps: | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
- name: Run | |
env: | |
UBSAN_OPTIONS: print_stacktrace=1 | |
run: ${{ runner.workspace }}/b/ninja/simc output=/dev/null html=/dev/null json2=/dev/null json3=/dev/null ${{ matrix.simc_flags }} | |
simc-profiles: | |
name: Regenerate profiles | |
runs-on: ${{ matrix.os }} | |
needs: [ ubuntu-clang-build ] | |
if: github.event_name == 'push' && github.ref_name == 'dragonflight' | |
strategy: | |
fail-fast: false | |
matrix: | |
cppVersion: [17] | |
compiler: [clang++-15] | |
include: | |
- compiler: clang++-15 | |
os: ubuntu-22.04 | |
steps: | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ runner.workspace }}/b/ninja/simc | |
profiles | |
tests | |
generate_profiles_ci.sh | |
.git | |
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} | |
- uses: actions/checkout@v4 | |
- name: Run | |
env: | |
UBSAN_OPTIONS: print_stacktrace=1 | |
SIMC_CLI_PATH: ${{ runner.workspace }}/b/ninja/simc | |
run: ${{ github.workspace }}/generate_profiles_ci.sh | |
- name: Commit Profiles | |
uses: EndBug/add-and-commit@v9.1.4 | |
with: | |
message: 'Regenerate profiles' | |
default_author: github_actions | |
fetch: --no-tags --force --prune --no-recurse-submodules --depth=1 origin ${{ github.ref_name }} | |
add: '*.simc' | |
build-osx: | |
name: macos-latest | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: make SANITIZE=1 -C engine debug -j 2 | |
- name: Smoke Test | |
if: github.ref_name == 'dragonflight' | |
run: ./engine/simc $SIMC_PROFILE iterations=5 output=/dev/null html=/dev/null json2=/dev/null cleanup_threads=1 | |
windows-VS: | |
name: windows-VS-${{ matrix.vs }}-${{ matrix.arch }} | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
vs: [2019] | |
arch: [x64, amd64_arm64] | |
include: | |
- arch: x64 | |
runSmokeTest: true | |
env: | |
CMAKE_BUILD_DIR: ${{ github.workspace }}/builddir/ | |
steps: | |
- uses: actions/checkout@v4 | |
# Setup the build machine with the most recent versions of CMake and Ninja. Both are cached if not already: on subsequent runs both will be quickly restored from GitHub cache service. | |
- uses: lukka/get-cmake@latest | |
# On Windows runners, let's ensure to have the Developer Command Prompt environment setup correctly. As used here the Developer Command Prompt created is targeting x64 and using the default the Windows SDK. | |
- uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: ${{ matrix.arch }} | |
- name: Generate project files | |
run: | | |
cmake -B "${{ env.CMAKE_BUILD_DIR }}" -GNinja -DBUILD_GUI=OFF -DCMAKE_BUILD_TYPE=Debug | |
- name: Build | |
run: | | |
cmake --build "${{ env.CMAKE_BUILD_DIR }}" | |
- name: Smoke Test | |
if: matrix.runSmokeTest && github.ref_name == 'dragonflight' | |
run: ${{ env.CMAKE_BUILD_DIR }}/simc.exe $env:SIMC_PROFILE iterations=5 output=nul html=nul json2=nul cleanup_threads=1 |