mirror of
https://github.com/astral-sh/ruff-action.git
synced 2026-05-12 20:50:14 +02:00
f2e3221107
# Summary Converts the action from a [composite to javascript](https://docs.github.com/en/actions/sharing-automations/creating-actions/about-custom-actions#types-of-actions). Most importantly to make use of prebuilt libraries and helpers like [actions/toolkit](https://github.com/actions/toolkit). The structure and features are modeled after [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) ## Changes 1. Download the ruff executable for the current platform from the GitHub releases 2. Add ruff to the PATH 3. Validate the downloaded ruff executable against its checksum 4. Cache ruff in the [Tool Cache](https://github.com/actions/toolkit/tree/main/packages/tool-cache) to speed up runs on self-hosted runners 5. Support semver ranges to define the ruff version to install ## 🚨 Breaking changes Removes the `changed-files` input. This input could previously be used to run ruff only on files changed in a PR. The functionality was implemented by calling another action. This repo should focus on providing a quick and easy way to use ruff in GitHub Actions, not add more functionality on top of ruff. The previous functionality can be replicated with: ```yaml - uses: actions/checkout@v4 - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 with: files: | **.py - name: Run ruff on changed files only uses: astral-sh/ruff-action@v2 with: src: ${{ steps.changed-files.outputs.all_changed_files }} ``` This was tested here: https://github.com/astral-sh/ruff-action/actions/runs/12017035736/job/33498508269
50 lines
1.3 KiB
YAML
50 lines
1.3 KiB
YAML
# `dist/index.js` is a special file in Actions.
|
|
# When you reference an action with `uses:` in a workflow,
|
|
# `index.js` is the code that will run.
|
|
# For our project, we generate this file through a build process from other source files.
|
|
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
|
|
name: Check dist/
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
check-dist:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Node.js 20
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Rebuild the dist/ directory
|
|
run: |
|
|
npm run build
|
|
npm run package
|
|
|
|
- name: Compare the expected and actual dist/ directories
|
|
run: |
|
|
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
|
|
echo "Detected uncommitted changes after build. See status below:"
|
|
git diff --text -v
|
|
exit 1
|
|
fi
|
|
id: diff
|
|
|
|
# If index.js was different than expected, upload the expected version as an artifact
|
|
- uses: actions/upload-artifact@v4
|
|
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
|
with:
|
|
name: dist
|
|
path: dist/
|