From 3a635fcaee1b4e7649aa3cb099087e4098ba9910 Mon Sep 17 00:00:00 2001 From: lutangar Date: Thu, 2 Dec 2021 10:32:16 +0100 Subject: [PATCH] Setup CI via Github actions --- .github/workflows/release.yml | 90 +++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 31 ++++++++++++ package.json | 2 +- 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f19ae0f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,90 @@ +name: Release + +on: + push: + tags: ['*'] + +jobs: + prebuilds: + strategy: + matrix: + include: + - os: ubuntu-latest + arch: x64 + - os: macos-latest + arch: x64 + - os: windows-latest + arch: x86 + - os: windows-latest + arch: x64 + runs-on: ${{ matrix.os }} + name: Build ${{ matrix.os }} ${{ matrix.arch }} + env: + NODE_VERSION: 16 + VERSION_NAME: ${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.arch }} + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Set up node ${{ env.NODE_VERSION }} + uses: actions/setup-node@v2 + with: + registry-url: 'https://registry.npmjs.org' + node-version: ${{ env.NODE_VERSION }} + architecture: ${{ matrix.arch }} + - name: Install dependencies + shell: bash + run: npm install --build-from-source + - name: Prebuild ${{ env.VERSION_NAME }} + shell: bash + run: npm run prebuild --v8_enable_pointer_compression=false --v8_enable_31bit_smis_on_64bit_arch=false + - name: Create artifact + shell: bash + run: | + tar -zcvf $ARCHIVE_NAME -C prebuilds . + stat "$ARCHIVE_NAME" + env: + ARCHIVE_NAME: ${{ env.VERSION_NAME }}.tar.gz + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ env.VERSION_NAME }} + path: ${{ env.VERSION_NAME }}.tar.gz + retention-days: 1 + + release_and_publish: + runs-on: ubuntu-latest + needs: prebuilds + permissions: + contents: write + if: startsWith(github.ref, 'refs/tags/') + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Set up node ${{ env.NODE_VERSION }} + uses: actions/setup-node@v2 + with: + registry-url: 'https://registry.npmjs.org' + - run: npm install + - name: Build the docs + run: npm run docs + - name: Download artifacts + uses: actions/download-artifact@v2 + with: + path: prebuilds + - name: Create ${{ github.ref }} release + uses: softprops/action-gh-release@v1 + with: + files: prebuilds/*/*.tar.gz + env: + ARCHIVE_NAME: ${{ github.ref_name }}-${{ runner.os }}-${{ runner.arch }}.tar + - run: npm publish --access=public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..bb72804 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,31 @@ +name: Test + +on: [push, pull_request] + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-latest, ubuntu-latest, macos-latest] + node-version: [10.x, 12.x, 14.x, 15.x, 16.x] + fail-fast: false + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node }} + - name: Install dependencies and test + shell: bash + run: | + npm install --build-from-source + npm test + - name: Test build + shell: bash + run: npm run prebuild diff --git a/package.json b/package.json index fb8e3ff..d6203c8 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "test": "nyc mocha --expose-gc", "install": "node-gyp-build", "prebuild": "prebuildify --napi --tag-armv", - "prepack": "prebuildify-ci download && ([ $(ls prebuilds | wc -l) = '5' ] || (echo 'Some prebuilds are missing'; exit 1))" + "prepack": "npm run prebuild && ([ $(ls prebuilds | wc -l) = '5' ] || (echo 'Some prebuilds are missing'; exit 1))" }, "dependencies": { "debug": "^4.3.1"