Skip to content

Commit

Permalink
Merge branch 'thewarwithin' of https://github.com/simulationcraft/simc
Browse files Browse the repository at this point in the history
…into thewarwithin
  • Loading branch information
Archimtiros committed Mar 4, 2025
2 parents 2e1c4be + 51b16e0 commit cea134e
Show file tree
Hide file tree
Showing 16 changed files with 217 additions and 579 deletions.
335 changes: 9 additions & 326 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,335 +149,18 @@ jobs:
.git
key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }}

call-spec-test:
spec-test:
needs: [ubuntu-clang-build]
uses: ./.github/workflows/spec_test.yml
with:
for-run-sha: ${{ github.sha }}
secrets: inherit

spec-test:
name: spec-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,
demonhunter_vengeance,
demonhunter_havoc,
druid_balance,
druid_feral,
druid_guardian,
druid_restoration,
evoker_devastation,
evoker_augmentation,
hunter_beast_mastery,
hunter_marksmanship,
hunter_survival,
mage_arcane,
mage_fire,
mage_frost,
monk_brewmaster,
monk_windwalker,
monk_mistweaver,
paladin_protection,
paladin_retribution,
priest_shadow,
rogue_assassination,
rogue_outlaw,
rogue_subtlety,
shaman_elemental,
warlock_affliction,
warlock_demonology,
warlock_destruction,
warrior_arms,
warrior_fury,
warrior_protection,
]
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 allow_experimental_specializations=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 }}
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} log=1 debug=1 ${{ matrix.style_arg }} \
${{ 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 }}
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} html=test.html json=test.json ${{ matrix.style_arg }} \
${{ 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 \
allow_experimental_specializations=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'
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: apl-${{ github.sha }}-${{ matrix.spec }}
path: ${{ matrix.spec }}.simc
retention-days: 1

spec-test-ptr:
name: spec-test-ptr-${{ matrix.spec }}-${{ matrix.fightstyle }}
runs-on: ${{ matrix.os }}
needs: [ubuntu-clang-build]
strategy:
fail-fast: false
matrix:
cppVersion: [17]
compiler: [clang++-15]
spec: [shaman_elemental]
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 ptr=1 allow_experimental_specializations=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 }}
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} log=1 debug=1 ${{ matrix.style_arg }}\
${{ 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 }}
${{ runner.workspace }}/b/ninja/simc ${{ env.SIMC_ARGS }} html=test.html json=test.json ${{ matrix.style_arg }}\
${{ 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 }}
cache-key: ubuntu-clang++-15-for_run-${{ github.sha }}-cpp-17

#spec-test-ptr:
# needs: [spec-test, ubuntu-clang-build]
# uses: ./.github/workflows/spec_test.yml
# with:
# cache-key: ubuntu-clang++-15-for_run-${{ github.sha }}-cpp-17
# is-ptr: true

apl-profile:
name: Action Priority List Dump / Regenerate Profiles
Expand Down
Loading

0 comments on commit cea134e

Please sign in to comment.