name: CI on: push: branches: - master pull_request: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: build: timeout-minutes: 90 strategy: fail-fast: false matrix: target: - os: linux cpu: amd64 - os: linux cpu: i386 - os: ubuntu-24-gcc-14 cpu: amd64 - os: macos cpu: amd64 - os: windows cpu: amd64 branch: [version-1-6, version-2-0] include: - target: os: linux builder: ubuntu-22.04 shell: bash - target: os: ubuntu-24-gcc-14 builder: ubuntu-24.04 shell: bash - target: os: macos builder: macos-13 shell: bash - target: os: windows builder: windows-2022 shell: msys2 {0} defaults: run: shell: ${{ matrix.shell }} name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})' runs-on: ${{ matrix.builder }} continue-on-error: ${{ matrix.branch == 'devel' }} steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true - name: Setup Nim uses: "./.github/actions/install_nim" with: os: ${{ matrix.target.os }} cpu: ${{ matrix.target.cpu }} shell: ${{ matrix.shell }} nim_branch: ${{ matrix.branch }} - name: Setup Go uses: actions/setup-go@v2 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.branch 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.branch }}-${{ 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.target.os == 'ubuntu-24-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 nimble test lint: name: "Lint" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 2 # In PR, has extra merge commit: ^1 = PR, ^2 = base - name: Check nph formatting # Pin nph to a specific version to avoid sudden style differences. # Updating nph version should be accompanied with running the new # version on the fluffy directory. run: | VERSION="v0.5.1" ARCHIVE="nph-linux_x64.tar.gz" curl -L "https://github.com/arnetheduck/nph/releases/download/${VERSION}/${ARCHIVE}" -o ${ARCHIVE} tar -xzf ${ARCHIVE} shopt -s extglob # Enable extended globbing ./nph examples libp2p tests tools *.@(nim|nims|nimble) git diff --exit-code