From 0ce75f0e1d95de0055b76ae056dd250d36754bf3 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:34:09 +0000 Subject: [PATCH 01/10] updated conditon to be triggert on. Adjusted if conditions of jobs --- .github/workflows/pypi.yml | 47 +++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index a76369e..88c4521 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -1,24 +1,35 @@ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI on: - pull_request: - types: [closed] + pull_request_target: branches: - develop - - main + types: + - closed + push: + tags: + - 'v*.*.*' + workflow_dispatch: inputs: - job: - description: "Select job to run" - required: true - type: choice - options: - - Build-and-publish-to-Test-PyPI - - test-install - - publish-to-pypi + test: + description: "Run tests" + default: true + type: boolean + publish_to_pypi: + description: "Publish to PyPI" + default: false + type: boolean jobs: Build-and-publish-to-Test-PyPI: + if: | + (github.event_name == 'workflow_dispatch' && + github.event.inputs.test == 'true') || + (github.event_name == 'pull_request_target' && + github.event.pull_request.merged && + contains(github.event.pull_request.labels.*.name, 'release')) || + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -32,7 +43,7 @@ jobs: repository_name: "scraibe" repository_url: "https://test.pypi.org/legacy/" - test-install: + Test-PyPi-install: name: Test Installation from TestPyPI needs: Build-and-publish-to-Test-PyPI runs-on: ubuntu-latest @@ -54,8 +65,18 @@ jobs: publish-to-pypi: name: Publish to PyPI - needs: test-install + needs: Test-PyPi-install runs-on: ubuntu-latest + if: | + always() && + (( needs.Build-and-publish-to-Test-PyPI.result != 'failure' && + needs.Test-PyPi-install.result != 'failure' ) && + ((github.event_name == 'workflow_dispatch' && + github.event.inputs.publish_to_pypi == 'true') || + (github.event_name == 'pull_request_target' && + github.event.pull_request.merged && + contains(github.event.pull_request.labels.*.name, 'release')) || + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')))) steps: - name: Checkout Repository Tags uses: actions/checkout@v4 From a52ac60b5eb947c06c7f5f68cf10872496c6a08e Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:34:22 +0000 Subject: [PATCH 02/10] removed old workflow --- .github/workflows/manuel_publish.yml | 29 ---------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/workflows/manuel_publish.yml diff --git a/.github/workflows/manuel_publish.yml b/.github/workflows/manuel_publish.yml deleted file mode 100644 index 7e5fecc..0000000 --- a/.github/workflows/manuel_publish.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Manual Publish to PyPI - -on: - workflow_dispatch: - inputs: - branch: - description: 'Branch to check out (main or develop)' - required: true - type: choice - options: - - main - - develop - -jobs: - publish-to-pypi: - name: Publish to PyPI - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - fetch-depth: '0' - ref: ${{ github.event.inputs.branch }} - - name: Set up Poetry 📦 - uses: JRubics/poetry-publish@v1.16 - with: - pypi_token: ${{ secrets.PYPI_API_TOKEN }} - plugins: "poetry-dynamic-versioning" - repository_name: "scraibe" From 8396c1ad95dc078e3a5471d896217c8200e1d600 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:35:04 +0000 Subject: [PATCH 03/10] removed old workflow --- .github/workflows/semver.yml | 111 ----------------------------------- 1 file changed, 111 deletions(-) delete mode 100644 .github/workflows/semver.yml diff --git a/.github/workflows/semver.yml b/.github/workflows/semver.yml deleted file mode 100644 index 88565c3..0000000 --- a/.github/workflows/semver.yml +++ /dev/null @@ -1,111 +0,0 @@ -name: Semantic Versioning for Tags - -on: - pull_request: - types: [closed] - branches: - - main - -jobs: - bump-version: - if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' }} - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Check if Source Branch is docs - id: check_docs_branch - run: | - pr_head_ref="${{ github.event.pull_request.head.ref }}" - if [[ "$pr_head_ref" == "docs" ]]; then - echo "is_docs_branch=true" >> $GITHUB_ENV - echo "This is a docs branch merge. Exiting without creating a tag." - exit 0 - else - echo "is_docs_branch=false" >> $GITHUB_ENV - fi - - - name: Bump Version and Tag - if: env.is_docs_branch != 'true' - id: bump_version - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - # Fetch the latest tags from the remote - git fetch --tags - - # Get the latest tag, or initialize to v0.0.0 if no tags are found - latest_tag=$(git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null || echo "v0.0.0") - - # Extract version from PR title or body - pr_body="${{ github.event.pull_request.body }}" - pr_title="${{ github.event.pull_request.title }}" - version_regex="v([0-9]+)\.([0-9]+)\.([0-9]+)" - - if [[ $pr_body =~ $version_regex ]]; then - major=${BASH_REMATCH[1]} - minor=${BASH_REMATCH[2]} - patch=${BASH_REMATCH[3]} - new_tag="v$major.$minor.$patch" - elif [[ $pr_title =~ $version_regex ]]; then - major=${BASH_REMATCH[1]} - minor=${BASH_REMATCH[2]} - patch=${BASH_REMATCH[3]} - new_tag="v$major.$minor.$patch" - else - # Split the latest tag into parts - IFS='.' read -r -a parts <<< "${latest_tag#v}" - major=${parts[0]} - minor=${parts[1]} - patch=${parts[2]} - patch=$((patch + 1)) - new_tag="v$major.$minor.$patch" - fi - - echo "Bumping version from $latest_tag to $new_tag" - - # Set the new tag as an environment variable - echo "new_tag=$new_tag" >> $GITHUB_ENV - - # Tag the new version - git tag $new_tag - - # Configure GitHub token authentication - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }}.git - - # Push the new tag to the remote repository - git push origin $new_tag - - - name: Extract Release Notes - if: env.is_docs_branch != 'true' - id: extract_notes - run: | - version="${{ env.new_tag }}" - clean_version="${version#v}" - release_notes=$(awk -v version="$clean_version" ' - BEGIN { flag=0 } - # Start flagging when the version section is found - /^## \[.*\]/ { - if (flag) exit # Exit when the next section starts - } - /^## \['"$clean_version"'\]/ { flag=1; next } # Start printing after the header - flag { print } # Print lines while flag is 1 - ' CHANGELOG.md) - echo "RELEASE_NOTES<> $GITHUB_ENV - echo "$release_notes" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - - - name: Create Release - if: env.is_docs_branch != 'true' - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - with: - tag_name: ${{ env.new_tag }} - release_name: Release ${{ env.new_tag }} - body: ${{ env.RELEASE_NOTES }} - draft: false - prerelease: false From 84dd2d346535caa45a47574649537194d5f30920 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:37:29 +0000 Subject: [PATCH 04/10] added release workflow --- .github/workflows/release_on_tag.yaml | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/release_on_tag.yaml diff --git a/.github/workflows/release_on_tag.yaml b/.github/workflows/release_on_tag.yaml new file mode 100644 index 0000000..87fe515 --- /dev/null +++ b/.github/workflows/release_on_tag.yaml @@ -0,0 +1,72 @@ +name: release + +on: + push: + tags: + - 'v*.*.*' + +jobs: + build-on-workflow: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_run' && + github.event.workflow_run.conclusion == 'success' + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Ensure all history is fetched + ref: main + + - name: Get Latest Tag + id: get-latest-tag + if: + run: | + git fetch --tags + latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`) + echo "latest_tag=$latest_tag" >> $GITHUB_OUTPUT + + - name: Release from Workflow Run + if: | + github.event_name == 'workflow_run' && + github.event.workflow_run.conclusion == 'success' + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + append_body: true + tag_name: ${{ steps.get-latest-tag.outputs.latest_tag }} + + build-on-tag: + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Ensure all history is fetched + ref: main + - name: Release from Tag Push + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + append_body: true + + write_changelog: + runs-on: ubuntu-latest + needs: [build-on-workflow, build-on-tag] + if: | + always() && + (needs.build-on-workflow.result == 'success' || needs.build-on-tag.result == 'success' ) + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Ensure all history is fetched + ref: main + + - name: Write CHANGELOG.md + uses: rhysd/changelog-from-release/action@v3 + with: + file: CHANGELOG.md + github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 7e4315ac72f300772b82f2a18fbeb42e93ae17d6 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:42:02 +0000 Subject: [PATCH 05/10] add auto labeling for pr --- .github/auto_label_pr.yml | 51 +++++++++++++++++++++++++++++ .github/workflows/autolabel-pr.yaml | 22 +++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .github/auto_label_pr.yml create mode 100644 .github/workflows/autolabel-pr.yaml diff --git a/.github/auto_label_pr.yml b/.github/auto_label_pr.yml new file mode 100644 index 0000000..fcd2186 --- /dev/null +++ b/.github/auto_label_pr.yml @@ -0,0 +1,51 @@ +# .github/labeler.yml + +# Label for documentation changes +documentation: + - changed-files: + - any-glob-to-any-file: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + + +# Label for Docker changes +docker: + - changed-files: + - any-glob-to-any-file: + - '*docker*' + - 'Docker*' + +# Label for release-related changes +release: + - changed-files: + - any-glob-to-any-file: + - 'src/**' + - 'pyproject.toml' + - 'LICENCE' + +tests: + - changed-files: + - any-glob-to-any-file: + - 'tests/**' + +workflows: + - changed-files: + - any-glob-to-any-file: + - '.github/workflows/*' + - '.github/*' + +github: + - changed-files: + - any-glob-to-any-file: + - '.gitignore' + +feature: + - head-branch: ['^feature', 'feature'] + +patch: + - head-branch: ['^patch', 'patch', '^bug', 'bug'] + +ignore-pr-title-for-release: + - head-branch: ['develop'] + - base-branch: ['main'] \ No newline at end of file diff --git a/.github/workflows/autolabel-pr.yaml b/.github/workflows/autolabel-pr.yaml new file mode 100644 index 0000000..7c1ceb4 --- /dev/null +++ b/.github/workflows/autolabel-pr.yaml @@ -0,0 +1,22 @@ +name: Auto Label PRs + +on: + pull_request: + types: [opened, synchronize, reopened, edited] + +jobs: + label: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + outputs: + all-labels: ${{ steps.label-the-PR.outputs.all-labels }} + steps: + - name: Apply Labels + id: label-the-PR + uses: actions/labeler@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/labeler.yml + sync-labels: true \ No newline at end of file From b38faff915afba917135511a2daab00a45c71601 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:42:19 +0000 Subject: [PATCH 06/10] updated path to label file --- .github/workflows/autolabel-pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autolabel-pr.yaml b/.github/workflows/autolabel-pr.yaml index 7c1ceb4..8db7106 100644 --- a/.github/workflows/autolabel-pr.yaml +++ b/.github/workflows/autolabel-pr.yaml @@ -18,5 +18,5 @@ jobs: uses: actions/labeler@v5 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - configuration-path: .github/labeler.yml + configuration-path: .github/auto_label_pr.yml sync-labels: true \ No newline at end of file From 4aed5c0ecf60fad1899218cb0e55777e625a8b5e Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:42:45 +0000 Subject: [PATCH 07/10] added config file for auto realease --- .github/release.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/release.yml diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..7f7e986 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,47 @@ +#Automatically generated release notes from GIthub used by softprops/action-gh-release@v2 in .github/workflows/release.yaml + +changelog: + exclude: + labels: + - ignore-for-release + - ignore-pr-title-for-release + - workflows + - github + - documentation + authors: + - octocat + - github-actions[bot] + + categories: + - title: New Features 🎉 + labels: + - enhancement + - feature + - Semver-Minor + + - title: Bug Fixes 🐛 + labels: + - bug + - fix + - patch + + - title: Dependency Updates 📦 + labels: + - dependency + - dependencies + - dependency-update + + - title: Breaking Changes 🛠 + labels: + - breaking-change + - Semver-Major + + - title: Container and Compose Updates 🐳 + labels: + - docker + - compose + - docker-compose + + - title: Other Changes 🔧 + labels: + - "*" From 3311e89877db5a00704fbc927d2dc4df60c76be2 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:43:12 +0000 Subject: [PATCH 08/10] added workflow to autolabel for issues --- .github/auto-label.json5 | 21 +++++++++++++++++++++ .github/workflows/auto-label-issue.yaml | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 .github/auto-label.json5 create mode 100644 .github/workflows/auto-label-issue.yaml diff --git a/.github/auto-label.json5 b/.github/auto-label.json5 new file mode 100644 index 0000000..6022b40 --- /dev/null +++ b/.github/auto-label.json5 @@ -0,0 +1,21 @@ +{ + labelsSynonyms: { + bug: ['error', 'need fix', 'not working', 'failure', 'crash', 'problem', 'issue', 'defect', 'glitch', 'fault', 'anomaly'], + enhancement: ['upgrade', 'update', 'improve', 'feature request', 'new feature', 'enhance', 'extension', 'add-on', 'improvement'], + "help wanted": ['help', 'how can i', 'assistance needed', 'support needed', 'question', 'guidance', 'aid', 'need assistance', 'advice', 'instruction'], + documentation: ['docs', 'Readme', 'documentation', 'guide', 'manual', 'instructions', 'how-to', 'reference', 'tutorial', 'specification'], + docker: ['compose', 'Dockerfile', 'container', 'docker-compose', 'image', 'docker setup', 'kubernetes', 'docker swarm', 'containerization'], + performance: ['slow', 'lag', 'performance', 'speed', 'optimization', 'tuning', 'efficiency', 'latency', 'improve performance', 'boost', 'performance issue'], + security: ['vulnerability', 'exploit', 'attack', 'breach', 'security', 'protection', 'patch', 'secure', 'threat', 'risk', 'malware'], + ui: ['user interface', 'ui', 'ux', 'design', 'layout', 'front-end', 'visual', 'interface', 'experience', 'aesthetic', 'theme', 'style'], + test: ['test', 'testing', 'unit test', 'integration test', 'e2e test', 'automated test', 'test case', 'test suite', 'qa', 'quality assurance'], + compatibility: ['compatible', 'incompatible', 'version', 'compatibility', 'interop', 'support', 'versioning', 'cross-platform', 'integration', 'compatibility issue'] + }, + labelsNotAllowed: [ + 'duplicate', + 'good first issue', + 'invalid' + ], + //defaultLabels: ['triage'], + ignoreComments: true +} \ No newline at end of file diff --git a/.github/workflows/auto-label-issue.yaml b/.github/workflows/auto-label-issue.yaml new file mode 100644 index 0000000..1b51c18 --- /dev/null +++ b/.github/workflows/auto-label-issue.yaml @@ -0,0 +1,18 @@ +name: Labeling new issue +on: + issues: + types: ['opened', 'reopened'] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + sparse-checkout: | + .github/auto-label.json5 + sparse-checkout-cone-mode: false + - uses: Renato66/auto-label@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-file: .github/auto-label.json5 \ No newline at end of file From b5deeac15c89aa30d41a5faa4f19aa25aa51fbc0 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:53:56 +0000 Subject: [PATCH 09/10] adjust labeler to work with scraibe --- .github/auto_label_pr.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/auto_label_pr.yml b/.github/auto_label_pr.yml index fcd2186..95f2bd9 100644 --- a/.github/auto_label_pr.yml +++ b/.github/auto_label_pr.yml @@ -7,6 +7,8 @@ documentation: - 'docs/**' - 'README.md' - 'CHANGELOG.md' + - 'CONTRIBUTING.md' + - 'Makefile' # Label for Docker changes @@ -20,14 +22,14 @@ docker: release: - changed-files: - any-glob-to-any-file: - - 'src/**' + - 'scraibe/**' - 'pyproject.toml' - 'LICENCE' tests: - changed-files: - any-glob-to-any-file: - - 'tests/**' + - 'test/**' workflows: - changed-files: @@ -40,6 +42,14 @@ github: - any-glob-to-any-file: - '.gitignore' +dependencies: + - changed-files: + - any-glob-to-any-file: + - 'requirements.txt' + - 'environment.yml' + - 'pyproject.toml' + - head-branch: ['^dependencies', 'dependencies', '^dependency', 'dependency'] + feature: - head-branch: ['^feature', 'feature'] From 9494e719f90001d89e3e0b392aa708a7017df414 Mon Sep 17 00:00:00 2001 From: "Schmieder, Jacob" Date: Fri, 30 Aug 2024 08:56:38 +0000 Subject: [PATCH 10/10] added pictures to dcoumentation label --- .github/auto_label_pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/auto_label_pr.yml b/.github/auto_label_pr.yml index 95f2bd9..579a44c 100644 --- a/.github/auto_label_pr.yml +++ b/.github/auto_label_pr.yml @@ -9,6 +9,7 @@ documentation: - 'CHANGELOG.md' - 'CONTRIBUTING.md' - 'Makefile' + - 'Pictures' # Label for Docker changes