From fa5c86d45b454785e981d12ef717280d1c3071e7 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Mon, 23 Dec 2024 13:03:19 -0800 Subject: [PATCH] ci: switch to GHA --- .circleci/config.yml | 96 ----------------------------------- .github/workflows/release.yml | 35 +++++++++++++ .github/workflows/test.yml | 62 ++++++++++++++++++++++ README.md | 2 +- package.json | 3 ++ 5 files changed, 101 insertions(+), 97 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 97b3ad9..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,96 +0,0 @@ -version: 2.1 - -orbs: - cfa: continuousauth/npm@2.1.1 - node: electronjs/node@2.3.1 - -jobs: - test: - environment: - # prevent Wine popup dialogs about installing additional packages - WINEDLLOVERRIDES: mscoree,mshtml= - WINEDEBUG: -all - executor: <> - parameters: - executor: - description: The executor to use for the job. - type: string - node-version: - description: Specify the Node.js version to install. - type: string - steps: - - node/test: - checkout-steps: - - when: - condition: - equal: [ node/macos, << parameters.executor >> ] - steps: - - restore_cache: - name: Restoring Homebrew cache - paths: - - /usr/local/Homebrew - keys: - - v1-brew-cache-{{ arch }} - - run: - name: Install OS Dependencies - command: | - case "$(uname)" in - Linux) - sudo dpkg --add-architecture i386 - sudo apt-get update - sudo apt-get install --no-install-recommends -y wine64 wine32 wine - ;; - Darwin) - brew install --cask xquartz - brew install --cask --no-quarantine wine-stable - ;; - esac - - when: - condition: - equal: [ node/macos, << parameters.executor >> ] - steps: - - save_cache: - name: Persisting Homebrew cache - paths: - - /usr/local/Homebrew - key: v1-brew-cache-{{ arch }} - - checkout - node-version: << parameters.node-version >> - -workflows: - test_and_release: - # Run the test jobs first, then the release only when all the test jobs are successful - jobs: - - test: - name: test-<< matrix.executor >>-<< matrix.node-version >> - pre-steps: - # rc-edit.exe does not support arm64 - - when: - condition: - and: - - equal: [ node/macos, << matrix.executor >> ] - steps: - - node/install-rosetta - matrix: - alias: test - parameters: - executor: - - node/linux - - node/macos - - node/windows - node-version: - - '20.9' - - '18.17' - - '16.20' - - '14.21' - exclude: - - executor: node/macos - node-version: '14.21' - - cfa/release: - requires: - - test - filters: - branches: - only: - - main - context: cfa-release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a4b607d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + branches: + - main + +jobs: + test: + uses: ./.github/workflows/test.yml + + release: + name: Release + runs-on: ubuntu-latest + needs: test + environment: npm + permissions: + id-token: write # for CFA and npm provenance + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + - name: Setup Node.js + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + node-version: 20.x + cache: 'yarn' + - name: Install + run: yarn install --frozen-lockfile + - uses: continuousauth/action@4e8a2573eeb706f6d7300d6a9f3ca6322740b72d # v1.0.5 + with: + project-id: ${{ secrets.CFA_PROJECT_ID }} + secret: ${{ secrets.CFA_SECRET }} + npm-token: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..22be6ab --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,62 @@ +name: Test + +on: + pull_request: + branches: + - main + schedule: + - cron: '0 22 * * 3' + workflow_call: + +permissions: + contents: read + +jobs: + test: + name: Test + strategy: + matrix: + node-version: + - '20.9' + - '18.17' + - '16.20' + - '14.21' + os: + - macos-latest + - ubuntu-latest + - windows-latest + runs-on: "${{ matrix.os }}" + steps: + # rc-edit.exe does not support arm64 + - name: Install Rosetta + if: ${{ matrix.os == 'macos-latest' }} + run: /usr/sbin/softwareupdate --install-rosetta --agree-to-license + - name: Homebrew Cache + if: ${{ matrix.os == 'macos-latest' }} + uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + with: + path: /usr/local/Homebrew + key: v1-brew-cache-${{ matrix.os }} + - name: Install OS Dependencies (Linux) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install --no-install-recommends -y wine64 wine32 wine + - name: Install OS Dependencies (macOS) + if: ${{ matrix.os == 'macos-latest' }} + run: | + brew install --cask xquartz + brew install --cask --no-quarantine wine-stable + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Setup Node.js + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + node-version: "${{ matrix.node-version }}" + cache: 'yarn' + architecture: ${{ matrix.node-version == '14.21' && 'x64' || env.RUNNER_ARCH }} + - name: Install + run: yarn install --frozen-lockfile + - name: Test + run: yarn test diff --git a/README.md b/README.md index 91c72fb..aaf85b0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # node-rcedit -[![CircleCI build status](https://circleci.com/gh/electron/node-rcedit/tree/main.svg?style=shield)](https://circleci.com/gh/electron/node-rcedit/tree/main) +[![Test](https://github.com/electron/node-rcedit/actions/workflows/test.yml/badge.svg)](https://github.com/electron/node-rcedit/actions/workflows/test.yml) [![NPM package](https://img.shields.io/npm/v/rcedit)](https://npm.im/rcedit) Node module to edit resources of Windows executables. diff --git a/package.json b/package.json index 26f8e64..a936145 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,9 @@ "engines": { "node": ">= 14.0.0" }, + "publishConfig": { + "provenance": true + }, "dependencies": { "cross-spawn-windows-exe": "^1.1.0" },