♻️ refactor: update codebase #2 #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This snippet is a GitHub Actions workflow configuration file that defines a CI/CD pipeline for a project. | |
| # It includes steps for building, notifying, and deploying the project, with specific actions for sending notifications via Telegram and creating GitHub releases. | |
| name: GH Workflow News | |
| on: | |
| push: | |
| branches: ["master"] | |
| tags: | |
| - "v*" | |
| pull_request: | |
| branches: ["master"] | |
| jobs: | |
| # This job is responsible for building the project. | |
| # It checks out the repository and prepares it for further actions. | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v3 | |
| # This job sends a notification via Telegram when a push or pull request is made. | |
| # It checks if the necessary secrets are available and sends a formatted message. | |
| # If the secrets are not set, it skips the notification step. | |
| notify: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Check Secrets | |
| id: check | |
| run: | | |
| if [[ -z "${{ secrets.TELEGRAM_CHAT_ID }}" || -z "${{ secrets.TELEGRAM_BOT_TOKEN }}" ]]; then | |
| echo "::set-output name=skip::true" | |
| else | |
| echo "::set-output name=skip::false" | |
| fi | |
| - name: Send Telegram Notification | |
| if: steps.check.outputs.skip == 'false' | |
| uses: appleboy/telegram-action@master | |
| with: | |
| to: ${{ secrets.TELEGRAM_CHAT_ID }} | |
| token: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
| format: markdown | |
| message: | | |
| 🚀 *AI Workflow Administrator (AWA)* | |
| - *username*: `${{ github.actor }}` | |
| - *message*: `${{ github.event.commits[0].message }}` | |
| - *hash*: `${{ github.sha }}` | |
| - *repository*: `${{ github.repository }}` | |
| - *head*: `${{ github.event.head_commit.message }}` | |
| 🍀 *See changes*: `https://github.com/${{ github.repository }}/commit/${{github.sha}}` | |
| # This job is responsible for deploying the project when a tag is pushed. | |
| # It checks if the tag exists, generates a changelog, creates a GitHub release, and sends a notification via Telegram. | |
| deploy: | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| needs: build | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check if tag exists | |
| id: check_tag | |
| run: | | |
| if [ -n "$GITHUB_REF" ]; then | |
| TAG=${GITHUB_REF#refs/tags/} | |
| # echo "::set-output name=tag::$TAG" | |
| echo "TAG=${TAG}" >> $GITHUB_ENV | |
| else | |
| # echo "::set-output name=tag::" | |
| echo "TAG=" >> $GITHUB_ENV | |
| fi | |
| shell: bash | |
| - name: Check Secrets | |
| id: check | |
| run: | | |
| if [[ -z "${{ secrets.TELEGRAM_CHAT_ID }}" || -z "${{ secrets.TELEGRAM_BOT_TOKEN }}" ]]; then | |
| echo "::set-output name=skip::true" | |
| else | |
| echo "::set-output name=skip::false" | |
| fi | |
| - name: Generate Changelog | |
| id: changelog | |
| run: | | |
| # Generate your changelog here and set it as an output variable | |
| CHANGELOG=$(git log --pretty=format:"%h - %s" -n 10) | |
| echo "::set-output name=changelog::$CHANGELOG" | |
| - name: Create GitHub Release | |
| id: create_release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: ${{ env.TAG }} | |
| body: | | |
| :gem: released new version ${{ env.TAG }} | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Send Telegram Notification | |
| if: steps.check.outputs.skip == 'false' | |
| uses: appleboy/telegram-action@master | |
| with: | |
| to: ${{ secrets.TELEGRAM_CHAT_ID }} | |
| token: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
| format: markdown | |
| message: | | |
| 🚀 *AI Workflow Administrator (AWA)* | |
| - *latest tag*: *${{ env.TAG }}* | |
| - *username*: `${{ github.actor }}` | |
| - *hash*: `${{ github.sha }}` | |
| - *repository*: `${{ github.repository }}` | |
| - *head*: `${{ github.event.head_commit.message }}` | |
| 🍀 *See changes*: `https://github.com/${{ github.repository }}/releases/tag/${{ env.TAG }}` | |
| 📜 *Changelog*: | |
| `${{ steps.changelog.outputs.changelog }}` |