diff --git a/.github/workflows/channel_compat.yml b/.github/workflows/channel_compat.yml new file mode 100644 index 00000000..54982758 --- /dev/null +++ b/.github/workflows/channel_compat.yml @@ -0,0 +1,57 @@ +name: Channel Compat + +# Run the unit tests against the package versions an OVOS distro release +# channel pins, instead of against current dev siblings. +# +# The distro publishes one constraints file per channel, fetched live by the +# reusable workflow and uploaded as an artifact. As of writing, `stable` pins +# ovos-workshop 3.4.x and `testing` pins 7.0.x, against an ovos-core of 1.3.x +# and 2.1.x respectively — both far below dev. That gap matters most here: +# workshop is what a skill container freezes, so a workshop change that is green +# on dev can still break every skill on the fleet. +# +# This is the third layer of the compat program: +# +# boundary pins where did the behavior change? +# (ovos-test-harness test/backcompat) +# channels what does the fleet run today? (this file) +# dev edge where is the stack going? (build_tests.yml) +# +# soft_fail is TRUE for now. A channel is behind dev by construction, so +# the first runs are expected to fail a pile of tests — that is the finding, not +# a broken job. TURN soft_fail OFF once the baseline is established, the same +# way ovos-test-harness did it: check in a per-channel known-gap file, strict- +# xfail exactly those node ids, and let anything else be red. +# See https://github.com/OpenVoiceOS/ovos-test-harness (test/channel_gaps/). + +on: + pull_request: + branches: [dev] + push: + branches: [dev] + schedule: + # The channels move on the distro's schedule, not on this repo's. + - cron: "0 6 * * 1" + workflow_dispatch: + +jobs: + channel-compat: + strategy: + fail-fast: false + matrix: + include: + - channel: stable + url: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-stable.txt + - channel: testing + url: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-testing.txt + name: ${{ matrix.channel }} + uses: OpenVoiceOS/gh-automations/.github/workflows/channel-compat.yml@dev + secrets: inherit + with: + channel_url: ${{ matrix.url }} + channel_name: ${{ matrix.channel }} + # GitHub rejects `continue-on-error` on a job that calls a reusable + # workflow, so the advisory mode is an input instead. + soft_fail: true + test_path: 'test/unittests' + install_extras: 'test'