name: Stable Release on: release: types: - prereleased jobs: create_release: runs-on: ubuntu-latest if: github.actor != 'pypebot' steps: - name: 🚛 Checkout Code uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install Python requirements run: pip install gitpython semver - name: 💉 Inject new version into files id: version run: | echo ::set-output name=current_version::${GITHUB_REF#refs/*/} RESULT=$(python ./tools/ci_tools.py --finalize ${GITHUB_REF#refs/*/}) LASTRELEASE=$(python ./tools/ci_tools.py --lastversion release) echo ::set-output name=last_release::$LASTRELEASE echo ::set-output name=release_tag::$RESULT - name: "✏️ Generate full changelog" if: steps.version.outputs.release_tag != 'skip' id: generate-full-changelog uses: heinrichreimer/github-changelog-generator-action@v2.2 with: token: ${{ secrets.ADMIN_TOKEN }} breakingLabel: '**💥 Breaking**' enhancementLabel: '**🚀 Enhancements**' bugsLabel: '**🐛 Bug fixes**' deprecatedLabel: '**⚠️ Deprecations**' addSections: '{"documentation":{"prefix":"### 📖 Documentation","labels":["documentation"]},"tests":{"prefix":"### ✅ Testing","labels":["tests"]}}' issues: false issuesWoLabels: false sinceTag: "3.0.0" maxIssues: 100 pullRequests: true prWoLabels: false author: false unreleased: true compareLink: true stripGeneratorNotice: true verbose: true futureRelease: ${{ steps.version.outputs.release_tag }} excludeTagsRegex: "CI/.+" releaseBranch: "main" - name: 💾 Commit and Tag id: git_commit if: steps.version.outputs.release_tag != 'skip' run: | git config user.email ${{ secrets.CI_EMAIL }} git config user.name ${{ secrets.CI_USER }} git add . git commit -m "[Automated] Release" tag_name="${{ steps.version.outputs.release_tag }}" git tag -a $tag_name -m "stable release" - name: 🔏 Push to protected main branch if: steps.version.outputs.release_tag != 'skip' uses: CasperWA/push-protected@v2 with: token: ${{ secrets.ADMIN_TOKEN }} branch: main tags: true unprotect_reviews: true - name: "✏️ Generate last changelog" if: steps.version.outputs.release_tag != 'skip' id: generate-last-changelog uses: heinrichreimer/github-changelog-generator-action@v2.2 with: token: ${{ secrets.ADMIN_TOKEN }} breakingLabel: '**💥 Breaking**' enhancementLabel: '**🚀 Enhancements**' bugsLabel: '**🐛 Bug fixes**' deprecatedLabel: '**⚠️ Deprecations**' addSections: '{"documentation":{"prefix":"### 📖 Documentation","labels":["documentation"]},"tests":{"prefix":"### ✅ Testing","labels":["tests"]}}' issues: false issuesWoLabels: false sinceTag: ${{ steps.version.outputs.last_release }} maxIssues: 100 pullRequests: true prWoLabels: false author: false unreleased: true compareLink: true stripGeneratorNotice: true verbose: true futureRelease: ${{ steps.version.outputs.release_tag }} excludeTagsRegex: "CI/.+" releaseBranch: "main" stripHeaders: true base: 'none' - name: 🚀 Github Release if: steps.version.outputs.release_tag != 'skip' uses: ncipollo/release-action@v1 with: body: ${{ steps.generate-last-changelog.outputs.changelog }} tag: ${{ steps.version.outputs.release_tag }} token: ${{ secrets.ADMIN_TOKEN }} - name: ☠ Delete Pre-release if: steps.version.outputs.release_tag != 'skip' uses: cb80/delrel@latest with: tag: "${{ steps.version.outputs.current_version }}" - name: 🔁 Merge main back to develop if: steps.version.outputs.release_tag != 'skip' uses: everlytic/branch-merge@1.1.0 with: github_token: ${{ secrets.ADMIN_TOKEN }} source_ref: 'main' target_branch: 'develop' commit_message_template: '[Automated] Merged release {source_ref} into {target_branch}'