## About The Pull Request
Ensures we don't get a repeat of #76345 (unit test that wasn't ticked in
the `_unit_tests.dm` file, fixed in
596ca8b6d4). Basically, we leverage the
code that was already being used in the DME Validator but then expand it
a bunch via using JSON Schemas that correspond to the type of scan we
want to run. Even though sorting unit tests alphabetically is a bit
different than sorting the tgstation DME, it's good to leverage the
already existing framework rather than create a copy-pasta "lesser" code
runner. This went through strenous testing on my end, so let me know if
anything seems off.
While in the area, I added some other niceties that I've found work
really well in GitHub Runners environments, as well as local testing in
case you really like doing that before you make a PR for some reason.
## Why It's Good For The Game

This is what it looks like pre-596ca8b6d4cc49cd69fc104b53b7f4973497a2e5
(this is now merged, so it will pass CI)
De-hardcodes some stuff and allows for some neater flexibility, less
cringe unit tests being coded and not being ticked in the file, etc.
etc.
## Changelog
Nothing for players to care about.
Let me know if you have a better idea than the schemas, I couldn't think
of one that could be really extensible and flexible in the same way this
is.
## About The Pull Request
Bumps the emoji remover action's commit hash +1 to [the current
one](de0c1d158e)
which has passed my node16 testing.
Necessary for when github intends to disable node12 later this year.
## Why It's Good For The Repo
Paying off some tech debt so the action continues to help maintain
maintainer sanity into 2024 and byond,
## Changelog
Non player/admin facing change.
## About The Pull Request
In #74364 (e0ac161029), we wanted to use
the fork for this action rather than MSO's version. However, we only
updated the changeover to the `tgstation` version in one location, not
all occurrences in our CI suite.
This PR cleans that up real fast.
todo: (i'm going to bed or i'd do them before opening the pr)
fork the action over to the org
~~make this more configurable as mothblocks requested~~
~~add this to the windows build and integration test steps (if it
generates a dmb, we gonna validate its got the expected value for client
compatibility)~~
~~test 515 client required fails.~~
https://github.com/MrStonedOne/byond-client-compatibility-check
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Right now alternate tests cannot be changed without also changing the
specific name of the new alternate tests, and existing PRs will be
broken. This allows us to change the names without worry, as we mark
*this* as required. If the tests fail, this is skipped, which does not
count for a required test.
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.
## About The Pull Request
Hey there,
This took a while to do, but here's the gist:
Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.
Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.
Scenarios this PR corrects:
* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*
(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game
If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).
Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.
I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.
(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
Reverts tgstation/tgstation#73159
Pretty sure this wasn't supposed to be merged, considering it disabled a
test, a workflow run, and implements an atom New override
More merge queue bullshit. Cancels are counted as failures, and even
though on my test branch it worked completely fine, when trying on two
real PRs, it did not.
This makes it so merges into master might mess with CI clogging again,
but also merge queue is going to do that on its own, and the gain is
worth it.

Probably lets us use merge queue. I would be doing this on a fork but I
don't have access to the beta 🤷♀️
Pull request for the sake of downstreams but I intend on self merging
this (and my followup test PRs, though to another branch). Will start
with commit queue on my project branch.
Should be noted that I predict flaky tests might hit us harder, since it
might stop the entire queue? I'll see
## About The Pull Request
The tool added in #72372 is pretty awesome. The output is uhh cryptic
though. I had to read the source code to realize the (line 382) or
whatever part of the message was the dmm line number and there's stack
traces everywhere. I've made it support github action error messages so
now you get this beauty if you mess up:

Or, in the run summary:

Errors parsing the lint yml's will also output github action errors,
although the line number will always be 1 since the yaml parser discards
line numbers to my knowledge.
In the midst of doing this, I made the error type contain the file and
line info, and added a bunch of type hints in the midst of trying to
understand Mothblock's code.
Note that for power users, the default behavior is still colored
terminal text; `--github` is added by the CI suite to enable this
behavior.
## Why It's Good For The Game
Much easier to see where the errors are and what they are (who even
knows what a 'pop' is? The tg game code calls them grid models.)
## Changelog
Nothing player-facing.
[Documentation
here](https://github.com/Mothblocks/tgstation/blob/maplint/tools/maplint/README.md)
We should not be using greps to the capacity that we currently are. If
you are not smarter than a parser, then you should not try to beat one.
DMM files should NOT be treated as text files that can be parsed with
any old Unix tool. They are a structured language. Because of our abuse
of greps, check_greps is full of hard to read, hard to maintain checks
that do not consistently work, because they all make very specific
assumptions about how TGM works, which are provably untrue.
This format is mostly straightforward for the lints people write, and
easily extensible to the ones people will want to write.
🆑
fix: Fixes a bunch of cases of windows not being where they were
supposed to be, tables/chairs stacking on each other, and other very
small stuff you've never noticed before.
/🆑
Autowiki uses ubuntu-latest, which does not have the libssl version it
wants. GitHub recently increased these from 20.04 to 22.04. Yes this is
extremely can-kicking and we will have to fix our stuff to use 22.04
eventually I'm just tired
Adds a new workflow that will try to automatically detect and rerun
flaky tests, and create an issue report for them.
The detection mechanism is heuristic: if exactly ONE job fails in the CI
Suite, then it is assumed to be flaky, and will be rerun. If the next
run succeeds, then it will create an issue report for that flaky test if
one does not already exist. It will do its best to create a unique but
consistent identifier, aided by PRs like #71515. You can find an example
here: https://github.com/Mothblocks/ss13-workflow-testing/issues/20.
Maintainers can also rename the issue if they wish, it will still be
able to find it.
While there is a chance for this mechanism to go wrong and create bogus
issue reports, it IS possible to easily disable actions, I did it for
the stale one just a bit ago. Most likely, this mechanism going wrong is
going to be the result of randomness leaking in tests, like random human
names, so this can be solved in the tests themselves. I find it
extremely unlikely, but in the worst case scenario where this happens
often, we can add a way for maintainers to edit the issue report and
include a regex to match for runtimes. Just an idea.
Includes a few large-ish downloaded logs from past failures that are
interesting in unique ways. These are used for tests of the title
generator.
## About The Pull Request
Here introduces "project" branches. Branches designed for bit by bit
contributions of large scale refactors and changes. PRs to these
branches will show up on tracker like normal but won't apply to master
until the project branch itself is done and merged in. This allows for
much easier review and atomization without compromising master with
temporary hacky code.
A maintainer will create a project branch on the repository, allowing
any contributor to PR to it like normal. Very simple.
An example of this use can be seen in the basic bots PR. It is too large
to be full sent as one PR, but doing it one bot at a time will result in
a lot of bugs and copy and pasted code. This way, we can update bots one
by one until they're all done, then full send it.
This PR adjusts our CI (as well as merge conflict checks and 515
compatibility) to run on "`project/`" branches in addition to master.
I don't want the tool to rerun flaky tests to rerun show screenshot test
results, or else it will repeat the comment twice if it only fails on
one map.
## About The Pull Request
As requested by Mothblocks the codeowner action will now only parse PRs
that are not drafted.
This is done to align with Githubs default behavior of assigning
codeowners.
The workflow will now also run when a PR is marked as ready for review
(undrafted).
## Why It's Good For The Game
Annoys the codeowners less often
ci_suite.yml runs on your fork. This means you do not have access to
secrets. Every user has had the purge key of blank.
WE have it set to something. Which means the master cache that every PR
pulls from has been unable to match.
This means our cache has been at the max limit all this time, constantly
clearing out old caches, and never reusing any.
## About The Pull Request
Hey there,
It's on the tin, we just cache the whole Rust installation to use over
multiple workflows. Without this, it would take up to _five minutes per
linters workflow run_ to install the whole fucking rust toolchain/crate
dependencies (ref:
https://github.com/san7890/bruhstation/actions/runs/3536980337/jobs/5936542571
).
Now with the cache, it's now down to approximately one minute, thirty
seconds after it's able to pull a cached rust installation (ref:
https://github.com/san7890/bruhstation/actions/runs/3537002138/jobs/5936585526
). More than half is very good, and frees up valuable Github Runners
slots sooner!
I've also always seen linters as that rapid check to immediately call
you out whenever you screw up in a PR, and it taking four minutes sorta
lessens that immediate: "HEY, LISTEN!" aspect
## About The Pull Request
I fucked up the check_grep entry for docking ports.
default grep doesn't support newlines and so I need to use `pcregrep -M`
## Why It's Good For The Game
linters working good
## Changelog
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Docker Publish is now a nightly.
Generate Documentation now runs every 6 hours.
Both used to run every commit, and our CI is getting heavily
bottlenecked. Need to ease some stress.
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Removes all default comments after a PR is opened (and only when it is opened).
Means that I can turn on the pr body merge option without keeping all the cruft
I wanted to move auto labeling into its own workflow, but realized that it and changelog generation were coupled. So I'm detaching that first, and then will work on auto labeling later. Includes general code for a changelog parser so that I can reuse it by that point.
GitHub actions are great for downstreams, as setting up a PHP server for the webhook is not trivial, compared to Existing and getting it for free. They are also much more straightforward to test and update than the webhook. I was able to verify this was working trivially with an empty repository.
Tested and working: Mothblocks/ss13-workflow-testing@0a2de4d
About The Pull Request
As you may have noticed from the warnings in CI runs, Github is depreciating Node 12 since support for it was dropped in April. This is largely remedied by just updating the github action versions to v3. The parameters we use haven't changed their behavior.
Note that multiple bespoke dependencies, such as yogstation13/DreamAnnotate haven't updated, so that might eventually break if Github completely drops Node 12.
Why It's Good For The Game
Compatibility with changes in Github Actions
Changelog
N/A
Every 30 minutes, comments on every PR that was test merged with the rounds it was test merged on, with links.
Only posts one comment, auto updates it.
Gets the information from https://bus.moth.fans/recent-test-merges.json, which caches every 10 minutes to not hit DB hard. External site needed because I don't want to jump through all the hoops for DB approval here. Source code is here: https://github.com/Mothblocks/mothbus/blob/main/src/routes/recent_test_merges.rs#L30
Might time out when merged as it's going to be looking at test merges from 200 rounds, but it'll be fine afterwards