name: Artifacts on: push: # tags: # - 'v*' jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] cpu: [amd64] nim_version: [v2.0.14] rust_version: [1.79.0] include: - os: ubuntu-latest lib_ext: so shell: bash --noprofile --norc -e -o pipefail - os: windows-latest lib_ext: dll shell: msys2 - os: macos-latest lib_ext: so shell: bash --noprofile --norc -e -o pipefail steps: - name: Check out sources uses: actions/checkout@v4 with: submodules: recursive - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Record submodule commit run: git -C vendor/nim-codex rev-parse HEAD > vendor/nim-codex/.codex-commit - name: Cache libcodex build id: cache-libcodex uses: actions/cache@v4 with: path: vendor/nim-codex/build key: ${{ runner.os }}-${{ matrix.cpu }}-libcodex-${{ hashFiles('vendor/nim-codex/.codex-commit') }} - name: Build libcodex (Linux) if: runner.os == 'Linux' && steps.cache-libcodex.outputs.cache-hit != 'true' run: | make update make libcodex - name: Build libcodex (macOS) if: runner.os == 'macOS' && steps.cache-libcodex.outputs.cache-hit != 'true' run: | make update make libcodex - name: MSYS2 (Windows amd64) if: matrix.os == 'windows-latest' && matrix.cpu == 'amd64' uses: msys2/setup-msys2@v2 with: path-type: inherit msystem: UCRT64 install: >- base-devel git mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ntldd-git mingw-w64-ucrt-x86_64-rust - name: Build libcodex (Windows) if: matrix.os == 'windows-latest' && steps.cache-libcodex.outputs.cache-hit != 'true' shell: msys2 {0} run: | pacman -Sy --noconfirm make git config --global core.symlinks false make update make libcodex - name: Package artifacts (Linux/macOS) if: matrix.os != 'windows-latest' run: | mkdir -p dist/${{ matrix.os }}-${{ matrix.cpu }} cp vendor/nim-codex/build/libcodex.${{ matrix.lib_ext }} dist/${{ matrix.os }}-${{ matrix.cpu }}/ cp vendor/nim-codex/library/libcodex.h dist/${{ matrix.os }}-${{ matrix.cpu }}/ tar -czf codex-${{ matrix.os }}-${{ matrix.cpu }}.tar.gz -C dist/${{ matrix.os }}-${{ matrix.cpu }} . echo "ARCHIVE_PATH=codex-${{ matrix.os }}-${{ matrix.cpu }}.tar.gz" >> $GITHUB_ENV - name: Package artifacts (Windows) if: matrix.os == 'windows-latest' shell: msys2 {0} run: | mkdir -p dist/${{ matrix.os }}-${{ matrix.cpu }} for file in libcodex.dll libcodex.dll.a libcodex.lib; do if [ -f "vendor/nim-codex/build/${file}" ]; then cp "vendor/nim-codex/build/${file}" dist/${{ matrix.os }}-${{ matrix.cpu }}/ fi done cp vendor/nim-codex/library/libcodex.h dist/${{ matrix.os }}-${{ matrix.cpu }}/ 7z a codex-${{ matrix.os }}-${{ matrix.cpu }}.zip dist/${{ matrix.os }}-${{ matrix.cpu }}/* echo "ARCHIVE_PATH=codex-${{ matrix.os }}-${{ matrix.cpu }}.zip" >> $GITHUB_ENV - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: codex-${{ matrix.os }}-${{ matrix.cpu }} path: ${{ env.ARCHIVE_PATH }} if-no-files-found: error # publish-release: # needs: build # runs-on: ubuntu-22.04 # steps: # - uses: actions/download-artifact@v4 # with: # path: dist # - name: Create release draft # uses: softprops/action-gh-release@v1 # with: # files: dist/**/codex-*.{tar.gz,zip} # draft: true