chore: add GitHub Actions workflow for tmate #632
Workflow file for this run
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: test | |
on: | |
push: | |
branches-ignore: | |
- "coverage" | |
- "renovate/**" | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
main_branch: | |
description: "Main branch for coverage/tmate." | |
type: string | |
required: false | |
default: "main" | |
main_os: | |
description: "Main os for coverage/tmate." | |
type: choice | |
default: "macos-12" | |
options: | |
- "macos-12" | |
- "ubuntu-latest" | |
main_py_ver: | |
description: "Main python version for coverage/tmate." | |
type: choice | |
default: "3.9" | |
options: | |
- "3.12" | |
- "3.11" | |
- "3.10" | |
- "3.9" | |
- "3.8" | |
tmate: | |
type: boolean | |
description: "Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate). This is only for main strategy and others will be stopped." | |
required: false | |
default: false | |
env: | |
MAIN_BRANCH: ${{ inputs.main_branch || 'main' }} | |
MAIN_OS: ${{ inputs.main_os || 'ubuntu-latest' }} | |
MAIN_PY_VER: ${{ inputs.main_py_ver || '3.10' }} | |
TMATE: ${{ inputs.tmate || 'false' }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
install: | |
strategy: | |
matrix: | |
os: [macos-12, ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Exit workflow | |
if: ${{ github.event_name == 'workflow_dispatch' && env.tmate == 'true' }} | |
run: exit 1 | |
- name: Install test | |
run: | | |
curl -o install.sh -fsSL https://raw.github.com/rcmdnk/homebrew-file/install/install.sh | |
chmod 755 ./install.sh | |
./install.sh | |
rm -f install.sh | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, ubuntu-latest] | |
python-version: ['3.12', '3.11', '3.10', '3.9', '3.8'] | |
permissions: | |
contents: write | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Check is main | |
id: is_main | |
run: | | |
if [ "${{ github.ref }}" = "refs/heads/${{ env.MAIN_BRANCH }}" ] && [ "${{ matrix.os }}" = "${{ env.MAIN_OS }}" ] && [ "${{ matrix.python-version }}" = "${{ env.MAIN_PY_VER }}" ];then | |
echo "IS_MAIN=1" >> $GITHUB_ENV | |
is_main=1 | |
else | |
echo "IS_MAIN=0" >> $GITHUB_ENV | |
is_main=0 | |
fi | |
if [ "${{ env.TMATE }}" = "true" ];then | |
if [ "$is_main" = 0 ];then | |
echo "Tmate is enabled and this is not main, skip tests" | |
exit 1 | |
fi | |
echo "DEBUG=1" >> $GITHUB_ENV | |
else | |
echo "DEBUG=0" >> $GITHUB_ENV | |
fi | |
- name: Set up Homebrew | |
id: set-up-homebrew | |
uses: Homebrew/actions/setup-homebrew@master | |
with: | |
test-bot: false | |
- uses: rcmdnk/python-action@v2 | |
with: | |
checkout: 1 | |
setup-python: 1 | |
python-version: "${{ matrix.python-version }}" | |
pip: 'pip' | |
setup-cmd: 'poetry install' | |
pip-packages: '' | |
poetry: 1 | |
cache: 'poetry' | |
pytest: 1 | |
pytest-tests-path: 'tests/' | |
pytest-ignore: '' | |
pytest-separate-benchmark: 0 | |
coverage: 1 | |
pytest-cov-path: "bin" | |
coverage-push: "${{ env.IS_MAIN }}" | |
coverage-push-condition: "branch=${{ env.MAIN_BRANCH }}, os=${{ env.MAIN_OS }}, python_version=${{ env.MAIN_PY_VER }}" | |
github_token: "${{github.token}}" | |
pre-commit: "${{ env.IS_MAIN }}" | |
tmate: "${{ env.DEBUG }}" |