УвСдомлСния

ПослС выполнСния CI/CD Π·Π°Π΄Π°Ρ‡ часто трСбуСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сборки β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ Ρ‡Π°Ρ‚ (Slack, Telegram) ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов Π² workflow.

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний Π² Slack ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ GitHub Actions, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π² GitVerse. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Incoming Webhook URL Π² Slack (Ρ‡Π΅Ρ€Π΅Π· настройки прилоТСния Slack) ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот URL Π² сСкрСтах рСпозитория (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ SLACK_WEBHOOK).

НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ workflow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отправляСт Π² Slack ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ сборки:

name: Build and Notify
on:
  push:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run tests
        run: npm test
  notify:
    runs-on: ubuntu-latest
    needs: build
    if: always()
    steps:
      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          SLACK_CHANNEL: ci-alerts
          SLACK_COLOR: ${{ job.status }}
          SLACK_MESSAGE: "Build job ${{ needs.build.result }}"
          SLACK_TITLE: "CI/CD Notification"

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ: build (запускаСт тСсты) ΠΈ notify (отправляСт ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅). Вторая Π·Π°Π΄Π°Ρ‡Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ needs: build ΠΈ условиС if: always(), поэтому ΠΎΠ½Π° выполнится Π² любом случаС послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ job build β€” Π΄Π°ΠΆΠ΅ Ссли тСсты ΡƒΠΏΠ°Π»ΠΈ.

Π¨Π°Π³ Slack Notification ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ дСйствиС ΠΈΠ· Marketplace (rtCamp Slack notify) ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:

  • SLACK_WEBHOOK – URL Π²Π΅Π±Ρ…ΡƒΠΊΠ° Slack (бСрСтся ΠΈΠ· сСкрСтов рСпозитория);
  • SLACK_CHANNEL – ΠΊΠ°Π½Π°Π» Slack для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния;
  • SLACK_COLOR – Ρ†Π²Π΅Ρ‚ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сообщСния (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ статус job β€” Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ успСхС, красный ΠΏΡ€ΠΈ ошибкС);
  • SLACK_MESSAGE – тСкст сообщСния (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ указываСтся статус Π·Π°Π΄Π°Ρ‡ΠΈ сборки);
  • SLACK_TITLE – Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ сообщСния Π² Slack.

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ увСдомлСния Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСрвисы: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния Π² Telegram с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΡ‚Π° (Ρ‡Π΅Ρ€Π΅Π· HTTP API) ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ email-увСдомлСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запуска workflow Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Slack-ΠΊΠ°Π½Π°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ (ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ с ошибкой). Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎ состоянии сборок.

Π’Ρ‹ нашли Ρ‡Ρ‚ΠΎ искали?