Continuous Integration #4024
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
name: Continuous Integration | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
timeout-minutes: 90 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- os: linux | |
cpu: amd64 | |
- os: linux | |
cpu: i386 | |
- os: linux-gcc-14 | |
cpu: amd64 | |
- os: macos | |
cpu: amd64 | |
- os: windows | |
cpu: amd64 | |
nim: | |
- ref: version-1-6 | |
memory_management: refc | |
# The ref below corresponds to the branch "version-2-0". | |
# Right before an update from Nimble 0.16.1 to 0.16.2. | |
# That update breaks our dependency resolution. | |
- ref: 8754469f4947844c5938f56e1fba846c349354b5 | |
memory_management: refc | |
include: | |
- platform: | |
os: linux | |
builder: ubuntu-22.04 | |
shell: bash | |
- platform: | |
os: linux-gcc-14 | |
builder: ubuntu-24.04 | |
shell: bash | |
- platform: | |
os: macos | |
builder: macos-13 | |
shell: bash | |
- platform: | |
os: windows | |
builder: windows-2022 | |
shell: msys2 {0} | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
name: '${{ matrix.platform.os }}-${{ matrix.platform.cpu }} (Nim ${{ matrix.nim.ref }})' | |
runs-on: ${{ matrix.builder }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Setup Nim | |
uses: "./.github/actions/install_nim" | |
with: | |
os: ${{ matrix.platform.os }} | |
cpu: ${{ matrix.platform.cpu }} | |
shell: ${{ matrix.shell }} | |
nim_ref: ${{ matrix.nim.ref }} | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '~1.15.5' | |
- name: Install p2pd | |
run: | | |
V=1 bash scripts/build_p2pd.sh p2pdCache 124530a3 | |
- name: Restore deps from cache | |
id: deps-cache | |
uses: actions/cache@v3 | |
with: | |
path: nimbledeps | |
# Using nim.ref as a simple way to differentiate between nimble using the "pkgs" or "pkgs2" directories. | |
# The change happened on Nimble v0.14.0. | |
key: nimbledeps-${{ matrix.nim.ref }}-${{ hashFiles('.pinned') }} # hashFiles returns a different value on windows | |
- name: Install deps | |
if: ${{ steps.deps-cache.outputs.cache-hit != 'true' }} | |
run: | | |
nimble install_pinned | |
- name: Use gcc 14 | |
if : ${{ matrix.platform.os == 'linux-gcc-14'}} | |
run: | | |
# Add GCC-14 to alternatives | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14 | |
# Set GCC-14 as the default | |
sudo update-alternatives --set gcc /usr/bin/gcc-14 | |
- name: Run tests | |
run: | | |
nim --version | |
nimble --version | |
gcc --version | |
NIMFLAGS="${NIMFLAGS} --mm:${{ matrix.nim.memory_management }}" | |
nimble test |