Skip to content

novasamatech/github-actions

Repository files navigation

Reusable GitHub Automation

Collection of reusable GitHub workflows and composite actions for CI/CD pipelines.

Versioning

Version is managed via .version. On every push to main, two tags are automatically created/updated:

  • Full version tag (for example, v3.2.0) that points to a specific release
  • Major version tag (for example, v3) that tracks the latest release in that major line

Use pinned tags (@v3.2.0) for strict reproducibility, or major tags (@v3) for automatic non-breaking updates.

Reusable Workflows

PR Summary Report

Path:

  • .github/workflows/pr-summary-report.yml

What it does:

  • Collects merged PRs for a reporting window
  • Generates human-readable PR summary in job logs and GITHUB_STEP_SUMMARY
  • Produces CSV output and uploads it as report artifact

Window behavior:

  • schedule run ignores days
  • for schedule, workflow expects execution on the 1st day of month (UTC), otherwise it fails
  • schedule window is calculated as: full previous month in hours + hours elapsed since 00:00 UTC of current day
  • any other run type: days * 24 hours

Inputs:

  • days (optional, default 30): lookback in days for non-scheduled runs

Complete caller workflow example (in another repository):

name: PR Summary Report

on:
  workflow_dispatch:
    inputs:
      days:
        description: Number of days to look back for merged PRs
        required: false
        default: 30
        type: number
  schedule:
    - cron: "0 7 1 * *"

jobs:
  pr-summary:
    uses: novasamatech/github-actions/.github/workflows/pr-summary-report.yml@v3
    with:
      days: ${{ fromJSON(github.event.inputs.days || '30') }}
    secrets: inherit

Composite Actions

Action Path Description
Collect Merged PRs collect-prs Collects merged PRs either from commit diff (src_ref/dst_ref) or by time window on a branch, with multiple release notes formats.
Upload to S3 s3-upload Uploads file or directory to S3-compatible storage (via s3cmd) and returns uploaded path.
Send Notification send-notification Sends arbitrary messages to Telegram and/or Matrix via an external notification bot service.
Send Release Notification send-release-notification Sends release changelog notifications to Telegram and Matrix via an external notification bot service.
Trigger Allure TestOps Job trigger-allure-testops Authenticates in Allure TestOps and starts a job run with branch and launch parameters.

Python development setup

All Python-based actions (send-notification, send-release-notification) share a single pinned dependency set declared at the repository root in requirements.txt. It contains everything needed to run the tests of every Python action.

Create a virtual environment and install the shared dependencies:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Run tests for a specific action:

cd send-notification              # or send-release-notification
pytest test_*.py -v

To upgrade dependencies, install the latest versions into the venv and refresh the lock file:

source .venv/bin/activate
pip install --upgrade pytest Jinja2
pip freeze > requirements.txt

CI (*-prs.yml workflows) installs dependencies with pip install -r requirements.txt, so the same versions run locally and in CI.

Repository Structure

.github/workflows/
  <action-name>-prs.yml      # PR checks workflow per action (tests + post results to PR)
  check-version-bump.yml      # Validates .version bump on every PR
  update-tag.yml              # Creates/updates version tags on push to main
  pr-summary-report.yml       # Reusable workflow (workflow_call) for PR reports

Naming conventions:

  • Each composite action lives in its own top-level directory (e.g., collect-prs/, send-release-notification/)
  • PR checks workflow for an action must be named <action-directory-name>-prs.yml
  • The name: field inside the workflow must follow the pattern <action-directory-name> PR checks

License

This project is licensed under the Apache License 2.0.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors