test: test node packages #39
Workflow file for this run
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
# Adapted from https://github.com/getsentry/sentry-cli | |
# See original license: https://github.com/getsentry/sentry-cli/blob/master/LICENSE | |
name: build | |
on: | |
push: | |
branches: | |
- "build-testing" | |
jobs: | |
linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: i686 | |
target: i686-unknown-linux-musl | |
container: i686-musl | |
- arch: x86_64 | |
target: x86_64-unknown-linux-musl | |
container: x86_64-musl | |
- arch: armv7 | |
target: armv7-unknown-linux-musleabi | |
container: armv7-musleabi | |
- arch: aarch64 | |
target: aarch64-unknown-linux-musl | |
container: aarch64-musl | |
name: Linux ${{ matrix.arch }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Build in Docker | |
run: scripts/build-in-docker.sh | |
env: | |
TARGET: ${{ matrix.target }} | |
DOCKER_TAG: ${{ matrix.container }} | |
- run: ls target | |
- run: mv target/${{ matrix.target }}/release/supa-mdx-lint supa-mdx-lint-Linux-${{ matrix.arch }} | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-bin-linux-${{ matrix.arch }} | |
path: supa-mdx-lint-Linux-${{ matrix.arch }} | |
if-no-files-found: "error" | |
macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86_64 | |
target: x86_64-apple-darwin | |
- arch: arm64 | |
target: aarch64-apple-darwin | |
name: macOS ${{ matrix.arch }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.target }} | |
- run: cargo build --target=${{ matrix.target }} --release --locked | |
- run: mv target/${{ matrix.target }}/release/supa-mdx-lint supa-mdx-lint-Darwin-${{ matrix.arch }} | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-bin-macos-${{ matrix.arch }} | |
path: supa-mdx-lint-Darwin-${{ matrix.arch }} | |
if-no-files-found: "error" | |
macos_universal: | |
needs: macos | |
name: macOS universal | |
runs-on: macos-latest | |
steps: | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 #v4.1.8 | |
with: | |
pattern: artifact-bin-macos-* | |
merge-multiple: true | |
- name: Link universal binary | |
run: lipo -create -output supa-mdx-lint-Darwin-universal supa-mdx-lint-Darwin-x86_64 supa-mdx-lint-Darwin-arm64 | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-bin-macos-universal | |
path: supa-mdx-lint-Darwin-universal | |
if-no-files-found: "error" | |
windows: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: i686 | |
target: i686-pc-windows-msvc | |
- arch: x86_64 | |
target: x86_64-pc-windows-msvc | |
name: Windows ${{ matrix.arch }} | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.target }} | |
- run: cargo build --target=${{ matrix.target }} --release --locked | |
- run: mv target/${{ matrix.target }}/release/supa-mdx-lint.exe supa-mdx-lint-Windows-${{ matrix.arch }}.exe | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-bin-windows-${{ matrix.arch }} | |
path: supa-mdx-lint-Windows-${{ matrix.arch }}.exe | |
if-no-files-found: "error" | |
node: | |
name: NPM Package | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: "20.10.0" | |
- name: Download compiled binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
pattern: artifact-bin-* | |
merge-multiple: true | |
- name: Calculate and store checksums | |
shell: bash | |
run: | | |
sha256sum supa-mdx-lint-* | awk '{printf("%s=%s\n", $2, $1)}' > checksums.txt | |
cat checksums.txt | |
- run: npm pack | |
working-directory: packages/supa-mdx-lint | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-pkg-node | |
path: "packages/supa-mdx-lint/*.tgz" | |
if-no-files-found: "error" | |
npm-distributions: | |
name: "Build NPM distributions" | |
runs-on: ubuntu-latest | |
needs: [linux, macos, macos_universal, windows] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: "20.10.0" | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
pattern: artifact-bin-* | |
merge-multiple: true | |
path: binary-artifacts | |
- name: Move binaries into distribution packages | |
run: | | |
mv binary-artifacts/supa-mdx-lint-Darwin-universal npm-binary-distributions/darwin/bin/supa-mdx-lint | |
mv binary-artifacts/supa-mdx-lint-Linux-armv7 npm-binary-distributions/linux-arm/bin/supa-mdx-lint | |
mv binary-artifacts/supa-mdx-lint-Linux-aarch64 npm-binary-distributions/linux-arm64/bin/supa-mdx-lint | |
mv binary-artifacts/supa-mdx-lint-Linux-i686 npm-binary-distributions/linux-i686/bin/supa-mdx-lint | |
mv binary-artifacts/supa-mdx-lint-Linux-x86_64 npm-binary-distributions/linux-x64/bin/supa-mdx-lint | |
mv binary-artifacts/supa-mdx-lint-Windows-i686.exe npm-binary-distributions/win32-i686/bin/supa-mdx-lint.exe | |
mv binary-artifacts/supa-mdx-lint-Windows-x86_64.exe npm-binary-distributions/win32-x64/bin/supa-mdx-lint.exe | |
- name: Remove binary placeholders | |
run: rm -rf npm-binary-distributions/*/bin/.gitkeep | |
- name: Make binaries executable | |
run: chmod +x npm-binary-distributions/*/bin/supa-mdx-lint | |
- name: Package distribution packages | |
run: | | |
for dir in npm-binary-distributions/*; do | |
cd $dir | |
npm pack | |
cd - | |
done | |
- name: Upload packaged npm binary distributions | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v4.4.3 | |
with: | |
name: artifact-npm-binary-distributions | |
path: npm-binary-distributions/*/*.tgz | |
if-no-files-found: "error" | |
test-linux: | |
runs-on: ubuntu-latest | |
needs: [node, npm-distributions] | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18, 20, 22] | |
steps: | |
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-npm-binary-distributions | |
path: ./npm-binary-distributions | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-pkg-node | |
path: ./node-pkg | |
- name: Create package.json | |
run: | | |
mkdir test | |
cd test | |
cat <<EOF > package.json | |
{ | |
"name": "test", | |
"version": "1.0.0", | |
"description": "", | |
"main": "index.js", | |
"scripts": { | |
"lint": "supa-mdx-lint --version" | |
}, | |
"keywords": [], | |
"author": "", | |
"license": "ISC" | |
} | |
EOF | |
- name: Install test packages | |
working-directory: test | |
run: | | |
npm install ../npm-binary-distributions/linux-x64/*.tgz | |
npm install ../node-pkg/*.tgz | |
- name: Test lint script | |
working-directory: test | |
run: npm run lint | |
test-macos: | |
runs-on: macos-latest | |
needs: [node, npm-distributions] | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18, 20, 22] | |
steps: | |
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-npm-binary-distributions | |
path: ./npm-binary-distributions | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-pkg-node | |
path: ./node-pkg | |
- name: Create package.json | |
run: | | |
mkdir test | |
cd test | |
cat <<EOF > package.json | |
{ | |
"name": "test", | |
"version": "1.0.0", | |
"description": "", | |
"main": "index.js", | |
"scripts": { | |
"lint": "supa-mdx-lint --version" | |
}, | |
"keywords": [], | |
"author": "", | |
"license": "ISC" | |
} | |
EOF | |
- name: Install test packages | |
working-directory: test | |
run: | | |
npm install ../npm-binary-distributions/darwin/*.tgz | |
npm install ../node-pkg/*.tgz | |
- name: Test lint script | |
working-directory: test | |
run: npm run lint | |
test-windows: | |
runs-on: windows-latest | |
needs: [node, npm-distributions] | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18, 20, 22] | |
steps: | |
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-npm-binary-distributions | |
path: ./npm-binary-distributions | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: artifact-pkg-node | |
path: ./node-pkg | |
- name: Create package.json | |
shell: pwsh | |
run: | | |
mkdir test | |
cd test | |
$json = @" | |
{ | |
"name": "test", | |
"version": "1.0.0", | |
"description": "", | |
"main": "index.js", | |
"scripts": { | |
"lint": "supa-mdx-lint --version" | |
}, | |
"keywords": [], | |
"author": "", | |
"license": "ISC" | |
} | |
"@ | |
$json | Out-File -FilePath package.json -Encoding utf8 | |
- name: Unpack binary tarball | |
shell: pwsh | |
run: | | |
$tarballPath = Get-ChildItem -Path npm-binary-distributions\win32-x64\*.tgz | Select-Object -First 1 | |
tar -xzf $tarballPath.FullName -C npm-binary-distributions\win32-x64 | |
- name: Install binary | |
run: | | |
cd test | |
npm install ..\npm-binary-distributions\win32-x64\package | |
- name: Unpack node-pkg tarball | |
shell: pwsh | |
run: | | |
$tarballPath = Get-ChildItem -Path node-pkg\*.tgz | Select-Object -First 1 | |
tar -xzf $tarballPath.FullName -C node-pkg | |
- name: Install main package | |
run: | | |
cd test | |
npm install ..\node-pkg\package | |
- name: Test lint script | |
working-directory: test | |
run: | | |
cat package.json | |
cat package-lock.json | |
ls node_modules/@supabase | |
npm run lint |