build: pin click version to correct version #323
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| # 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 |