-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extract forward compatiblity checks and run on nightly schedule (#15437)
Running compatibility checks with every Crystal release between the oldest forward-compatible (1.0.0) and latest is quite expensive. It currently takes 9:20 hours (14 * 0:35). And they're not particularly useful. Checks for each individual release would just help discover an odd compatibility issue that only exists on a specific Crystal version. That's is not very common. In case there are any compatibility issues, they'll most likely affect the oldest release (1.0.0) as well. Testing for that should suffice to identify the vast majority of issues. So we're pulling them out of the pre-merge checks and only run them on a schedule on master (or on demand). This helps reduce unnecessary CI usage.
- Loading branch information
1 parent
2a110b8
commit 8e4cfcd
Showing
3 changed files
with
72 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
name: Forward Compatibility | ||
|
||
on: | ||
push: | ||
paths: | ||
- .github/workflows/forward-compatibility.yml | ||
schedule: | ||
- cron: '0 3 * * *' | ||
workflow_dispatch: | ||
|
||
permissions: {} | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} | ||
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | ||
|
||
env: | ||
TRAVIS_OS_NAME: linux | ||
SPEC_SPLIT_DOTS: 160 | ||
|
||
jobs: | ||
# Test against *each* supported Crystal version for forward compatibility. | ||
# | ||
# This workflow runs on a nightly schedule on `master`. | ||
# It can also be dispatched manually when necessary. | ||
# | ||
# We run a basic version of this test on every commit which covers only the earliest and latest supported versions in `linux.yml#x86_64-gnu-test`. | ||
x86_64-gnu-test-forward_compatibility: | ||
env: | ||
ARCH: x86_64 | ||
ARCH_CMD: linux64 | ||
DOCKER_TEST_PREFIX: crystallang/crystal:${{ matrix.crystal_bootstrap_version }} | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
crystal_bootstrap_version: [1.7.3, 1.8.2, 1.9.2, 1.10.1, 1.11.2, 1.12.2, 1.13.3, 1.14.1] | ||
flags: [""] | ||
include: | ||
# libffi is only available starting from the 1.2.2 build images | ||
- crystal_bootstrap_version: 1.1.1 | ||
flags: "FLAGS=-Dwithout_ffi USE_PCRE1=true" | ||
- crystal_bootstrap_version: 1.2.2 | ||
flags: "USE_PCRE1=true" | ||
- crystal_bootstrap_version: 1.3.2 | ||
flags: "USE_PCRE1=true" | ||
- crystal_bootstrap_version: 1.4.1 | ||
flags: "USE_PCRE1=true" | ||
- crystal_bootstrap_version: 1.5.1 | ||
flags: "USE_PCRE1=true" | ||
- crystal_bootstrap_version: 1.6.2 | ||
flags: "USE_PCRE1=true" | ||
steps: | ||
- name: Download Crystal source | ||
uses: actions/checkout@v4 | ||
|
||
- name: Prepare System | ||
run: bin/ci prepare_system | ||
|
||
- name: Prepare Build | ||
run: bin/ci prepare_build | ||
|
||
- name: Test | ||
run: ${{ matrix.flags }} bin/ci build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters