# 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: push: branches: - main pull_request: 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 PR wasn't created by Dependabot. - name: Compare Directories id: diff run: | 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, and this was not a Dependabot # PR, 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/ push-dist: name: Push dist/ needs: check-dist if: ${{ failure() }} runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - uses: actions/download-artifact@v4 - run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add dist git commit -m "Generate dist" git push