Уведомления об изменении файла Github

Есть ли способ уведомить людей об изменениях в определенных файлах после того, как они будут объединены в репозиторий на GitHub? В частности, у нас есть частный репозиторий с несколькими людьми.

Мы хотели бы найти способ отправлять электронные письма для файлов, которые могут быть интересны людям, наряду с изменениями в этих файлах.

Почти каждое решение, которое я нашел в Интернете, похоже, связано с общедоступными репозиториями. Например, GitHub File Watcher, RSS-каналы и некоторые другие параметры, указанные здесь. Наиболее многообещающим кажется Commit Hawk, но он предназначен для слабой интеграции. Перехватчики после получения, по-видимому, не работают с репозиториями, размещенными на GitHub, и CODEOWNERS, похоже, требуют проверки кода от тех, кто получает уведомление, поскольку он назначает их владельцами рассматриваемых файлов.


person Sternutation    schedule 26.07.2021    source источник
comment
Действия GitHub могут вам помочь.   -  person dan1st    schedule 26.07.2021
comment
Есть ли действие GitHub, которое может позволить мне сделать что-то подобное? Я знаю, что Commit Hawk использует действия GitHub, но в настоящее время я совершенно не знаком с тем, как они работают.   -  person Sternutation    schedule 26.07.2021
comment
GitHub Actions позволяет вам выполнять shell codebon при каждом коммите. Вы можете использовать это для проверки файлов и, например. отправка электронных писем, запуск веб-перехватчиков или других уведомлений.   -  person dan1st    schedule 26.07.2021
comment
Итак, теоретически, с помощью действий я должен сделать так, чтобы определенное количество пользователей получало электронные письма об изменениях в определенных файлах? Например, я создаю список рассылки и список файлов, о которых нужно уведомить этих пользователей. Используя действия, я должен настроить его так, чтобы они получали по электронной почте?   -  person Sternutation    schedule 26.07.2021
comment
Да, это может потребовать некоторой работы, но это должно быть возможно, и такие действия, как это, могут помочь ты. Однако может потребоваться создать собственное действие.   -  person dan1st    schedule 28.07.2021


Ответы (1)


Для этого можно использовать GitHub Actions.

Это позволяет запускать код при каждом нажатии. Затем этот код может проверять измененные файлы и отправлять электронные письма (или другие уведомления) пользователям, которые должны быть уведомлены.

Как ты мог это сделать

SHA фиксации старой версии (до отправки) можно получить с помощью ${{ github.event.before }}, а SHA фиксации новой версии (после отправки) можно получить с помощью The commit SHA of the old version (before the push) can be obtained using${{ github.event.after }}`.

Затем эти хэши коммитов можно сравнить с командой git diff --name-only ${{ github.event.before }} ${{ github.event.after }}.

Затем эти изменения могут быть обработаны, и людям, которых вы хотите уведомить, будет отправлено электронное письмо.


Мои действия

Я создал действие, которое делает именно это.

Вы в основном создаете рабочий процесс следующим образом:

name: 'Notify users on file change'
on:
  push:
    branches: [ master ]
jobs:
  notif:
    runs-on: ubuntu-latest
    steps:
      - uses: danthe1st/email-filechange-notif-action@master
        with: 
          # Address to send E-Mails from
          senderEmail: ${{ secrets.SENDER_EMAIL }}
          # optional, The subject of the E-Mails to send
          subjectLine: 'GitHub file change notification'
          # A file in the repository or HTTP address that contains file patterns with E-Mail addresses that should be notified on file changes
          mailingList: ${{ secrets.MAILING_LIST }}
          # The SMTP server used to send E-Mails
          smtpServer: ${{ secrets.SMTP_SERVER }}
          # optional, The SMTP port used to send E-Mails
          smtpPort: 587
          # The SMTP user name used to send E-Mails
          smtpUsername: ${{ secrets.SMTP_USER }}
          # The SMTP password used to send E-Mails
          smtpPassword: ${{ secrets.SMTP_PASSWORD }}

Помимо создания файла рабочего процесса, вам необходимо настроить секреты с информацией о вашем сервере электронной почты и позволить mailingList указывать на текстовый файл, отформатированный следующим образом:

/path/** [email protected]
/path/to/fixed/file [email protected]
*.md [email protected]
person dan1st    schedule 01.08.2021