Reusable GitHub Action for auto-tagging, releasing artifacts, and updating dependencies in tenant bootstrap repositories.
This action automates tagging, GitHub release creation, and optional dependency updates for multi-tenant infrastructures.
It supports SemVer-based artifact versioning, RMK integration, Slack notifications, and GitHub-native workflows.
Key features:
- Auto-tag on merge of
release/v*
pull requests - Push annotated tags and create GitHub releases
- Attach
project.yaml
to the release (if exists) - Trigger
workflow_dispatch
in tenant bootstrap repos with updated versions - Optional Slack notifications with release context
- GitHub-native, lightweight, and composable
Use this action inside a tenant's artifact repository to:
- Automatically tag and release a new version
- Propagate updates to tenant environments via RMK
- Notify Slack channels on new releases
name: Tenant artifact release
on:
push:
branches:
- staging
- production
jobs:
release:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run Tenant Artifact CI Action
uses: edenlabllc/tenant.artifact.ci.action@v1
with:
github_token_repo_full_access: ${{ secrets.GH_TOKEN_REPO_FULL_ACCESS }}
autotag: true
push_tag: true
update_tenant_environments: |
kodjin=staging
kodjin=production
update_tenant_workflow_file: project-update.yaml
slack_notifications: true
slack_webhook: ${{ secrets.SLACK_WEBHOOK }}
slack_message_release_notes_path: docs/release-notes.md
slack_message_details: |
Triggered by: ${{ github.actor }}
See examples/
for more templates.
Name | Purpose |
---|---|
GH_TOKEN_REPO_FULL_ACCESS |
GitHub PAT with access to private repos |
SLACK_WEBHOOK |
(Optional) Slack Incoming Webhook URL |
See the action.yml
's inputs
section for more details.
This action does not export outputs. All versioning is handled via GitHub tags and releases.
Enable by setting:
with:
slack_notifications: true
slack_webhook: ${{ secrets.SLACK_WEBHOOK }}
slack_message_release_notes_path: docs/release-notes.md
slack_message_details: |
Triggered by: ${{ github.actor }}
action.yml
— defines action inputsmain.py
— executes logicexamples/
— ready-to-use templates