Reusable GitHub Email Alert package for CI/CD workflows
Project description
GitHub Email Alert
Reusable Python package to send email alerts from GitHub Actions.
Features
- Send alerts for:
- Branch Created
- Branch Deleted
- New Pull Request
- PR Merge
- Merge Conflicts
- SMTP configurable
- CLI support
- Works with GitHub Actions
- CC support
- Environment variable driven
Note: Branch create/delete events do not include a title field in the email body.
Installation
pip install github-email-alert
Usage
Basic Command
github-email-alert <branch_ref> <event_type>
Version Information
To check the installed version:
github-email-alert --version
Event Types
The following event types are supported:
branch_create- Branch created eventbranch_delete- Branch deleted eventnew_pr- New pull request createdmerge_pr- Pull request mergedconflict- Merge conflict detected
Examples
Branch Created
github-email-alert feature/new-feature branch_create
Branch Deleted
github-email-alert feature/old-feature branch_delete
New Pull Request
github-email-alert feature/login new_pr
Pull Request Merged
github-email-alert feature/login merge_pr
Merge Conflict Detected
github-email-alert feature/login conflict
GitHub Actions Workflow Examples
Branch Created/Deleted Workflow
name: Branch Notification
on:
create:
delete:
jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Send branch created notification
if: github.event_name == 'create' && github.event.ref_type == 'branch'
env:
EMAIL_USER: ${{ secrets.EMAIL_USER }}
EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
EMAIL_TO: ${{ secrets.EMAIL_TO }}
GITHUB_ACTOR: ${{ github.actor }}
BASE_REF: ${{ github.event.repository.default_branch }}
REPO_NAME: ${{ github.repository }}
run: |
pip install github-email-alert
github-email-alert "${{ github.event.ref }}" branch_create
- name: Send branch deleted notification
if: github.event_name == 'delete' && github.event.ref_type == 'branch'
env:
EMAIL_USER: ${{ secrets.EMAIL_USER }}
EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
EMAIL_TO: ${{ secrets.EMAIL_TO }}
GITHUB_ACTOR: ${{ github.actor }}
BASE_REF: ${{ github.event.repository.default_branch }}
REPO_NAME: ${{ github.repository }}
run: |
pip install github-email-alert
github-email-alert "${{ github.event.ref }}" branch_delete
Pull Request Workflow
name: PR Notification
on:
pull_request:
types: [opened, closed]
jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Send new PR notification
if: github.event.action == 'opened'
env:
EMAIL_USER: ${{ secrets.EMAIL_USER }}
EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
EMAIL_TO: ${{ secrets.EMAIL_TO }}
EMAIL_CC: ${{ secrets.EMAIL_CC }}
GITHUB_ACTOR: ${{ github.actor }}
PR_TITLE: ${{ github.event.pull_request.title }}
BASE_REF: ${{ github.event.pull_request.base.ref }}
REPO_NAME: ${{ github.repository }}
run: |
pip install github-email-alert
github-email-alert "${{ github.event.pull_request.head.ref }}" new_pr
- name: Send PR merged notification
if: github.event.action == 'closed' && github.event.pull_request.merged == true
env:
EMAIL_USER: ${{ secrets.EMAIL_USER }}
EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
EMAIL_TO: ${{ secrets.EMAIL_TO }}
EMAIL_CC: ${{ secrets.EMAIL_CC }}
GITHUB_ACTOR: ${{ github.actor }}
PR_TITLE: ${{ github.event.pull_request.title }}
BASE_REF: ${{ github.event.pull_request.base.ref }}
REPO_NAME: ${{ github.repository }}
run: |
pip install github-email-alert
github-email-alert "${{ github.event.pull_request.head.ref }}" merge_pr
Merge Conflict Detection Workflow
name: Conflict Detection
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
check-conflict:
runs-on: ubuntu-latest
steps:
- name: Report conflict
if: github.event.pull_request.mergeable_state == 'dirty'
env:
EMAIL_USER: ${{ secrets.EMAIL_USER }}
EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
EMAIL_TO: ${{ secrets.EMAIL_TO }}
GITHUB_ACTOR: ${{ github.actor }}
REPO_NAME: ${{ github.repository }}
PR_TITLE: ${{ github.event.pull_request.title }}
BRANCH_REF: ${{ github.event.pull_request.head.ref }}
BASE_REF: ${{ github.event.pull_request.base.ref }}
run: |
pip install github-email-alert
github-email-alert "${{ github.event.pull_request.head.ref }}" conflict
Configuration
Required Environment Variables
EMAIL_USER # SMTP email address (e.g., your-email@gmail.com)
EMAIL_PASS # SMTP password or app-specific password
EMAIL_TO # Comma-separated list of recipient emails
Optional Environment Variables
EMAIL_CC # Comma-separated list of CC emails
SMTP_HOST # SMTP server hostname (default: smtp.gmail.com)
SMTP_PORT # SMTP server port (default: 587)
GITHUB_ACTOR # GitHub username (default: "Unknown")
PR_TITLE # Pull request title (default: "N/A")
BASE_REF # Target/base branch name (default: "main")
REPO_NAME # Repository name (default: "Unknown")
Note
Branch create/delete events do not include a title field in the email body since they don't have an associated pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file github_email_alert-0.1.8.tar.gz.
File metadata
- Download URL: github_email_alert-0.1.8.tar.gz
- Upload date:
- Size: 44.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41476cbd95713dbaa359ab1509711f6ecf199a14f12bc9488b324a64dd194496
|
|
| MD5 |
a767789198f13be6dd7d7a6b5ad588d1
|
|
| BLAKE2b-256 |
d6182f2814fcc890ac69e02e2cf7161df30a9e0875c9f8d3d9024431da25627f
|
File details
Details for the file github_email_alert-0.1.8-py3-none-any.whl.
File metadata
- Download URL: github_email_alert-0.1.8-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d654a6b77d083c55074d2aee78dfd532786e41e970db94559d945575a8043fc7
|
|
| MD5 |
4816b3e82e6f627a4925c840d49f6070
|
|
| BLAKE2b-256 |
961cead69144f2b34ac77e27d85c76fae1b1eb0db7e0a5baf9d1d9ab119409f8
|