diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml new file mode 100644 index 0000000..56362a2 --- /dev/null +++ b/.github/actions/setup/action.yaml @@ -0,0 +1,21 @@ +name: Setup +inputs: + github-token: + required: true +runs: + using: composite + steps: + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + - name: Set up poetry + uses: abatilo/actions-poetry@v2 + with: + poetry-version: '2.1.1' + - name: Install dependencies + shell: bash + run: poetry install --all-extras + - name: Lint + shell: bash + run: poetry run poe lint diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..51f241e --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,18 @@ +name: CI +on: + push: + branches: + - main + paths-ignore: + - '**.md' +jobs: + test: + name: Test + uses: ./.github/workflows/test.yaml + tag: + name: Tag + needs: test + permissions: + contents: write + uses: ./.github/workflows/tag.yaml + # TODO: Publish to Pypi. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 7de11c6..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: CI -on: - push: - branches: - - main - paths-ignore: - - '**.md' -jobs: - test: - name: Test and maybe tag - timeout-minutes: 3 - runs-on: ubuntu-latest - permissions: - contents: write - outputs: - new-version: ${{ steps.create-tag.outputs.new_version }} - steps: - - name: Check out - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.12' - - name: Set up poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: '2.1.1' - - name: Install dependencies - run: poetry install --all-extras - - name: Lint - run: poetry run poe lint - - name: Test - run: poetry run pytest - - name: Create tag - uses: mathieudutour/github-tag-action@v6.2 - id: create-tag - with: - github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr-metadata.yaml b/.github/workflows/pr-metadata.yaml index 386d55f..4c8508c 100644 --- a/.github/workflows/pr-metadata.yaml +++ b/.github/workflows/pr-metadata.yaml @@ -19,4 +19,3 @@ jobs: task_types: '["build","chore","ci","deps","docs","feat","fix","perf","refactor","revert","test"]' add_scope_label: true token: ${{ secrets.GITHUB_TOKEN }} - diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 0000000..73fe8d5 --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,11 @@ +name: PR +on: + pull_request: + branches: + - main + paths-ignore: + - '**.md' +jobs: + test: + name: Test + uses: ./.github/workflows/test.yaml diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml deleted file mode 100644 index 271342f..0000000 --- a/.github/workflows/pr.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: PR -on: - pull_request: - branches: - - main - paths-ignore: - - '**.md' -jobs: - test: - name: Test - timeout-minutes: 4 - runs-on: ubuntu-latest - steps: - - name: Check out - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.12' - - name: Set up poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: '2.1.1' - - name: Install dependencies - run: poetry install --all-extras - - name: Lint - run: poetry run poe lint - - name: Test - run: poetry run pytest diff --git a/.github/workflows/tag.yaml b/.github/workflows/tag.yaml new file mode 100644 index 0000000..356275d --- /dev/null +++ b/.github/workflows/tag.yaml @@ -0,0 +1,32 @@ +name: Tag +on: + workflow_call: + outputs: + new-version: + value: ${{ jobs.tag.outputs.new-version }} + new-major-version: + value: ${{ jobs.tag.outputs.new-major-version }} +jobs: + tag: + name: Tag + runs-on: ubuntu-latest + permissions: + contents: write + outputs: + new-version: ${{ steps.bump-version.outputs.new_version }} + new-major-version: ${{ steps.extract-major-version.outputs.version }} + steps: + - name: Check out + uses: actions/checkout@v4 + - name: Bump version and create tag + id: bump-version + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Extract major version + id: extract-major-version + if: steps.bump-version.outputs.new_version != '' + run: + echo "version=${PACKAGE_VERSION%%.*}" >>"$GITHUB_OUTPUT" + env: + PACKAGE_VERSION: ${{ steps.bump-version.outputs.new_version }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..ea2c5b5 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,24 @@ +name: Test +on: + workflow_call: + inputs: + timeout-minutes: + required: false + type: number + default: 3 +jobs: + test: + name: Test + timeout-minutes: ${{ inputs.timeout-minutes }} + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out + uses: actions/checkout@v4 + - name: Set up + uses: ./.github/actions/setup + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Test + run: poetry run pytest