Skip to content

build: pin click version to correct version #323

build: pin click version to correct version

build: pin click version to correct version #323

Workflow file for this run

---
# yamllint disable rule:line-length
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: CLI CI
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check linting with ruff
run: |
make lint
detect-command-change:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install dependencies
run: |
python -m pip install uv
uv sync --project prevent-cli
- name: Run command_dump
run: |
make command_dump
- name: Detect changes on commit
run: |
if [ -n "$(git diff codecov-cli/codecovcli_commands prevent-cli/preventcli_commands)" ]; then
echo "Please run `make command_dump` before submitting, or install the hooks"
echo "$(git diff codecov-cli/codecovcli_commands prevent-cli/preventcli_commands)"
exit 1
fi
codecov-startup:
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install CLI
run: |
pip install uv
uv sync --project codecov-cli
- name: Create commit in codecov
run: |
uv run --project codecov-cli codecovcli -v create-commit -t ${{ secrets.CODECOV_TOKEN }} --git-service github
- name: Create commit report in codecov
run: |
uv run --project codecov-cli codecovcli -v create-report -t ${{ secrets.CODECOV_TOKEN }} --git-service github
build-test-upload:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.13", "3.12", "3.11", "3.10", "3.9"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Set up Python ${{matrix.python-version}}
uses: actions/setup-python@v5
with:
python-version: "${{matrix.python-version}}"
- name: Install dependencies
run: |
pip install uv
uv sync --project codecov-cli
uv sync --project prevent-cli
- name: Test with pytest
run: |
cd codecov-cli
uv run pytest --cov --junitxml=${{matrix.os}}-${{matrix.python-version}}junit.xml
env:
CODECOV_ENV: test
- name: Dogfooding codecov-cli
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' }}
run: |
uv run --project codecov-cli codecovcli -v do-upload --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
uv run --project codecov-cli codecovcli do-upload --report-type test_results --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
- name: Dogfooding sentry-prevent-cli
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' }}
run: |
uv run --project prevent-cli sentry-prevent-cli upload --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag sentry-prevent-cli
uv run --project prevent-cli sentry-prevent-cli upload --report-type test_results --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag sentry-prevent-cli
uv run --project prevent-cli sentry-prevent-cli upload --report-type test-results --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag sentry-prevent-cli
build-install-test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.13", "3.12", "3.11", "3.10", "3.9"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Set up Python ${{matrix.python-version}}
uses: actions/setup-python@v5
with:
python-version: "${{matrix.python-version}}"
- name: Install uv
run: |
pip install uv
- name: Build codecov-cli package
run: |
cd codecov-cli
uv build
- name: Build prevent-cli package
run: |
cd prevent-cli
uv build
- name: Create test venv and install packages
run: |
python -m venv test-env
pip install codecov-cli/dist/*.whl prevent-cli/dist/*.whl
pip install pytest pytest-cov pytest-asyncio pytest-env pytest-mock
shell: bash
- name: Test with pytest (Linux/macOS)
if: runner.os != 'Windows'
run: |
cd codecov-cli
source ../test-env/bin/activate
../test-env/bin/python -m pytest --cov --junitxml=${{matrix.os}}-${{matrix.python-version}}junit.xml
env:
CODECOV_ENV: test
- name: Test with pytest (Windows)
if: runner.os == 'Windows'
run: |
cd codecov-cli
test-env\Scripts\activate
test-env\Scripts\python -m pytest --cov --junitxml=${{matrix.os}}-${{matrix.python-version}}junit.xml
env:
CODECOV_ENV: test
shell: cmd
- name: Dogfooding codecov-cli (Linux/macOS)
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' && runner.os != 'Windows' }}
run: |
source test-env/bin/activate
test-env/bin/python -m codecov_cli.main -v do-upload --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
test-env/bin/python -m codecov_cli.main do-upload --report-type test_results --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
- name: Dogfooding codecov-cli (Windows)
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' && runner.os == 'Windows' }}
run: |
test-env\Scripts\activate
test-env\Scripts\python -m codecov_cli.main -v do-upload --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
test-env\Scripts\python -m codecov_cli.main do-upload --report-type test_results --fail-on-error -t ${{ secrets.CODECOV_TOKEN }} --plugin pycoverage --flag python${{matrix.python-version}} --flag codecovcli
shell: cmd
- name: Dogfooding sentry-prevent-cli (Linux/macOS)
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' && runner.os != 'Windows' }}
run: |
source test-env/bin/activate
test-env/bin/python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
test-env/bin/python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--report-type', 'test_results', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
test-env/bin/python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--report-type', 'test-results', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
- name: Dogfooding sentry-prevent-cli (Windows)
if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'getsentry' && runner.os == 'Windows' }}
run: |
test-env\Scripts\activate
test-env\Scripts\python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
test-env\Scripts\python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--report-type', 'test_results', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
test-env\Scripts\python -c "from prevent_cli.main import run; import sys; sys.argv = ['sentry-prevent-cli', 'upload', '--report-type', 'test-results', '--fail-on-error', '-t', '${{ secrets.CODECOV_TOKEN }}', '--plugin', 'pycoverage', '--flag', 'python${{matrix.python-version}}', '--flag', 'sentry-prevent-cli']; run()"
shell: cmd