[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] Recover automated builds via GitHub Actions (#579)

Marcel Taeumel notifications at github.com
Fri Jul 30 13:08:22 UTC 2021

Adds workflows (i.e., GitHub Actions) for automated builds. Replaces TravisCI and AppVeyor integration.

Automated builds on push/pull-requests:
 - Linux (x86, 64-bit and 32-bit)
 - Linux (ARMv6, ARMv7, ARMv8/Aarch64)
 - macOS (x86, only 64-bit)
 - Windows (x86, 64-bit and 32-bit)

Mostly, those builds include the following flavors:
 - squeak.cog.spur (also for Cuis)
 - squeak.sista.spur (also for Cuis)
 - squeak.stack.spur (also for Cuis)
 - pharo.cog.spur (for Pharo7.0 and before, I suppose)
 - pharo.sista.spur (for Pharo7.0 and before, I suppose)
 - pharo.stack.spur (for Pharo7.0 and before, I suppose)

There are some exceptions from this pattern such as:
 - pharo.* not building on Windows bc. of an issue with third-party lib builds, related to GitHub Actions
 - *.sista.spur bc. of unprepared build target on some platforms such as all ARM targets
 - No Linux itimer-heartbeat builds prepared for *.stack.spur; threaded only for now
 - No pharo.* builds prepared for ARM so far, except pharo.cog.cpur for ARMv6 in monthly builds; see below

Still, many if not all of those issues can easily be fixed in the future. We would just add the missing build configurations. :-)

Note that all these VM flavors include builds for "fast," "assert," and "debug" mode -- which we did not have in our previous TravisCI/AppVeyor setup.


There are also two separate workflows that manage "extra builds," such as for VM flavors that are not used on a regular basis:
 - newspeak.* (incl. ARMv7)
 - *.v3 (incl. ARMv6)
 - *.lowcode
 - pharo.cog.spur for ARMv6

These extra builds are triggered *once per month* or anytime per request.

These extra builds are only in "fast" mode.


All the latest build artifacts can be downloaded from three different tags, which are for my fork as follows:
 - https://github.com/marceltaeumel/opensmalltalk-vm/releases/tag/latest-build
 - https://github.com/marceltaeumel/opensmalltalk-vm/releases/tag/latest-assert-build
 - https://github.com/marceltaeumel/opensmalltalk-vm/releases/tag/latest-debug-build

After merging this pull-request, replace "marceltaeumel" with "opensmalltalk-vm", and you will form the respective URLs. The URL will be stable for any particular VM flavor and platform. **Feel free to share those URLs to "Get the latest bleeding edge OSVM now!"** :-) 

For previous build artifacts, note that all workflows store their artifacts *with a timestamp* after they ran. You can access those artifacts for about 90 days when logged into GitHub. Here is an example:
 - https://github.com/marceltaeumel/opensmalltalk-vm/actions/runs/1073960213

Note that you can download a ZIP archive from GitHub, which will then hold the actual build artifact/container, e.g., \*.zip or \*.tar.gz or \*.dmg.


Finally, we can now manage builds and artifacts for release candidates:
 1. Tag a commit as candidate such as "202107301330"
 2. For each "Build for *"-workflow on the actions page for OSVM, just click "Run workflow" where you enter that tag and manually start the workflow.
 3. Those artifacts will be attached to the tag and are then accessible under, e.g., "https://github.com/marceltaeumel/opensmalltalk-vm/releases/tag/202107301330", just like the *latest-build* artifacts are.

For an actual VM release, we would manually create a release through the GitHub webpage and copy over the artifacts from the latest release candidate. For the squeak-app bundles, we would also copy those over to http://files.squeak.org/base/.


After merging this PR, an *owner* in this repository should:
 - Update the certificates in deploy/squeak, deploy/newspeak, and deploy/pharo and configure the required secret as documented in .github/workflows/macos.yml
 - Deactivate the TravisCI and AppVeyor hooks. Their .yml files have been removed already.

Happy coding!
You can view, comment on, or merge this pull request online at:


-- Commit Summary --

  * Adds latest work on actions for continuous integration.
  * Change deploy branch to "Cog".
  * Try Newspeak builds.
  * Also build for pull_request; only deploy on push. [ci skip]
  * Merge remote-tracking branch 'remotes/upstream/Cog' into Cog
  * Setup all main builds for Linux, macOS, and Windows. Sketch workflow for Linux32xARMv6 (not functional). Adds extra workflow for not-so-common VM flavors.
  * Quick-fix generated FT2Plugin to compile in Linux. Note that code generation does currently not work for that plugin.
  * Quick fix to make squeak.cog.v3 build again on Linux32x86. Do not set or use endOfJITZone. This might not be what we actually want.
  * [ci skip] Another quickfix for making the rather old EventsHandlerPlugin compile on Linux. Where are its Slang sources located anyway?
  * Setup ARM builds for Linux. Remove obsolete build files for TravisCI, AppVeyor, Bintray.
  * In all main "Build for *" workflows, add workflow_dispatch to build artifacts for release candidates per tag.
  * Merge remote-tracking branch 'remotes/upstream/Cog' into Cog

-- File Changes --

    D .appveyor.yml (198)
    A .github/workflows/extra-arm.yml (114)
    A .github/workflows/extra.yml (105)
    A .github/workflows/linux-arm.yml (142)
    A .github/workflows/linux.yml (137)
    A .github/workflows/macos.yml (122)
    A .github/workflows/win.yml (129)
    D .travis.yml (225)
    M build.linux32ARMv6/newspeak.cog.spur/build.assert/mvm (2)
    M build.linux32ARMv6/newspeak.cog.spur/build.debug/mvm (2)
    M build.linux32ARMv6/newspeak.stack.spur/build.assert/mvm (2)
    M build.linux32ARMv6/newspeak.stack.spur/build.debug/mvm (2)
    M build.linux32ARMv6/newspeak.stack.spur/build/mvm (2)
    M build.linux32ARMv6/pharo.cog.spur/build.assert/mvm (2)
    M build.linux32ARMv6/pharo.cog.spur/build.debug/mvm (2)
    M build.linux32ARMv6/squeak.cog.spur/build.assert/mvm (2)
    M build.linux32ARMv6/squeak.cog.spur/build.debug/mvm (2)
    M build.linux32ARMv6/squeak.cog.spur/build/mvm (2)
    M build.linux32ARMv6/squeak.cog.v3/build.assert/mvm (2)
    M build.linux32ARMv6/squeak.cog.v3/build.debug/mvm (2)
    M build.linux32ARMv6/squeak.cog.v3/build/mvm (2)
    M build.linux32ARMv6/squeak.stack.spur/build.assert/mvm (2)
    M build.linux32ARMv6/squeak.stack.spur/build.debug/mvm (2)
    M build.linux32ARMv6/squeak.stack.spur/build/mvm (2)
    M build.linux32ARMv6/squeak.stack.v3/build.assert/mvm (2)
    M build.linux32ARMv6/squeak.stack.v3/build.debug/mvm (2)
    M build.linux32ARMv6/squeak.stack.v3/build/mvm (2)
    A build.linux32ARMv7/newspeak.cog.spur/plugins.ext (3)
    A build.linux32ARMv7/newspeak.cog.spur/plugins.int (29)
    A build.linux32ARMv7/newspeak.stack.spur/plugins.ext (3)
    A build.linux32ARMv7/newspeak.stack.spur/plugins.int (29)
    M build.linux32x86/pharo.cog.spur.lowcode/build/mvm (6)
    M build.linux32x86/pharo.stack.spur.lowcode/build/mvm (6)
    D deploy/bintray-cleanup.sh (37)
    D deploy/bintray.json (15)
    D deploy/bintray.sh (22)
    D deploy/filter-exec.sh (35)
    M deploy/pack-vm.sh (144)
    A deploy/sign-vm.sh (100)
    M platforms/Cross/plugins/IA32ABI/ia32abi.h (4)
    M platforms/unix/vm/sqUnixMemory.c (2)
    A scripts/ci/actions_build.sh (182)
    A scripts/ci/actions_prepare_linux_arm.sh (17)
    A scripts/ci/actions_prepare_linux_x86.sh (68)
    A scripts/ci/actions_prepare_msys.sh (28)
    D scripts/ci/travis_build.sh (142)
    D scripts/ci/travis_helpers.sh (12)
    D scripts/ci/travis_install.sh (144)
    M src/plugins/EventsHandlerPlugin/EventsHandlerPlugin.c (2)
    M src/plugins/FT2Plugin/FT2Plugin.c (2)

-- Patch Links --


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20210730/aed000c8/attachment-0001.html>

More information about the Vm-dev mailing list