Add UX Forum post-session automation

Summary

Automates the two manual host tasks after each UX Forum session:

  1. Creates a tracking issue in gitlab-org/gitlab-design for the next scheduled session, pre-filled with host and speaker @-handles from the schedule
  2. Opens an MR in gitlab-com/content-sites/handbook to remove the completed session row from the schedule

How it works

A daily scheduled pipeline runs automations/ux-forum/ux_forum.py, which:

  1. Fetches the schedule markdown table from the handbook repo via API
  2. Compares today's date against the schedule rows
  3. If a session occurred today (or within the past 3 days), it acts; otherwise exits as a no-op
  4. Checks for idempotency (existing issue/branch) before creating anything

Files

File Purpose
automations/ux-forum/ux_forum.py Main script (~300 lines)
automations/ux-forum/config.yaml Project paths, tolerance, display name → @handle roster
automations/ux-forum/README.md Setup, usage, configuration docs
.gitlab/ci/ux-forum.yml CI jobs: scheduled run, manual run, dry-run
.gitlab-ci.yml Top-level CI config with include

Design decisions

  • Schedule file as source of truth for timing — the pipeline runs daily and reads the schedule to decide whether to act, rather than hardcoding a biweekly cron that drifts
  • Roster mapping — GitLab handles aren't derivable from display names; cross-referenced against verified org mapping
  • CI variable gating via $AUTOMATION — future automations in the same repo get their own triggers without interference
  • --dry-run and --force-date flags for safe testing

To deploy after merge

  1. Add masked CI/CD variable GITLAB_TOKEN with api scope (Settings > CI/CD > Variables)
  2. Create pipeline schedule: 0 16 * * *, branch main
  3. Test with a manual dry-run first (DRY_RUN = true)

Closes #23 (closed)

Edited by Taurie Davis

Merge request reports

Loading