From 070f5ce924e3c1ecbd5823678b184b5891560824 Mon Sep 17 00:00:00 2001 From: Naoki Oketani Date: Mon, 5 May 2025 11:12:23 +0000 Subject: [PATCH] refactor(ci): update workflow configuration and add Node.js version file --- .github/workflows/check-dist.yml | 72 ++++++++++++++++++++++++++++++++ .github/workflows/dist.yml | 24 ----------- .node-version | 1 + package.json | 3 +- 4 files changed, 75 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/check-dist.yml delete mode 100644 .github/workflows/dist.yml create mode 100644 .node-version diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml new file mode 100644 index 0000000..5c4bd8b --- /dev/null +++ b/.github/workflows/check-dist.yml @@ -0,0 +1,72 @@ +# In TypeScript actions, `dist/` is a special directory. When you reference +# an action with the `uses:` property, `dist/index.js` is the code that will be +# run. For this project, the `dist/index.js` file is transpiled from other +# source files. This workflow ensures the `dist/` directory contains the +# expected transpiled code. +# +# If this workflow is run from a feature branch, it will act as an additional CI +# check and fail if the checked-in `dist/` directory does not match what is +# expected from the build. +name: Check Transpiled JavaScript + +on: + pull_request: + branches: + - main + push: + branches: + - main + +permissions: + contents: read + +jobs: + check-dist: + name: Check dist/ + runs-on: ubuntu-latest + + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + id: setup-node + uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + + - name: Install Dependencies + id: install + run: npm ci + + - name: Build dist/ Directory + id: build + run: npm run bundle + + # This will fail the workflow if the `dist/` directory is different than + # expected. + - name: Compare Directories + id: diff + run: | + if [ ! -d dist/ ]; then + echo "Expected dist/ directory does not exist. See status below:" + ls -la ./ + exit 1 + fi + if [ "$(git diff --ignore-space-at-eol --text dist/ | wc -l)" -gt "0" ]; then + echo "Detected uncommitted changes after build. See status below:" + git diff --ignore-space-at-eol --text dist/ + exit 1 + fi + + # If `dist/` was different than expected, upload the expected version as a + # workflow artifact. + - if: ${{ failure() && steps.diff.outcome == 'failure' }} + name: Upload Artifact + id: upload + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml deleted file mode 100644 index 4bafe29..0000000 --- a/.github/workflows/dist.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: "update dist/index.js" -on: - push: - branches: - - main - -jobs: - package: - runs-on: ubuntu-latest - steps: - - name: check out repository code - uses: actions/checkout@v4 - - name: install dependencies - run: | - npm ci - - name: format TypeScript code - run: | - npm run format - - name: compile TypeScript code into dist/index.js - run: | - npm run package - - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: "chore(build): automated change" diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..f3f52b4 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +20.9.0 diff --git a/package.json b/package.json index 01ea5ef..63b9916 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "node": ">=20.0.0" }, "scripts": { + "bundle": "npm run format && npm run package", "format": "prettier --write **/*.ts", "format-check": "prettier --check **/*.ts", "lint": "eslint src/**/*.ts", @@ -58,4 +59,4 @@ "vite": "^6.3.4", "vitest": "^3.1.2" } -} \ No newline at end of file +}