* Update rebar3's releases.json per current results
* Up rebar3 test versions
* Retire windows-2019
* Add "support" to win25-vs2026 next to win25
windows-2025-vs2026 label was previously a beta testing
tag but is now the production default
* Fix rebar3 test releases.json
* Bump per CI results
* Fix per CI results (I checked in releases.json)
* Adapt to Ubuntu 26.04 (no -arm)
* Consider Ubuntu ARM variants in execution
* Typo
* Bump it to the minimum expect value
* Bump it to the minimum expect value
* Tweak ARM tests: drop windows-11
* Fix per prior test results
* Try testing OTP to update README
* Improve guarantees on the README (via tests)
* Improve guarantees on the README (via tests)
Trust tests in intervals (if first Ok and last Ok the middle Ok)
* Add further constraints for testing (per README)
* Remove moving-target test
This is prone to fail for an issue with OTP's main
branch but it shouldn't affect the action, so we
remove it
* Respect Hex's boundaries
* Make it consistent (no need for .0 in versioning)
* Restrict it a bit
We keep the README as-is, since there's nothing preventing us
from thinking it works as stated, but we move our tests forward
* Make it easier to follow
* Fix it per stalled CI
* Fix it: no macos-16; it's macos-26
* Deprecate macos-13
Per https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down
* Make ImageOS support more explicit
* Move forward
* Run ARM-specific test consistently
* Fix for builds.hex.pm
https://builds.hex.pm/builds/otp/arm64/ubuntu-<x>.04/builds.txt
file is only available when <x> >= 20.
* Fix for builds.hex.pm
https://builds.hex.pm/builds/otp/arm64/ubuntu-20.04/builds.txt
does not contain Erlang 19 any more...
* Test Elixir main-otp-28 / Erlang maint-28
* Test Gleam nightly / OTP 28
* Tweak versioning
1. stop trying to "coerce" versions on input
2. handle `OTP-` in one more place
3. handle `nightly`
* Remove tests that should be failing previously
There is no strict 27 for macos-15, for example
* Remove similar tests
We'll test once per platform in similar conditions
* `await` for `assert.rejects` (not noticeable if alone inside `it`)
* Test maint- for strict and loose
* Set expectations
* Ease testing without having to install via `require`
* Code a solution for the tests
* Avoid errors on unit tests
rebar3 is saying something about SSL, most likely because
our tests are installing a bunch of OTPs which makes
for unpredictable behavior
* Avoid errors on integration tests
* Act on CodeQL's actions/missing-workflow-permissions
https://codeql.github.com/codeql-query-help/actions/actions-missing-workflow-permissions/
* Be more specific in the matched regex
And don't match a group if we don't need to match one
* Make it slightly faster since we know what after -otp-
I create a const because both expressions are looking for
the same thing
* Do a bit of YAMLlint'ing
* Ease consumer cache invalidation
By providing an output with the action version we ease
cache invalidation on consumer, due to the fact we can
now stop worrying about changes to the action's cache itself
Might also be interesting for self-hosted runners...
* Remove duplicates
* Do further validations for robustness
* Update some dependencies' versions (also, get rid of husky)
* Introduce branch dependency execution
We want the most important things to fail first and prevent the
other ones from executing
e.g. if your dist/ is not updated, there's no point seeing the tests fail
* Rid ourselves of bloat
* Introduce expectations for upcoming version
* Tweak whitespace
* Tweak our calls to getVersionFromSpec (increase code consistency)
* Remove non-used variable
* Start coercing on input, stop sorting/maybe prepending 'v' on input
We'll deal with all this in a centralized place to make
it easier to reason on the code
* Revamp our getVersionFromSpec
1. stop accepting maybePrependWithV0, since this is only used in specialized
cases
2. sort versions internally (don't expect it to come sorted)
3. compare rc/strict and .includes in a single go (don't separate these)
4. don't expect already coerced version arrays, coerce them when required
(the maybeCoerced version had changed already, which means we're smarter
at putting stuff inside the version array)
5. raise an exception if a semver-invalid version is not flagged as strict
* Reduce our expectations, but still be appropriate to our mission
* Update our tests for our new expectations (start the TDD bit)
* Execute npm run build-dist and keep results
* Increase inter-job dependency
* Don't expect markdownlint to be installed remotely
* Revert "Increase inter-job dependency"
This reverts commit 500b0fe7e9eec1c4f258b4d16b40719ee1d0a1ad.
* Revert "Introduce branch dependency execution"
This reverts commit fbe1317a800d7722f4e8b668c073218263d0ab17.
* Have all the CI workflows run under the same conditions
* Fix as per CI results
* Re-establish the possibility to match versions like 22.3.4.2.1.0
We cheat on the semver matching:
1. we keep an ordered list of versions that respect e.g. 22.3.4
2. if we match 22.3.4 when fetching a version, we get the last value
from the list of versions that respect it, e.g. 22.3.4.2.1.0
(since this is ordered, it should work as previously expected)
This increases code complexity for getVersionFromSpec,
but hopefully not by much...
We also remove throw-based test cases (non-versions will fail later,
with null), and add some tests to prove our need code.
* Trim out linting practices
But still keep them useful
* Add more stuff to test on
* Tweak our debugging (more verbose when the runner is in debug mode)
* Hopefully make it easier to debug
* Have the distribution work :-)
* Adapt to a better reality
* Act on CI results: fix as per what GitHub Actions is requesting
Seems to have worked up until recently, but then it started
breaking :shrug
* Name the workflow a little better
* Enable debug for OTP versions' listings
* Make it easier to detect
* Prevent error annotation on expected error
The fact that one mirror fails in the above test and others follow
working is test enough for me
A single failing mirror should fail, but it's confusing to have
an error annotation for a success (via continue-on-error) while
not being able to suppress it via GitHub Actions
* Trying to figure out why we have a rebar_core exception
Might simply be that the bug is already fixed and we need to bump rebar3
* Try to debug into non-JSON input
* Prevent error in rebar_core
We're getting Access Denied for
Fetching registry from "https://repo.hex.pm:443/registry.ets.gz?"
* Try to figure out what's breaking tests
* Make jsonParse(...).map failure more understandable
* Ease test maintenance
* Tweak folder structure while moving console._ to core._
* New option to work with one or more hex.pm mirrors
Add a new option called `hexpm-mirrors` for one or more hex.pm mirrors.
Default list is `builds.hex.pm`, so behavior is unaffected unless option is
used.
Signed-off-by: Paul Guyot <pguyot@kallisys.net>
* Implement suggested rewording changes from @paulo-ferraz-oliveira
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
Signed-off-by: Paul Guyot <pguyot@kallisys.net>
---------
Signed-off-by: Paul Guyot <pguyot@kallisys.net>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
* Provide an input for github tokens
- By providing an input for github tokens with a default users no longer have to pass
the github token via their environment across workflows.
- Remove GITHUB_TOKEN from our environment in all workflows
* Don't run workflows on main on pull requests
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
* Repeat request on error (while logging it)
* Test one change at a time
* Conditionally authorize requests
This seems to affect Windows builds, so might not be the best solution,
but we're trying to isolate the issue to move forward
* Act on CI results
* Ease consumption via a JSON.parse wrapper
We still throw the error, but in a more controlled manner
* Act on CI results