diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..91a1f17 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,8 @@ +enhancement: + - head-branch: ["^feature/"] + +bug: + - head-branch: ["^fix/"] + +internal: + - head-branch: ["^chore/"] diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..c529998 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,50 @@ +name-template: "$RESOLVED_VERSION" +tag-template: "v$RESOLVED_VERSION" + +template: | + ## Muutokset + + $CHANGES + + **Yksityiskohtaisempi muutosloki**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION + +categories: + - title: "๐Ÿš€ Uudet ominaisuudet" + labels: + - "feature" + - "enhancement" + - title: "๐Ÿ› Korjaukset" + labels: + - "fix" + - "bugfix" + - "bug" + - title: "๐Ÿ“– Dokumentaatio" + labels: + - "documentation" + - title: "๐Ÿงฐ Yllรคpito" + labels: + - "chore" + - "internal" + +exclude-labels: + - "skip-changelog" + +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. + +version-resolver: + major: + labels: + - "major" + - "breaking" + minor: + labels: + - "minor" + - "feature" + - "enhancement" + patch: + labels: + - "patch" + - "fix" + - "bug" + default: patch diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml new file mode 100644 index 0000000..d4b5c9d --- /dev/null +++ b/.github/workflows/enforce-labels.yml @@ -0,0 +1,13 @@ +name: Enforce PR labels for release drafter + +on: + pull_request: + types: [labeled, unlabeled, opened, edited, synchronize] +jobs: + enforce-label: + runs-on: ubuntu-latest + steps: + - uses: yogevbd/enforce-label-action@2.2.2 + with: + REQUIRED_LABELS_ANY: "bug,enhancement,internal,documentation,skip-changelog" + REQUIRED_LABELS_ANY_DESCRIPTION: "Select at least one label ['bug','enhancement','internal','documentation','skip-changelog'] for the PR" diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..52474c6 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,12 @@ +name: "Pull Request Labeler" +on: + - pull_request_target + +jobs: + labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..335f326 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,34 @@ +name: Release Drafter + +on: + push: + branches: + - main + +permissions: + contents: read + +jobs: + update_release_draft: + name: "๐Ÿ“ Update Release Draft" + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: read + runs-on: ubuntu-latest + outputs: + name: ${{ steps.release-drafter.outputs.name }} + tag_name: ${{ steps.release-drafter.outputs.tag_name }} + steps: + # Drafts your next Release notes as Pull Requests are merged into "main" + - uses: release-drafter/release-drafter@v6 + id: release-drafter + with: + disable-autolabeler: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: | + echo "name: ${{ steps.release-drafter.outputs.tag_name }}" + echo "tag=${{ steps.release-drafter.outputs.tag_name }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7455740 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Release +on: + push: + tags: + - v*.*.* + +jobs: + release: + runs-on: ubuntu-latest + outputs: + tag: ${{ steps.version.outputs.tag }} + version: ${{ steps.version.outputs.version }} + steps: + - name: version + id: version + run: | + tag=${GITHUB_REF/refs\/tags\//} + version=${tag#v} + echo "tag=${tag}" >> $GITHUB_OUTPUT + echo "version=${version}" >> $GITHUB_OUTPUT + + - uses: release-drafter/release-drafter@master + with: + version: ${{ steps.version.outputs.version }} + publish: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + deploy: + runs-on: ubuntu-24.04 + needs: release + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install dependencies + run: | + sudo apt update && sudo apt install qtbase5-dev qttools5-dev-tools + sudo pip install qgis-plugin-ci --break-system-packages + - name: Release + run: | + qgis-plugin-ci release ${{ needs.release.outputs.version }} \ + --release-tag ${{ needs.release.outputs.tag }} \ + --disable-submodule-update \ + --github-token ${{ secrets.GITHUB_TOKEN }} \ + --create-plugin-repo diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 545b219..d84d49f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,6 +5,7 @@ repos: rev: v4.6.0 hooks: - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files