diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 50ac3cd..6a5f73f 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.0.13 +current_version = 1.0.14 commit = True tag = False diff --git a/.github/workflows/release-controller.yml b/.github/workflows/release-controller.yml index 43868ae..3493862 100644 --- a/.github/workflows/release-controller.yml +++ b/.github/workflows/release-controller.yml @@ -7,7 +7,6 @@ on: push: tags: - 'v[0-9]+.[0-9]+.[0-9]+' - - 'v*.*.*' permissions: contents: write @@ -19,30 +18,100 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') env: REPO_NAME: ${{ github.event.repository.name }} - # set folder repository var \ - # (settings->security->secrets-variables->actions->variables->repository) \ - # or set default - FOLDER_TO_COMPRESS: 'docs' + REPO_FULL: ${{ github.repository }} steps: - name: Checkout repository id: checkout_repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up Python 3.12 - id: setup_python - uses: actions/setup-python@v4 - with: - python-version: 3.12 - - name: Install dependencies - id: install_dependencies + - name: Generate Release Notes + id: release_notes run: | - python -m venv venv - source venv/bin/activate - pip install --upgrade pip - pip install poetry - poetry lock - poetry install + TAG="${GITHUB_REF_NAME}" + PREV_TAG=$(git describe --tags --abbrev=0 "${TAG}^" 2>/dev/null || echo "") + + if [ -z "$PREV_TAG" ]; then + COMMITS=$(git log "$TAG" --pretty=format:"%s") + else + COMMITS=$(git log "${PREV_TAG}..${TAG}" --pretty=format:"%s") + fi + + FEATURES="" + FIXES="" + DOCS="" + REFACTORS="" + PERF="" + CHORES="" + STYLES="" + TESTS="" + OTHER="" + + while IFS= read -r line; do + # Skip noise commits + case "$line" in + "Bump version:"*|"Merge branch"*|"Merge pull request"*) continue ;; + esac + + # Strip emoji prefix if present + clean=$(echo "$line" | sed 's/^[^a-zA-Z]* *//') + + # Parse conventional commit + if echo "$clean" | grep -qE '^(feat|fix|docs|style|refactor|perf|test|chore)(\([^)]+\))?:'; then + TYPE=$(echo "$clean" | sed -E 's/^(feat|fix|docs|style|refactor|perf|test|chore).*/\1/') + DESC=$(echo "$clean" | sed -E 's/^(feat|fix|docs|style|refactor|perf|test|chore)(\([^)]+\))?:\s*//') + # Remove versioning keyword suffix + DESC=$(echo "$DESC" | sed -E 's/\s*\[(minor|major|patch) candidate\]\s*$//') + SCOPE=$(echo "$clean" | sed -nE 's/^[a-z]+\(([^)]+)\):.*/\1/p') + + if [ -n "$SCOPE" ]; then + ENTRY="- **${SCOPE}**: ${DESC}" + else + ENTRY="- ${DESC}" + fi + + case "$TYPE" in + feat) FEATURES="${FEATURES}${ENTRY}\n" ;; + fix) FIXES="${FIXES}${ENTRY}\n" ;; + docs) DOCS="${DOCS}${ENTRY}\n" ;; + style) STYLES="${STYLES}${ENTRY}\n" ;; + refactor) REFACTORS="${REFACTORS}${ENTRY}\n" ;; + perf) PERF="${PERF}${ENTRY}\n" ;; + test) TESTS="${TESTS}${ENTRY}\n" ;; + chore) CHORES="${CHORES}${ENTRY}\n" ;; + esac + else + if [ -n "$clean" ]; then + OTHER="${OTHER}- ${clean}\n" + fi + fi + done <<< "$COMMITS" + + # Build release notes body + BODY="## What's Changed\n\n" + + [ -n "$FEATURES" ] && BODY="${BODY}### Features\n${FEATURES}\n" + [ -n "$FIXES" ] && BODY="${BODY}### Bug Fixes\n${FIXES}\n" + [ -n "$DOCS" ] && BODY="${BODY}### Documentation\n${DOCS}\n" + [ -n "$REFACTORS" ] && BODY="${BODY}### Refactors\n${REFACTORS}\n" + [ -n "$PERF" ] && BODY="${BODY}### Performance\n${PERF}\n" + [ -n "$STYLES" ] && BODY="${BODY}### Styles\n${STYLES}\n" + [ -n "$TESTS" ] && BODY="${BODY}### Tests\n${TESTS}\n" + [ -n "$CHORES" ] && BODY="${BODY}### Chores\n${CHORES}\n" + [ -n "$OTHER" ] && BODY="${BODY}### Other\n${OTHER}\n" + + if [ -n "$PREV_TAG" ]; then + BODY="${BODY}**Full Changelog**: https://github.com/${REPO_FULL}/compare/${PREV_TAG}...${TAG}\n" + fi + + # Write to output using delimiter + { + echo "body<> "$GITHUB_OUTPUT" + env: + REPO_FULL: ${{ env.REPO_FULL }} - name: Package Version id: package_version run: | @@ -50,28 +119,18 @@ jobs: {INSTALL,SECURITY,README,ICONS,CONTRIBUTING,CODE_OF_CONDUCT}.md \ requirements.txt .github scripts frontend backend \ pyproject.toml LICENSE -# "${FOLDER_TO_COMPRESS}" env: REPO_NAME: ${{ env.REPO_NAME }} GITHUB_REF_NAME: ${{ github.ref_name }} - FOLDER_TO_COMPRESS: ${{ env.FOLDER_TO_COMPRESS }} - name: Create GitHub Release id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} - release_name: Release ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + body: ${{ steps.release_notes.outputs.body }} draft: false prerelease: false - - name: Upload Release Asset - id: upload_release - uses: actions/upload-release-asset@v1 + files: "${{ env.REPO_NAME }}-${{ github.ref_name }}.zip" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: "${{ env.REPO_NAME }}-${{ github.ref_name }}.zip" - asset_name: "${{ env.REPO_NAME }}-${{ github.ref_name }}.zip" - asset_content_type: application/zip diff --git a/.github/workflows/version-controller.yml b/.github/workflows/version-controller.yml index fc9f4b6..de7c5f2 100644 --- a/.github/workflows/version-controller.yml +++ b/.github/workflows/version-controller.yml @@ -11,18 +11,25 @@ on: - prod - main +permissions: + contents: write + pull-requests: write + jobs: version-controller: runs-on: ubuntu-latest + env: + REPO_NAME: ${{ github.event.repository.name }} + REPO_FULL: ${{ github.repository }} steps: - name: Checkout Repository id: checkout_repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Python id: setup_python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install Dependencies @@ -65,18 +72,28 @@ jobs: git rm -r --cached scripts || true rm -rf scripts git submodule add -b ${{ steps.determine_branch.outputs.current_branch }} https://github.com/JuanVilla424/scripts.git -# - name: Run Changelog Generator -# id: run_changelog -# run: | -# python scripts/generate_changelog/main.py + - name: Run Changelog Generator + id: run_changelog + run: | + python scripts/generate_changelog/main.py + - name: Commit Changelog Updates + id: commit_changelog + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add CHANGELOG.md || true + git diff --cached --quiet || git commit -m "docs(core): update changelog" - name: Check for Forbidden Character id: check_arrow run: | - if [[ "${{ steps.get_commit.outputs.commit_message }}" == *"→"* && "${{ steps.get_commit.outputs.commit_message }}" == *"Bump version:"* ]]; then + COMMIT_MSG="${COMMIT_MESSAGE}" + if [[ "$COMMIT_MSG" == *"→"* && "$COMMIT_MSG" == *"Bump version:"* ]]; then echo "contains_arrow=true" >> $GITHUB_OUTPUT else echo "contains_arrow=false" >> $GITHUB_OUTPUT fi + env: + COMMIT_MESSAGE: ${{ steps.get_commit.outputs.commit_message }} - name: Create Tag id: create_tag if: steps.check_arrow.outputs.contains_arrow == 'true' @@ -93,7 +110,7 @@ jobs: run: | git push origin "${{ steps.create_tag.outputs.tag_name }}" env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} - name: Ensure on Current Branch id: ensure_branch if: steps.check_arrow.outputs.contains_arrow == 'true' @@ -102,7 +119,7 @@ jobs: - name: Create Pull Request id: create_pull_request if: steps.check_arrow.outputs.contains_arrow == 'true' && github.ref != 'refs/heads/main' - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -141,5 +158,100 @@ jobs: TAG_NAME="v${VERSION}" git tag "$TAG_NAME" git push origin "$TAG_NAME" + echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT + env: + GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} + - name: Generate Release Notes + id: release_notes + if: github.ref == 'refs/heads/main' && steps.check_arrow.outputs.contains_arrow == 'true' + run: | + TAG="${{ steps.push_tag_to_main.outputs.tag_name }}" + PREV_TAG=$(git describe --tags --abbrev=0 "${TAG}^" 2>/dev/null || echo "") + + if [ -z "$PREV_TAG" ]; then + COMMITS=$(git log "$TAG" --pretty=format:"%s") + else + COMMITS=$(git log "${PREV_TAG}..${TAG}" --pretty=format:"%s") + fi + + FEATURES="" + FIXES="" + DOCS="" + REFACTORS="" + PERF="" + CHORES="" + STYLES="" + TESTS="" + OTHER="" + + while IFS= read -r line; do + case "$line" in + "Bump version:"*|"Merge branch"*|"Merge pull request"*) continue ;; + esac + + clean=$(echo "$line" | sed 's/^[^a-zA-Z]* *//') + + if echo "$clean" | grep -qE '^(feat|fix|docs|style|refactor|perf|test|chore)(\([^)]+\))?:'; then + TYPE=$(echo "$clean" | sed -E 's/^(feat|fix|docs|style|refactor|perf|test|chore).*/\1/') + DESC=$(echo "$clean" | sed -E 's/^(feat|fix|docs|style|refactor|perf|test|chore)(\([^)]+\))?:\s*//') + DESC=$(echo "$DESC" | sed -E 's/\s*\[(minor|major|patch) candidate\]\s*$//') + SCOPE=$(echo "$clean" | sed -nE 's/^[a-z]+\(([^)]+)\):.*/\1/p') + + if [ -n "$SCOPE" ]; then + ENTRY="- **${SCOPE}**: ${DESC}" + else + ENTRY="- ${DESC}" + fi + + case "$TYPE" in + feat) FEATURES="${FEATURES}${ENTRY}\n" ;; + fix) FIXES="${FIXES}${ENTRY}\n" ;; + docs) DOCS="${DOCS}${ENTRY}\n" ;; + style) STYLES="${STYLES}${ENTRY}\n" ;; + refactor) REFACTORS="${REFACTORS}${ENTRY}\n" ;; + perf) PERF="${PERF}${ENTRY}\n" ;; + test) TESTS="${TESTS}${ENTRY}\n" ;; + chore) CHORES="${CHORES}${ENTRY}\n" ;; + esac + else + if [ -n "$clean" ]; then + OTHER="${OTHER}- ${clean}\n" + fi + fi + done <<< "$COMMITS" + + BODY="## What's Changed\n\n" + + [ -n "$FEATURES" ] && BODY="${BODY}### Features\n${FEATURES}\n" + [ -n "$FIXES" ] && BODY="${BODY}### Bug Fixes\n${FIXES}\n" + [ -n "$DOCS" ] && BODY="${BODY}### Documentation\n${DOCS}\n" + [ -n "$REFACTORS" ] && BODY="${BODY}### Refactors\n${REFACTORS}\n" + [ -n "$PERF" ] && BODY="${BODY}### Performance\n${PERF}\n" + [ -n "$STYLES" ] && BODY="${BODY}### Styles\n${STYLES}\n" + [ -n "$TESTS" ] && BODY="${BODY}### Tests\n${TESTS}\n" + [ -n "$CHORES" ] && BODY="${BODY}### Chores\n${CHORES}\n" + [ -n "$OTHER" ] && BODY="${BODY}### Other\n${OTHER}\n" + + if [ -n "$PREV_TAG" ]; then + BODY="${BODY}**Full Changelog**: https://github.com/${REPO_FULL}/compare/${PREV_TAG}...${TAG}\n" + fi + + { + echo "body<> "$GITHUB_OUTPUT" + env: + REPO_FULL: ${{ env.REPO_FULL }} + - name: Create GitHub Release + id: create_release + if: github.ref == 'refs/heads/main' && steps.check_arrow.outputs.contains_arrow == 'true' + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.push_tag_to_main.outputs.tag_name }} + name: Release ${{ steps.push_tag_to_main.outputs.tag_name }} + body: ${{ steps.release_notes.outputs.body }} + draft: false + prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ce00ba7..d06d9d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,69 +1,150 @@ -## [1.0.4] - 2024-10-29 +## [1.0.13] - 2025-04-06 + +### Bug Fixes + +- **core**: deps update (`patch candidate`) +- **deps**: update pytest-cov requirement from ^5.0.0 to ^6.1.1 in /backend (#54) +- **deps**: update pytest-cov requirement from ^5.0.0 to ^6.1.1 (#53) +- **deps**: update pytest-cov requirement in /backend +- **deps**: update pytest-cov requirement from ^5.0.0 to ^6.1.1 + +## [1.0.12] - 2025-04-06 + +### Bug Fixes + +- **core**: fixed yamlint dep (`patch candidate`) + +## [1.0.11] - 2025-04-06 + +### Bug Fixes + +- **core**: fixed depdendabot prefix (`patch candidate`) + +## [1.0.10] - 2025-04-06 + +### Features + +- **core**: update cazira doc compiler +- **core**: update cazira doc compiler +- **core**: added cazira doc compiler (#32) +- **core**: added cazira doc compiler + +### Bug Fixes + +- **core**: deps update (`patch candidate`) + +### Other Changes + +- deps: update setuptools requirement from ^75.2.0 to ^78.1.0 in /backend (#46) +- deps: update setuptools requirement from ^75.2.0 to ^78.1.0 (#45) +- deps: update setuptools requirement from ^75.2.0 to ^78.1.0 in /backend +- deps: update setuptools requirement from ^75.2.0 to ^78.1.0 +- deps: update isort requirement from ^5.12.0 to ^6.0.1 (#40) +- deps: update isort requirement from ^5.12.0 to ^6.0.1 in /backend (#39) +- deps: update black requirement from ^24.3.0 to ^25.1.0 in /backend (#38) +- deps: update certifi requirement from ^2024.8.30 to ^2025.1.31 in /backend (#37) +- deps: update certifi requirement from ^2024.8.30 to ^2025.1.31 (#35) +- deps: update black requirement from ^24.3.0 to ^25.1.0 (#34) +- deps: update isort requirement from ^5.12.0 to ^6.0.1 +- deps: update isort requirement from ^5.12.0 to ^6.0.1 in /backend +- deps: update black requirement from ^24.3.0 to ^25.1.0 in /backend +- deps: update certifi requirement in /backend +- deps: update certifi requirement from ^2024.8.30 to ^2025.1.31 +- deps: update black requirement from ^24.3.0 to ^25.1.0 + +## [1.0.8] - 2024-11-11 + +### Styles + +- **core**: fixed badges (`patch candidate`) +- **core**: fixed badges (`patch candidate`) + +## [1.0.6] - 2024-11-11 + +### Other Changes + +- ️ refactor(core): fixed skeleton [patch candidate] +- ️ refactor(core): fixed skeleton + +## [1.0.5] - 2024-10-28 + +### Features + +- **core**: fixed version-controller.yml create_tag behavior error (#10) +- **core**: fixed template artifacts (#6) ### Chores -- **core**: fixed info files (`patch candidate`) +- **core**: updated scripts submodule (`patch candidate`) +- **core**: updated scripts submodule +- **core**: updated scripts submodule +- **core**: update scripts module +- **deps**: update setuptools requirement from ^67.0.0 to ^75.2.0 in /backend in the pip group across 1 directory (#8) (#9) ### Other Changes -- Bump version: 1.0.3 → 1.0.4 -- chore(core): fixed info files -- style(core): fixed readme file -- chore(core): added scripts submodule +- Update CNAME +- Create CNAME + +## [1.0.4] - 2024-10-24 + +### Styles + +- **core**: fixed readme file + +### Chores + +- **core**: fixed info files (`patch candidate`) +- **core**: fixed info files +- **core**: added scripts submodule -## [1.0.3] - 2024-10-29 +## [1.0.3] - 2024-10-21 ### Chores - **core**: version controller main branch (`patch candidate`) -### Other Changes +## [1.0.2] - 2024-10-21 + +### Features -- Bump version: 1.0.2 → 1.0.3 +- **core**: fixed version-controller.yml create_tag behavior error +- **core**: fixed template artifacts +- **core**: fixed template artifacts (#2) +- **core**: fixed template artifacts +- **core**: added template node artifacts +- **core**: fixed template python artifacts +- **core**: fixed template python artifacts +- **core**: fixed template python artifacts +- **core**: fixed template python artifacts +- **core**: added more to template python artifacts -## [1.0.2] - 2024-10-29 +### Styles + +- **fixed**: readme files +- **fixed**: readme files +- **fixed**: readme files +- **fixed**: readme files +- **core**: added md files ### Chores - **core**: fixed auxiliary hook scripts (`patch candidate`) - **core**: fixed auxiliary hook scripts (`patch candidate`) - **core**: fixed auxiliary hook scripts (`patch candidate`) +- **core**: fixed auxiliary hook scripts +- **core**: fixed auxiliary hook scripts +- **core**: fixed auxiliary hook scripts +- **deps**: update setuptools requirement from ^67.0.0 to ^75.2.0 in /backend in the pip group across 1 directory (#8) +- **deps**: update setuptools requirement ### Other Changes -- Bump version: 1.0.1 → 1.0.2 -- Bump version: 1.0.0 → 1.0.1 -- chore(core): fixed auxiliary hook scripts -- chore(core): fixed auxiliary hook scripts -- chore(core): fixed auxiliary hook scripts -- feat(core): fixed version-controller.yml create_tag behavior error -- chore(deps): update setuptools requirement from ^67.0.0 to ^75.2.0 in /backend in the pip group across 1 directory (#8) -- chore(deps): update setuptools requirement -- feat(core): fixed template artifacts - deps: update pytest-cov requirement from ^4.0.0 to ^5.0.0 (#4) - deps: update setuptools requirement from ^67.0.0 to ^75.2.0 (#3) - deps: update pytest-cov requirement from ^4.0.0 to ^5.0.0 - deps: update setuptools requirement from ^67.0.0 to ^75.2.0 -- feat(core): fixed template artifacts (#2) -- feat(core): fixed template artifacts -- feat(core): added template node artifacts -- feat(core): fixed template python artifacts -- feat(core): fixed template python artifacts -- feat(core): fixed template python artifacts -- feat(core): fixed template python artifacts -- feat(core): added more to template python artifacts -- style(fixed): readme files -- style(fixed): readme files -- style(fixed): readme files -- style(fixed): readme files - chore(): added node cicd -- style(core): added md files - Update README.md - Create ICONS.md - Initial commit - -## [Unreleased] - 2024-10-29 - -### Other Changes - -- 🔧 chore(core): update scripts module diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c982269..6ca4089 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -37,4 +37,4 @@ This code of conduct is adapted from the [Contributor Covenant, version 2.0](htt ## 📜 License -2025 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. +2026 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5be00b4..b0ee211 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,4 +50,4 @@ Thank you for helping improve! ## 📜 License -2025 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. +2026 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. diff --git a/LICENSE b/LICENSE index 1bda86d..ae14bc1 100644 --- a/LICENSE +++ b/LICENSE @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - github-cicd-template Copyright (C) 2025 na0nh + github-cicd-template Copyright (C) 2026 na0nh This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/README.md b/README.md index 251d98c..acb840a 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,9 @@ Welcome to the **GitHub CI/CD Template** repository! This project provides a rob - **Code Quality Checks:** Enforce coding standards with linting and formatting tools. - **Build Optimization:** Optimize build processes for faster deployment cycles. - **Notifications:** Receive updates and alerts on pipeline status via email or chat integrations. +- **Automated Version Control:** Automatic version bumping, tagging, and promotion across branches (dev → test → prod → main). +- **Automated Release Notes:** GitHub Releases with categorized changelogs generated from conventional commits (Features, Bug Fixes, Refactors, etc.). +- **Changelog Generation:** Automatic CHANGELOG.md updates on every version bump via pre-commit hooks. ## 🚀 Getting Started @@ -130,7 +133,6 @@ pre-commit run --all-files ### 📌 Extra Steps 1. **Docker**: - - Using MacOs or Linux: ```bash brew install hadolint @@ -147,7 +149,6 @@ pre-commit run --all-files **To utilize the CI/CD pipeline, follow these steps**: 1. **Configure GitHub Actions** - - Navigate to the .github/workflows/ directory. - Customize the ci.yml file according to your project's requirements. - Customize the python.yml file to format and lint python code. @@ -155,16 +156,21 @@ pre-commit run --all-files - Customize the release-controller file to add or remove **[backend, frontend, docker deployment, database]** 2. **Set Up Secrets** - - Go to your GitHub repository settings. - Navigate to Secrets and add necessary secrets like CODECOV_KEY, etc. + - Add `ACCESS_TOKEN` (Personal Access Token) for cross-repository submodule access and workflow triggers. 3. **Triggering the Pipeline** - - Push to Branches: Pushing code to dev, test, prod, or main branches will trigger the pipeline. - Pull Requests: Opening or updating pull requests will run tests and checks. -4. **Monitoring Pipeline Status** +4. **Version Bumping & Releases** + - Add `[patch candidate]`, `[minor candidate]`, or `[major candidate]` to your commit message to trigger a version bump. + - The pre-push hooks will automatically bump the version in `pyproject.toml` and amend the commit. + - The Version Controller workflow creates tags and promotion PRs across the branch chain (dev → test → prod → main). + - On main, a GitHub Release is automatically created with categorized release notes parsed from conventional commits. + +5. **Monitoring Pipeline Status** - Check the Actions tab in your GitHub repository to monitor the status of your workflows. - Integrate notifications with Slack, Email, or other communication tools for real-time updates. @@ -223,4 +229,4 @@ For any inquiries or support, please open an issue or contact [r6ty5r296it6tl4eg ## 📜 License -2025 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. +2026 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. diff --git a/SECURITY.md b/SECURITY.md index d975a29..e076ef2 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -29,7 +29,6 @@ If you discover a security vulnerability within this project, please follow thes 1. **Do not create a public issue.** Instead, contact us directly to responsibly disclose the vulnerability. 2. **Email** [r6ty5r296it6tl4eg5m.constant214@passinbox.com](mailto:r6ty5r296it6tl4eg5m.constant214@passinbox.com) with the following information: - - A description of the vulnerability. - Steps to reproduce the issue. - Any potential impact or severity. @@ -47,4 +46,4 @@ Thank you for helping us keep this project secure! ## 📜 License -2025 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. +2026 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. diff --git a/VERSIONING.md b/VERSIONING.md index c0e88b2..0e752f9 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -61,7 +61,6 @@ Examples: ## 🚀 Release Process 1. Development Phase: - - Developers work on features and bug fixes in the `dev` branch. - Commit messages should follow the guidelines above to indicate the type of changes. @@ -74,7 +73,6 @@ Examples: Final testing and validation occur here before deployment. 4. Release: - - Changes from `prod` are merged into `main`. - A release is tagged, and the `CHANGELOG.md` is updated automatically based on commit messages. @@ -89,4 +87,4 @@ Examples: ## 📜 License -2025 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. +2026 - This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). You are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. For more details, please refer to the [LICENSE](LICENSE) file included in this repository. diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 9929d64..c4b7a9c 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "backend" -version = "1.0.13" +version = "1.0.14" description = "Github CICD Template Repository." authors = ["B "] license = "Other" @@ -9,20 +9,20 @@ package-mode = false [tool.poetry.dependencies] python = "^3.12" -setuptools = "^78.1.0" +setuptools = "^82.0.0" idna = "^3.0" -certifi = "^2025.1.31" +certifi = "^2026.1.4" [tool.poetry.dev-dependencies] -pylint = "^3.3.1" +pylint = "^4.0.4" yamllint = "^1.35.0" -black = "^25.1.0" -isort = "^6.0.1" +black = "^26.1.0" +isort = "^8.0.1" pre-commit = "^4.0.1" alembic = { version = ">=1.11.1", optional = true } pytest = { version = ">=7.3.1", optional = true } httpx = { version = ">=0.24.0", optional = true } -pytest-cov = { version = "^6.1.1", optional = true } +pytest-cov = { version = "^7.0.0", optional = true } coverage = "^7.2.5" [tool.poetry.extras] @@ -66,5 +66,5 @@ ensure_newline_before_comments = true rcfile = ".pylintrc" [build-system] -requires = ["poetry-core>=1.0.13"] +requires = ["poetry-core>=1.0.14"] build-backend = "poetry.core.masonry.api" diff --git a/frontend/package.json b/frontend/package.json index abf581b..0892340 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "1.0.13", + "version": "1.0.14", "description": "frontend github cicd sample", "private": "true", "dependencies": { diff --git a/pyproject.toml b/pyproject.toml index b81ba2f..1360ff8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "github-cicd-template" -version = "1.0.13" +version = "1.0.14" description = "Github CICD Template Repository" authors = ["B "] license = "Apache 2.0" @@ -9,7 +9,7 @@ package-mode = false [tool.poetry.dependencies] python = "^3.12" -setuptools = "^78.1.0" +setuptools = "^80.9.0" idna = "^3.0" certifi = "^2025.1.31" bump2version = "^1.0.0" diff --git a/scripts b/scripts index e0500e1..2b8ccf5 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit e0500e1721799b1019534628a3135195b3139098 +Subproject commit 2b8ccf5a6703859b3c82a8634a323ca21b0e5e52