Add support for the .python-version
file (#1664)
#729
This file contains 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
name: CI | |
on: | |
push: | |
# Avoid duplicate builds on PRs. | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: read | |
env: | |
# Used by shfmt and more. | |
FORCE_COLOR: 1 | |
jobs: | |
lint: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Ruby and dependencies | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
ruby-version: "3.3" | |
- name: Run ShellCheck | |
run: make lint-scripts | |
- name: Run shfmt | |
uses: docker://mvdan/shfmt:latest | |
with: | |
args: "--diff ." | |
- name: Run Rubocop | |
run: bundle exec rubocop | |
integration-test: | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
stack: ["heroku-20", "heroku-22", "heroku-24"] | |
env: | |
HATCHET_APP_LIMIT: 300 | |
HATCHET_DEFAULT_STACK: ${{ matrix.stack }} | |
HATCHET_EXPENSIVE_MODE: 1 | |
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} | |
HEROKU_API_USER: ${{ secrets.HEROKU_API_USER }} | |
HEROKU_DISABLE_AUTOUPDATE: 1 | |
PARALLEL_SPLIT_TEST_PROCESSES: 70 | |
RSPEC_RETRY_RETRY_COUNT: 2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Ruby and dependencies | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
ruby-version: "3.3" | |
- name: Hatchet setup | |
run: bundle exec hatchet ci:setup | |
- name: Run Hatchet integration tests | |
# parallel_split_test runs rspec in parallel, with concurrency equal to PARALLEL_SPLIT_TEST_PROCESSES. | |
run: bundle exec parallel_split_test spec/hatchet/ | |
container-test: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# These test both the local development `make run` workflow and that `bin/report` completes successfully | |
# for both passing and failing builds (since `bin/report` can't easily be tested via Hatchet tests). | |
- name: Run buildpack using default app fixture | |
run: make run | |
- name: Run buildpack using an app fixture that's expected to fail | |
run: make run FIXTURE=spec/fixtures/python_version_file_invalid_version/ |