Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PORT] Bring our workflows into (mostly) parity with tgstation's workflows #2348

Merged
merged 18 commits into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
61a34cf
Update emoji remover workflow for node16 (#75434)
Wayland-Smithy May 15, 2023
beaaef8
Include temporary library for getting sleeping procs (#77773)
Mothblocks Aug 21, 2023
a45d36c
Replace DreamAnnotate action with a python script (#78225)
distributivgesetz Sep 11, 2023
0f00844
Split Run Linters step into multiple steps (#78265)
distributivgesetz Sep 12, 2023
c0ba0db
Fix some odd vscode highlighting errors in workflow files (#78274)
distributivgesetz Sep 12, 2023
8866308
[NO GBP] Fixes me actually breaking Run DreamChecker (#78291)
distributivgesetz Sep 13, 2023
2c1a141
Caches Node and Python Bootstrap for GH Actions (#78307)
san7890 Sep 14, 2023
cabb58b
Removes Sleep Printing Library (#78324)
LemonInTheDark Sep 15, 2023
7a00d19
Fixes TFE being useless after #78265 (#78433)
distributivgesetz Sep 19, 2023
02e527f
Fixes Rust Caching for Run Linters (#80168)
san7890 Dec 8, 2023
596f8cd
Fix alternate tests erroring when there are no alternate versions (#8…
vvvv-vvvv Dec 14, 2023
93edfa1
Fix flaky wizard screenshot test failure, and try to make screenshot …
Mothblocks Dec 29, 2023
7d7662b
Bumps up several GitHub `actions` to the Node 20 Version (#81770)
san7890 Mar 3, 2024
ffd675b
Improves OpenDream Linting (Annotations and More) (#82029)
san7890 Mar 16, 2024
e77e67b
Actually Caches The BYOND Installation in CI (#82364)
san7890 Apr 2, 2024
efbc5c1
Cancel CI on new commit (#83255)
jlsnow301 May 17, 2024
6b08a1e
Icon Cutter has not been ported yet, so let's not waste a step on tha…
LikeLakers2 Jun 21, 2024
a036159
Revert "Fix flaky wizard screenshot test failure, and try to make scr…
LikeLakers2 Jun 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/auto_changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
if: github.event.pull_request.merged == true
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Run auto changelog
uses: actions/github-script@v6
with:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/autowiki.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ jobs:
echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT
- name: Checkout
if: steps.secrets_set.outputs.SECRETS_ENABLED
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Restore BYOND cache
if: steps.secrets_set.outputs.SECRETS_ENABLED
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/BYOND
key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }}
key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }}
- name: Install rust-g
if: steps.secrets_set.outputs.SECRETS_ENABLED
run: |
Expand Down
185 changes: 105 additions & 80 deletions .github/workflows/ci_suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,98 +13,125 @@ on:
merge_group:
branches:
- master

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run_linters:
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
name: Run Linters
runs-on: ubuntu-22.04
concurrency:
group: run_linters-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
timeout-minutes: 5

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Restore SpacemanDMM cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/SpacemanDMM
key: ${{ runner.os }}-spacemandmm
key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }}
restore-keys: |
${{ runner.os }}-spacemandmm-
- name: Restore Yarn cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: tgui/.yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-
${{ runner.os }}-
${{ runner.os }}-yarn-
- name: Restore Node cache
uses: actions/cache@v4
with:
path: ~/.nvm
key: ${{ runner.os }}-node-${{ hashFiles('dependencies.sh') }}
restore-keys: |
${{ runner.os }}-node-
- name: Restore Bootstrap cache
uses: actions/cache@v4
with:
path: tools/bootstrap/.cache
key: ${{ runner.os }}-bootstrap-${{ hashFiles('tools/requirements.txt') }}
restore-keys: |
${{ runner.os }}-bootstrap-
- name: Restore Rust cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-rust
key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}}
restore-keys: |
${{ runner.os }}-build-
${{ runner.os }}-
${{ runner.os }}-rust-
- name: Install OpenDream
uses: robinraju/[email protected]
with:
repository: "OpenDreamProject/OpenDream"
tag: "latest"
fileName: "DMCompiler_linux-x64.tar.gz"
extract: true
- name: Install Tools
run: |
pip3 install setuptools
bash tools/ci/install_node.sh
bash tools/ci/install_spaceman_dmm.sh dreamchecker
cargo install ripgrep --features pcre2
bash tools/ci/install_ripgrep.sh
tools/bootstrap/python -c ''
- name: Run Linters
- name: Give Linters A Go
id: linter-setup
run: ':'
- name: Run Grep Checks
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: bash tools/ci/check_grep.sh
- name: Ticked File Enforcement
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: |
bash tools/ci/check_filedirs.sh tgstation.dme
bash tools/ci/check_changelogs.sh
bash tools/ci/check_grep.sh
bash tools/ci/check_misc.sh
tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json
tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json
tools/bootstrap/python -m tools.maplint.source --github
tools/build/build --ci lint tgui-test
tools/bootstrap/python -m define_sanity.check
tools/bootstrap/python -m dmi.test
tools/bootstrap/python -m mapmerge2.dmm_test
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
- name: Annotate Lints
uses: yogstation13/DreamAnnotate@v2
if: success() || failure()
with:
outputFile: output-annotations.txt

odlint:
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
name: "Lint with OpenDream"
runs-on: ubuntu-22.04
concurrency:
group: odlint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: robinraju/[email protected]
with:
repository: "OpenDreamProject/OpenDream"
tag: "latest"
fileName: "DMCompiler_linux-x64.tar.gz"
extract: true
- name: Check Define Sanity
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: tools/bootstrap/python -m define_sanity.check
- name: Run DreamChecker
if: steps.linter-setup.conclusion == 'success' && !cancelled()
shell: bash
run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh
- name: Run OpenDream
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: ./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING | bash tools/ci/annotate_od.sh
- name: Run Map Checks
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: |
./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING
tools/bootstrap/python -m mapmerge2.dmm_test
tools/bootstrap/python -m tools.maplint.source
- name: Run DMI Tests
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: tools/bootstrap/python -m dmi.test
- name: Check File Directories
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: bash tools/ci/check_filedirs.sh tgstation.dme
- name: Check Changelogs
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: bash tools/ci/check_changelogs.sh
- name: Check Miscellaneous Files
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: bash tools/ci/check_misc.sh
- name: Run TGUI Checks
if: steps.linter-setup.conclusion == 'success' && !cancelled()
run: tools/build/build --ci lint tgui-test

compile_all_maps:
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
name: Compile Maps
needs: [collect_data]
runs-on: ubuntu-20.04
concurrency:
group: compile_all_maps-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
runs-on: ubuntu-22.04
timeout-minutes: 5

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Restore BYOND cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/BYOND
key: ${{ runner.os }}-byond
key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }}
- name: Compile All Maps
run: |
bash tools/ci/install_byond.sh
Expand All @@ -119,16 +146,15 @@ jobs:
collect_data:
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
name: Collect data for other tasks
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
timeout-minutes: 5
outputs:
maps: ${{ steps.map_finder.outputs.maps }}
alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }}
max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }}
concurrency:
group: find_all_maps-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Find Maps
id: map_finder
run: |
Expand All @@ -151,29 +177,26 @@ jobs:
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
name: Integration Tests
needs: [collect_data]

strategy:
fail-fast: false
matrix:
map: ${{ fromJSON(needs.collect_data.outputs.maps).paths }}
concurrency:
group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.map }}
cancel-in-progress: true

uses: ./.github/workflows/run_integration_tests.yml
with:
map: ${{ matrix.map }}
max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}}

run_alternate_tests:
if: "!contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]'"
if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.collect_data.outputs.alternate_tests != '[]' )
name: Alternate Tests
needs: [collect_data]
strategy:
fail-fast: false
matrix:
setup: ${{ fromJSON(needs.collect_data.outputs.alternate_tests) }}
concurrency:
group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.setup.major }}.${{ matrix.setup.minor }}-${{ matrix.setup.map }}
cancel-in-progress: true

uses: ./.github/workflows/run_integration_tests.yml
with:
map: ${{ matrix.setup.map }}
Expand All @@ -182,23 +205,27 @@ jobs:
max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}}

check_alternate_tests:
if: "!contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]'"
if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.collect_data.outputs.alternate_tests != '[]' )
name: Check Alternate Tests
needs: [run_alternate_tests]
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
timeout-minutes: 5
steps:
- run: echo Alternate tests passed.

compare_screenshots:
if: "!contains(github.event.head_commit.message, '[ci skip]') && (success() || failure())"
if: ( !contains(github.event.head_commit.message, '[ci skip]') && (success() || failure()) )
needs: [run_all_tests, run_alternate_tests]
name: Compare Screenshot Tests
runs-on: ubuntu-20.04
timeout-minutes: 15
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup directory
run: mkdir -p artifacts
# If we ever add more artifacts, this is going to break, but it'll be obvious.
- name: Download screenshot tests
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
path: artifacts
- name: ls -R
Expand All @@ -219,7 +246,7 @@ jobs:
echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt
- name: Upload bad screenshots
if: failure()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: bad-screenshots
path: artifacts/screenshot_comparisons
Expand All @@ -229,19 +256,17 @@ jobs:
name: Windows Build
needs: [collect_data]
runs-on: windows-latest
concurrency:
group: test_windows-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
timeout-minutes: 5

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Restore Yarn cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: tgui/.yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-
${{ runner.os }}-
${{ runner.os }}-yarn-
- name: Compile
run: pwsh tools/ci/build.ps1
env:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/codeowner_reviews.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ jobs:
assign-users:

runs-on: ubuntu-latest
timeout-minutes: 5

steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so the job can access it
- uses: actions/checkout@v3
- uses: actions/checkout@v4

#Parse the Codeowner file on non draft PRs
- name: CodeOwnersParser
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/compile_changelogs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
sudo apt-get install dos2unix
- name: "Checkout"
if: steps.value_holder.outputs.ACTIONS_ENABLED
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 25
persist-credentials: false
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker_publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ on:
workflow_dispatch:
jobs:
publish:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Build and Publish Docker Image to Registry
uses: elgohr/Publish-Docker-Github-Action@v5
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/generate_documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ jobs:
generate_documentation:
permissions:
contents: write # for JamesIves/github-pages-deploy-action to push changes in repo
if: "!contains(github.event.head_commit.message, '[ci skip]')"
if: ( !contains(github.event.head_commit.message, '[ci skip]') )
runs-on: ubuntu-20.04
concurrency: gen-docs
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/SpacemanDMM
key: ${{ runner.os }}-spacemandmm-${{ secrets.CACHE_PURGE_KEY }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr_emoji.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
title_and_changelog:
runs-on: ubuntu-20.04
steps:
- uses: Wayland-Smithy/emoji-stripper-action@8f4c2fe9748bb9b02f105be4e72a1a42b0f34d84
- uses: Wayland-Smithy/emoji-stripper-action@de0c1d158edee50700583d6454aa5f5117337599
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
title: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/remove_guide_comments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Remove guide comments
uses: actions/github-script@v6
with:
Expand Down
Loading
Loading