mirror of
https://github.com/astral-sh/ruff
synced 2026-01-21 13:30:49 -05:00
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/github-script/releases">actions/github-script's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>What's Changed</h2> <ul> <li>Add base-url option by <a href="https://github.com/robandpdx"><code>@robandpdx</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/429">actions/github-script#429</a></li> <li>Expose async-function argument type by <a href="https://github.com/viktorlott"><code>@viktorlott</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/402">actions/github-script#402</a>, see for details <a href="https://github.com/actions/github-script#use-scripts-with-jsdoc-support">https://github.com/actions/github-script#use-scripts-with-jsdoc-support</a></li> <li>Update dependencies and use Node 20 by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/425">actions/github-script#425</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/navarroaxel"><code>@navarroaxel</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/285">actions/github-script#285</a></li> <li><a href="https://github.com/robandpdx"><code>@robandpdx</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/429">actions/github-script#429</a></li> <li><a href="https://github.com/viktorlott"><code>@viktorlott</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/402">actions/github-script#402</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v6.4.1...v7.0.0">https://github.com/actions/github-script/compare/v6.4.1...v7.0.0</a></p> <h2>v6.4.1</h2> <h2>What's Changed</h2> <ul> <li>Add <code>@octokit/plugin-request-log</code>, to produce debug output for requests by <a href="https://github.com/mjpieters"><code>@mjpieters</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/358">actions/github-script#358</a></li> <li>fix input handling by <a href="https://github.com/mjpieters"><code>@mjpieters</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/357">actions/github-script#357</a></li> <li>Remove unused dependencies by <a href="https://github.com/mjpieters"><code>@mjpieters</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/356">actions/github-script#356</a></li> <li>Default debug to current runner debug state by <a href="https://github.com/mjpieters"><code>@mjpieters</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/363">actions/github-script#363</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/mjpieters"><code>@mjpieters</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/358">actions/github-script#358</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v6.4.0...v6.4.1">https://github.com/actions/github-script/compare/v6.4.0...v6.4.1</a></p> <h2>v6.4.0</h2> <h2>What's Changed</h2> <ul> <li>Bump json5 from 2.1.3 to 2.2.3 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/319">actions/github-script#319</a></li> <li>Bump minimatch from 3.0.4 to 3.1.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/320">actions/github-script#320</a></li> <li>Add node-fetch by <a href="https://github.com/danmichaelo"><code>@danmichaelo</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/321">actions/github-script#321</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/jongwooo"><code>@jongwooo</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/313">actions/github-script#313</a></li> <li><a href="https://github.com/austinvazquez"><code>@austinvazquez</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/306">actions/github-script#306</a></li> <li><a href="https://github.com/danmichaelo"><code>@danmichaelo</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/321">actions/github-script#321</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v6.3.3...v6.4.0">https://github.com/actions/github-script/compare/v6.3.3...v6.4.0</a></p> <h2>v6.3.3</h2> <h2>What's Changed</h2> <ul> <li>Update <code>@actions/glob</code> to 0.3.0 by <a href="https://github.com/nineinchnick"><code>@nineinchnick</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/279">actions/github-script#279</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/nineinchnick"><code>@nineinchnick</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/279">actions/github-script#279</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v6.3.2...v6.3.3">https://github.com/actions/github-script/compare/v6.3.2...v6.3.3</a></p> <h2>v6.3.2</h2> <h2>What's Changed</h2> <ul> <li>Update <code>@actions/core</code> to 1.10.0 by <a href="https://github.com/rentziass"><code>@rentziass</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/295">actions/github-script#295</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="60a0d83039"><code>60a0d83</code></a> Merge pull request <a href="https://redirect.github.com/actions/github-script/issues/440">#440</a> from actions/joshmgross/v7.0.1</li> <li><a href="b7fb2001b4"><code>b7fb200</code></a> Update version to 7.0.1</li> <li><a href="12e22ed06b"><code>12e22ed</code></a> Merge pull request <a href="https://redirect.github.com/actions/github-script/issues/439">#439</a> from actions/joshmgross/avoid-setting-base-url</li> <li><a href="d319f8f5b5"><code>d319f8f</code></a> Avoid setting <code>baseUrl</code> to undefined when input is not provided</li> <li><a href="e69ef5462f"><code>e69ef54</code></a> Merge pull request <a href="https://redirect.github.com/actions/github-script/issues/425">#425</a> from actions/joshmgross/node-20</li> <li><a href="ee0914b839"><code>ee0914b</code></a> Update licenses</li> <li><a href="d6fc56f33b"><code>d6fc56f</code></a> Use <code>@types/node</code> for Node 20</li> <li><a href="384d6cf581"><code>384d6cf</code></a> Fix quotations in tests</li> <li><a href="84724927e3"><code>8472492</code></a> Only validate GraphQL <code>previews</code></li> <li><a href="84903f5182"><code>84903f5</code></a> Remove <code>node-fetch</code> from type</li> <li>Additional commits viewable in <a href="https://github.com/actions/github-script/compare/v6...v7">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
593 lines
18 KiB
YAML
593 lines
18 KiB
YAML
name: "[ruff] Release"
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: "The version to tag, without the leading 'v'. If omitted, will initiate a dry run (no uploads)."
|
|
type: string
|
|
sha:
|
|
description: "The full sha of the commit to be released. If omitted, the latest commit on the default branch will be used."
|
|
default: ""
|
|
type: string
|
|
pull_request:
|
|
paths:
|
|
# When we change pyproject.toml, we want to ensure that the maturin builds still work
|
|
- pyproject.toml
|
|
# And when we change this workflow itself...
|
|
- .github/workflows/release.yaml
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
PACKAGE_NAME: ruff
|
|
PYTHON_VERSION: "3.11"
|
|
CARGO_INCREMENTAL: 0
|
|
CARGO_NET_RETRY: 10
|
|
CARGO_TERM_COLOR: always
|
|
RUSTUP_MAX_RETRIES: 10
|
|
|
|
jobs:
|
|
sdist:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build sdist"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
command: sdist
|
|
args: --out dist
|
|
- name: "Test sdist"
|
|
run: |
|
|
pip install dist/${{ env.PACKAGE_NAME }}-*.tar.gz --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload sdist"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
|
|
macos-x86_64:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: x64
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels - x86_64"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: x86_64
|
|
args: --release --out dist
|
|
- name: "Test wheel - x86_64"
|
|
run: |
|
|
pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-x86_64-apple-darwin.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/x86_64-apple-darwin/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
macos-universal:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: x64
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels - universal2"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
args: --release --target universal2-apple-darwin --out dist
|
|
- name: "Test wheel - universal2"
|
|
run: |
|
|
pip install dist/${{ env.PACKAGE_NAME }}-*universal2.whl --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-aarch64-apple-darwin.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/aarch64-apple-darwin/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
windows:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- target: x86_64-pc-windows-msvc
|
|
arch: x64
|
|
- target: i686-pc-windows-msvc
|
|
arch: x86
|
|
- target: aarch64-pc-windows-msvc
|
|
arch: x64
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: ${{ matrix.platform.arch }}
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.platform.target }}
|
|
args: --release --out dist
|
|
- name: "Test wheel"
|
|
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
|
|
shell: bash
|
|
run: |
|
|
python -m pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
shell: bash
|
|
run: |
|
|
ARCHIVE_FILE=ruff-${{ matrix.platform.target }}.zip
|
|
7z a $ARCHIVE_FILE ./target/${{ matrix.platform.target }}/release/ruff.exe
|
|
sha256sum $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.zip
|
|
*.sha256
|
|
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
- x86_64-unknown-linux-gnu
|
|
- i686-unknown-linux-gnu
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: x64
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.target }}
|
|
manylinux: auto
|
|
args: --release --out dist
|
|
- name: "Test wheel"
|
|
if: ${{ startsWith(matrix.target, 'x86_64') }}
|
|
run: |
|
|
pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-${{ matrix.target }}.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/${{ matrix.target }}/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
linux-cross:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- target: aarch64-unknown-linux-gnu
|
|
arch: aarch64
|
|
# see https://github.com/astral-sh/ruff/issues/3791
|
|
# and https://github.com/gnzlbg/jemallocator/issues/170#issuecomment-1503228963
|
|
maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16
|
|
- target: armv7-unknown-linux-gnueabihf
|
|
arch: armv7
|
|
- target: s390x-unknown-linux-gnu
|
|
arch: s390x
|
|
- target: powerpc64le-unknown-linux-gnu
|
|
arch: ppc64le
|
|
- target: powerpc64-unknown-linux-gnu
|
|
arch: ppc64
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.platform.target }}
|
|
manylinux: auto
|
|
docker-options: ${{ matrix.platform.maturin_docker_options }}
|
|
args: --release --out dist
|
|
- uses: uraimo/run-on-arch-action@v2
|
|
if: matrix.platform.arch != 'ppc64'
|
|
name: Test wheel
|
|
with:
|
|
arch: ${{ matrix.platform.arch }}
|
|
distro: ubuntu20.04
|
|
githubToken: ${{ github.token }}
|
|
install: |
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends python3 python3-pip
|
|
pip3 install -U pip
|
|
run: |
|
|
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall
|
|
ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-${{ matrix.platform.target }}.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/${{ matrix.platform.target }}/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
musllinux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
- x86_64-unknown-linux-musl
|
|
- i686-unknown-linux-musl
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
architecture: x64
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.target }}
|
|
manylinux: musllinux_1_2
|
|
args: --release --out dist
|
|
- name: "Test wheel"
|
|
if: matrix.target == 'x86_64-unknown-linux-musl'
|
|
uses: addnab/docker-run-action@v3
|
|
with:
|
|
image: alpine:latest
|
|
options: -v ${{ github.workspace }}:/io -w /io
|
|
run: |
|
|
apk add py3-pip
|
|
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links /io/dist/ --force-reinstall
|
|
ruff --help
|
|
python -m ruff --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-${{ matrix.target }}.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/${{ matrix.target }}/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
musllinux-cross:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
platform:
|
|
- target: aarch64-unknown-linux-musl
|
|
arch: aarch64
|
|
maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16
|
|
- target: armv7-unknown-linux-musleabihf
|
|
arch: armv7
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
- name: "Prep README.md"
|
|
run: python scripts/transform_readme.py --target pypi
|
|
- name: "Build wheels"
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.platform.target }}
|
|
manylinux: musllinux_1_2
|
|
args: --release --out dist
|
|
docker-options: ${{ matrix.platform.maturin_docker_options }}
|
|
- uses: uraimo/run-on-arch-action@v2
|
|
name: Test wheel
|
|
with:
|
|
arch: ${{ matrix.platform.arch }}
|
|
distro: alpine_latest
|
|
githubToken: ${{ github.token }}
|
|
install: |
|
|
apk add py3-pip
|
|
run: |
|
|
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall
|
|
ruff check --help
|
|
- name: "Upload wheels"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: dist
|
|
- name: "Archive binary"
|
|
run: |
|
|
ARCHIVE_FILE=ruff-${{ matrix.platform.target }}.tar.gz
|
|
tar czvf $ARCHIVE_FILE -C target/${{ matrix.platform.target }}/release ruff
|
|
shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256
|
|
- name: "Upload binary"
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: |
|
|
*.tar.gz
|
|
*.sha256
|
|
|
|
validate-tag:
|
|
name: Validate tag
|
|
runs-on: ubuntu-latest
|
|
# If you don't set an input tag, it's a dry run (no uploads).
|
|
if: ${{ inputs.tag }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: main # We checkout the main branch to check for the commit
|
|
- name: Check main branch
|
|
if: ${{ inputs.sha }}
|
|
run: |
|
|
# Fetch the main branch since a shallow checkout is used by default
|
|
git fetch origin main --unshallow
|
|
if ! git branch --contains ${{ inputs.sha }} | grep -E '(^|\s)main$'; then
|
|
echo "The specified sha is not on the main branch" >&2
|
|
exit 1
|
|
fi
|
|
- name: Check tag consistency
|
|
run: |
|
|
# Switch to the commit we want to release
|
|
git checkout ${{ inputs.sha }}
|
|
version=$(grep "version = " pyproject.toml | sed -e 's/version = "\(.*\)"/\1/g')
|
|
if [ "${{ inputs.tag }}" != "${version}" ]; then
|
|
echo "The input tag does not match the version from pyproject.toml:" >&2
|
|
echo "${{ inputs.tag }}" >&2
|
|
echo "${version}" >&2
|
|
exit 1
|
|
else
|
|
echo "Releasing ${version}"
|
|
fi
|
|
|
|
upload-release:
|
|
name: Upload to PyPI
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- macos-universal
|
|
- macos-x86_64
|
|
- windows
|
|
- linux
|
|
- linux-cross
|
|
- musllinux
|
|
- musllinux-cross
|
|
- validate-tag
|
|
# If you don't set an input tag, it's a dry run (no uploads).
|
|
if: ${{ inputs.tag }}
|
|
environment:
|
|
name: release
|
|
permissions:
|
|
# For pypi trusted publishing
|
|
id-token: write
|
|
steps:
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: wheels
|
|
path: wheels
|
|
- name: Publish to PyPi
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
skip-existing: true
|
|
packages-dir: wheels
|
|
verbose: true
|
|
|
|
tag-release:
|
|
name: Tag release
|
|
runs-on: ubuntu-latest
|
|
needs: upload-release
|
|
# If you don't set an input tag, it's a dry run (no uploads).
|
|
if: ${{ inputs.tag }}
|
|
permissions:
|
|
# For git tag
|
|
contents: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
- name: git tag
|
|
run: |
|
|
git config user.email "hey@astral.sh"
|
|
git config user.name "Ruff Release CI"
|
|
git tag -m "v${{ inputs.tag }}" "v${{ inputs.tag }}"
|
|
# If there is duplicate tag, this will fail. The publish to pypi action will have been a noop (due to skip
|
|
# existing), so we make a non-destructive exit here
|
|
git push --tags
|
|
|
|
publish-release:
|
|
name: Publish to GitHub
|
|
runs-on: ubuntu-latest
|
|
needs: tag-release
|
|
# If you don't set an input tag, it's a dry run (no uploads).
|
|
if: ${{ inputs.tag }}
|
|
permissions:
|
|
# For GitHub release publishing
|
|
contents: write
|
|
steps:
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: binaries
|
|
path: binaries
|
|
- name: "Publish to GitHub"
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: binaries/*
|
|
tag_name: v${{ inputs.tag }}
|
|
|
|
docker-publish:
|
|
# This action doesn't need to wait on any other task, it's easy to re-tag if something failed and we're validating
|
|
# the tag here also
|
|
name: Push Docker image ghcr.io/astral-sh/ruff
|
|
runs-on: ubuntu-latest
|
|
environment:
|
|
name: release
|
|
permissions:
|
|
# For the docker push
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.sha }}
|
|
|
|
- uses: docker/setup-buildx-action@v3
|
|
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.repository_owner }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: ghcr.io/astral-sh/ruff
|
|
|
|
- name: Check tag consistency
|
|
# Unlike validate-tag we don't check if the commit is on the main branch, but it seems good enough since we can
|
|
# change docker tags
|
|
if: ${{ inputs.tag }}
|
|
run: |
|
|
version=$(grep "version = " pyproject.toml | sed -e 's/version = "\(.*\)"/\1/g')
|
|
if [ "${{ inputs.tag }}" != "${version}" ]; then
|
|
echo "The input tag does not match the version from pyproject.toml:" >&2
|
|
echo "${{ inputs.tag }}" >&2
|
|
echo "${version}" >&2
|
|
exit 1
|
|
else
|
|
echo "Releasing ${version}"
|
|
fi
|
|
|
|
- name: "Build and push Docker image"
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
platforms: linux/amd64,linux/arm64
|
|
# Reuse the builder
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
push: ${{ inputs.tag != '' }}
|
|
tags: ghcr.io/astral-sh/ruff:latest,ghcr.io/astral-sh/ruff:${{ inputs.tag || 'dry-run' }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
|
|
# After the release has been published, we update downstream repositories
|
|
# This is separate because if this fails the release is still fine, we just need to do some manual workflow triggers
|
|
update-dependents:
|
|
name: Update dependents
|
|
runs-on: ubuntu-latest
|
|
needs: publish-release
|
|
steps:
|
|
- name: "Update pre-commit mirror"
|
|
uses: actions/github-script@v7
|
|
with:
|
|
github-token: ${{ secrets.RUFF_PRE_COMMIT_PAT }}
|
|
script: |
|
|
github.rest.actions.createWorkflowDispatch({
|
|
owner: 'astral-sh',
|
|
repo: 'ruff-pre-commit',
|
|
workflow_id: 'main.yml',
|
|
ref: 'main',
|
|
})
|