diff --git a/.github/workflows/bandit.yaml b/.github/workflows/bandit.yaml index 0abee46..28d261b 100644 --- a/.github/workflows/bandit.yaml +++ b/.github/workflows/bandit.yaml @@ -1,3 +1,5 @@ +name: Bandit Security Analysis + on: [push] jobs: diff --git a/.github/workflows/build_and_publish_docker.yaml b/.github/workflows/build_and_publish_docker.yaml index 22ed477..174dfb3 100644 --- a/.github/workflows/build_and_publish_docker.yaml +++ b/.github/workflows/build_and_publish_docker.yaml @@ -75,3 +75,10 @@ jobs: if [ "${{ steps.vars.outputs.latest }}" = "true" ]; then echo "Also tagged as :latest" fi + - name: Create GitHub Release + if: startsWith(github.ref, 'refs/tags/') && steps.vars.outputs.latest == 'true' + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.vars.outputs.tag }} + name: Release ${{ steps.vars.outputs.tag }} + generate_release_notes: true diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml index d483f52..2364170 100644 --- a/.github/workflows/isort.yaml +++ b/.github/workflows/isort.yaml @@ -1,3 +1,5 @@ +name: isort + on: [push] jobs: diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml index 0b586c3..cd94de4 100644 --- a/.github/workflows/mypy.yaml +++ b/.github/workflows/mypy.yaml @@ -1,3 +1,5 @@ +name: mypy + on: [push] jobs: diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index 11c2b50..2f09f02 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -1,3 +1,5 @@ +name: pytest + on: [push] jobs: diff --git a/.github/workflows/radon.yaml b/.github/workflows/radon.yaml index 7bb495a..31a1fde 100644 --- a/.github/workflows/radon.yaml +++ b/.github/workflows/radon.yaml @@ -1,3 +1,5 @@ +name: radon + on: [push] jobs: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..d8681d1 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,61 @@ +name: Release and Changelog + +on: + release: + types: [created] + workflow_dispatch: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +permissions: + contents: write + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + - name: Get tag name + id: tag + run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + + - name: Generate release notes + id: release_notes + uses: actions/github-script@v7 + with: + script: | + const tag = process.env.GITHUB_REF_NAME; + const { data: commits } = await github.rest.repos.listCommits({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 20, + }); + + const notes = commits.map(c => `- ${c.commit.message.split('\n')[0]}`).join('\n'); + return notes; + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.tag.outputs.tag }} + name: Release ${{ steps.tag.outputs.tag }} + body: ${{ steps.release_notes.outputs.result }} + + - name: Update CHANGELOG.md + run: | + echo "## ${{ steps.tag.outputs.tag }}" >> CHANGELOG.md + echo "" >> CHANGELOG.md + echo "${{ steps.release_notes.outputs.result }}" >> CHANGELOG.md + echo "" >> CHANGELOG.md + git add CHANGELOG.md + git commit -m "docs: update CHANGELOG for ${{ steps.tag.outputs.tag }}" + git push origin HEAD diff --git a/.github/workflows/ruff_format.yaml b/.github/workflows/ruff_format.yaml index 280f8a8..eff2b7a 100644 --- a/.github/workflows/ruff_format.yaml +++ b/.github/workflows/ruff_format.yaml @@ -1,3 +1,5 @@ +name: ruff_format + on: [push] jobs: diff --git a/.github/workflows/ruff_lint.yaml b/.github/workflows/ruff_lint.yaml index 4978af7..1c88f6b 100644 --- a/.github/workflows/ruff_lint.yaml +++ b/.github/workflows/ruff_lint.yaml @@ -1,3 +1,5 @@ +name: ruff_lint + on: [push] jobs: