Refactors the Powershell script which built the .download_info file for
web into the keyman-web-release.sh script, and then bypasses the path
rewriting that msys does when calling a Windows executable (rsync).
This was tricky because msys was mangling all the paths to Windows-style
but we specifically need to reference one remote Unix-style path in the
rsync call. As we wanted to move away from the Powershell script anyway,
it was cleaner to resolve this in one go by moving the whole script to
bash.
The new tc-download-info.inc.sh script is a minimally generalized
version of the download_info writing from keyman-linux-release.sh, and
once the dust settles, it would be good to DRY this out.
Note that this is still Windows-only, despite the rest of the build
being basically platform-agnostic. I wanted to get this stable before we
generalize, which should be fairly straightforward, as it's only the
rsync call which will be touched.
Tested locally with a drop-in Windows executable that just prints its
arguments, to verify that path mangling is not occurring where we don't
want it. The DEBUG lines in keyman-web-release.sh will be removed once
we are confident this is correct.
Fixes: #14225
This change prefixes functions with `ba_` that are intended to be run on
a Linux build agent. That should make it easier to distinguish them from
functions that deal with building Keyman for Linux.
Test-bot: skip
However, we have to use double quotes inside of the string as well so that it gets treated as a command with parameters instead of a single command with spaces.
Follow-up-of: #14168
Part-of: #13399
Test-bot: skip
However, we have to use double quotes inside of the string as well so
that it gets treated as a command with parameters instead of a single
command with spaces.
Follow-up-of: #14168
Part-of: #13399
Test-bot: skip
This changes variable references in the powershell scripts to use braces
(`${FOO}` instead of `$FOO`). This solves the problem where powershell
considers the colon in the rsync command as being part of a variable.
This should fix release builds for Web and Developer.
Also commented some unused variables.
Follow-up-of: #14167,#14168
Part-of: #13399
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.
This fixes developer release builds. Previously we used single quotes for specifying `--rsync-path`. This caused the parameter to contain the variable name instead of the content.
Also define and set the variables in a powershell script so that they can be used. This was already done for the other powershell scripts, but overlooked for `download-symbol-server-index.ps1`. Also use variables instead of hard-coding values.
Follow-up-of: #14059
Part-of: #13399
Test-bot: skip
This fixes web release builds. Previously we used single quotes
for specifying `--rsync-path`. This caused the parameter to contain
the variable name instead of the content.
This fixes developer release builds. Previously we used single quotes
for specifying `--rsync-path`. This caused the parameter to contain
the variable name instead of the content.
Follow-up-of: #14059
Part-of: #13399
Test-bot: skip
We have to define and set the variables in a powershell script so that
they can be used. This was already done for the other powershell scripts,
but overlooked for this one. Also use variables instead of hard-coding
values.
Previously rsync used some TC variables. Now with the build step being
a script the TC variables are no longer accessible from the script, so
we add new arguments to the build script and then use these when calling
rsync. A similar changer was already made previously for the developer
release build.
Follow-up-of: #14049
Related: #14059
Part-of: #13399
Test-bot: skip
Also remove the check if we're running on Windows since that is already
happening in the calling function.
Fixes: #14151
Follow-up-of: #14049
Test-bot: skip
The `grep` available on macOS doesn't have the `--perl-regexp` option,
so the changes introduced in #14047 caused a regression. This change
directly makes use of Perl which is available on macOS.
Fixes: #14146
Follow-up-of: #14047
Test-bot: skip
This change verifies that `docker buildx` is available and then uses that
for building the images. For that we apparently need the magic line at
the top of the `Dockerfile`s and set the environment variable
`DOCKER_BUILDKIT`. This solves a problem building docker images on
Linux with an older Docker version where the heredocs didn't work.
The Build-bot command is available now to control which platforms are
built. See the wiki for instructions on how to use Build-bot.
Build-bot: build
Test-bot: skip