Add a GitHub action to test Keyman Core on Windows / ARM64. We do not
have a TeamCity ARM64 agent for this. There are a number of config
challenges in making this work as many deps do not yet support ARM64;
however the changes are isolated to the .yml.
Test-bot: skip
Also splits the build and publish steps so all packages are built before
first is published, as publishing stomps on package.json files, which
makes subsequent builds trickier.
This needs to be merged to master in order for the action steps to pass.
Build-bot: skip
Test-bot: skip
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.
Packages will be `npm pack`ed on PR and test builds, and published in
release builds.
Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/Fixes: #14963
Test-bot: skip
Build-bot: release:developer
This change adds an option to skip the API checks during a build.
This can be done by adding the trailer `Keyman-Api-Check: skip`
to the PR description.
Fixes: #10454
Test-bot: skip
Keyman-Api-Check: skip
When #14551 and #14552 merged, it resulted in a bug which was exposed by
the unit tests (yay!).
Follows: #14551
Follows: #14552
Build-bot: skip:all build:common_windows,common_mac,common_linux
Test-bot: skip
Removes a number of unused functions from the file, renames remaining
functions to match our builder script prefix patterns, removes unused
imports from various build scripts (e.g. Android).
Fixes: #14453
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.
Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh
Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
android/build.sh.
* Renames functions in builder-basic.inc.sh
More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.
Fixes: #14065
Build-bot: build all
Test-bot: skip
Prevents PRs from keyman-server from being merged unless they already
have the 'automerge' label. This supports the upcoming epic-master-merge
infrastructure, where we would like to automatically approve the PRs but
allow maintainers to merge when ready.
We cannot specify required status checks at this point, because we don't
necessarily know which status checks will be required for a given PR. A
future improvement would be to define a new status check which verifies
that all the expected builds for a given PR have passed, and then make
that into a required status check for all master,beta,stable-x.y,epic/
branches. This status check would need to be updated automatically
whenever another status check completes. Probably should be implemented
as a GHA.
In the future, we could move to using GitHub's auto-merge functionality,
and not use the current auto-merge action but that's a much bigger
change.
Also, upgraded auto-approve to v4.0.0 to remove node deprecation
warnings.
Previously the builder scripts defined a readonly `VERSION` environment
variable for the Keyman version. That caused problems when another
(external) script tried to define a `VERSION` variable. We encountered
this problem when trying to move the TC build steps of a configuration
into a single script (#13399) when we tried to source `~/.nvm/nvm.sh`.
This change uses a Keyman specific prefix for the version variables and
renames `VERSION` → `KEYMAN_VERSION` etc. Unfortunately these variables
are used in a lot of places, so this turned out to be a bit of a yak
shave.
Test-bot: skip
Fixes#10590.
Cancels existing running or queued test builds on TeamCity when a new
build is started for the same 'branch' (aka branch or PR).
Does not touch release builds or other projects -- only touches
recognized test build configurations.