You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add composite actions, automated releases, and Conventional Commits workflow
- Add action.yml for all 16 automation scripts (enables uses: in GitHub
Actions workflows and Dependabot version tracking)
- Add Release Please workflow for automated releases on push to main
- Add release-please-config.json, .release-please-manifest.json, and
VERSION bootstrap files
- Remove update-readme-sha.yml (superseded by release tags)
- fix: make REPORT_DIR overridable via env var in github-archive-old-repos
- docs: restructure GitHub Actions section in README to lead with
composite action syntax; add Available Actions table
- docs: update Contributing guide with action.yml step and Conventional
Commits requirement
- docs: mandate Conventional Commits in AGENTS.md and copilot-instructions.md;
CHANGELOG.md is now fully managed by Release Please
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3. Source `lib/github-common.sh` for validation and output helpers
220
220
4. Start with the standard boilerplate (see Script Anatomy above)
221
-
5. Document in README.md following existing format:
221
+
5. Create `action.yml` in the same directory — expose every env var as a named input (required inputs without defaults, optional inputs with sensible defaults); map CLI flags such as `--dry-run` and `--type` to boolean/string inputs and build an `ARGS` array in the `run:` step. Mirror the pattern of any existing `action.yml`.
222
+
6. Document in README.md following existing format:
222
223
- Use case description
223
224
- Required variables table
224
225
- Usage example with exports
225
226
- Output format (if applicable)
227
+
- Add a row to the Available Actions table in the "Using Scripts in GitHub Actions" section
All commits **must** follow [Conventional Commits](https://www.conventionalcommits.org/). Release Please reads commit messages to auto-generate `CHANGELOG.md` and determine the version bump. Never update `CHANGELOG.md` manually.
235
+
236
+
| Prefix | Effect | Example |
237
+
|--------|--------|---------|
238
+
|`feat:`| minor bump |`feat: add REPO_NAME_FILTER to github-add-repo-permissions`|
239
+
|`fix:`| patch bump |`fix: make REPORT_DIR overridable in github-archive-old-repos`|
240
+
|`feat!:` / `BREAKING CHANGE:`| major bump |`feat!: rename ENTERPRISE_SLUG to ENTERPRISE`|
|`chore:`| no bump (hidden) |`chore: update actions/checkout to v7`|
243
+
|`ci:`| no bump (hidden) |`ci: pin release-please-action SHA`|
244
+
|`refactor:`| no bump (hidden) |`refactor: extract pagination helper`|
245
+
229
246
### Variable Naming Conventions
230
247
-`GITHUB_TOKEN` — main admin token
231
248
### Dependencies
@@ -243,22 +260,23 @@ Keep new scripts dependency-minimal; document any non-standard dependencies expl
243
260
7.**URL encoding:** Labels in API calls must be URL-encoded (`Linked [AC]` → `Linked%20[AC]`)
244
261
8.**Public repo filtering:** Do not rely on `?type=public` for enterprise-managed orgs — fetch all and filter in jq
245
262
9.**macOS vs Linux date:**`github-archive-old-repos.sh` handles both BSD `date -v` (macOS) and GNU `date -d` (Linux)
263
+
10.**Never edit CHANGELOG.md manually** — it is fully managed by Release Please via Conventional Commits
246
264
247
265
## Maintenance Matrix
248
266
249
267
When you change one of these files, you must also update the files in the "Also update" column.
250
268
251
269
| When you change… | Also update |
252
270
|------------------|-------------|
253
-
|`lib/github-common.sh` — any public function signature or behaviour | All 19 scripts that source it; verify each caller still passes the right arguments. Check with: `grep -r "source.*github-common" . --include="*.sh"`|
271
+
|`lib/github-common.sh` — any public function signature or behaviour | All 18 scripts that source it; verify each caller still passes the right arguments. Check with: `grep -r "github-common" . --include="*.sh"`|
254
272
|`lib/github-common.sh` — add a new helper function |`AGENTS.md` shared library table; `README.md` if the function affects usage |
255
-
| Any script's required env vars | That script's `# ===` header comment; the corresponding README.md section's env var table |
256
-
| Any script's optional env vars or defaults | Same as above |
257
-
| Any script's `--dry-run` or CLI flag behaviour | README.md usage example for that script |
273
+
| Any script's required env vars | That script's `# ===` header comment; the corresponding README.md section's env var table; that script's `action.yml` inputs (add/remove required inputs to match)|
274
+
| Any script's optional env vars or defaults | Same as above; update the `action.yml` optional inputs and their defaults|
275
+
| Any script's `--dry-run` or CLI flag behaviour | README.md usage example for that script; that script's `action.yml` inputs and `run:` step flag construction|
258
276
|`README.md` — script documentation | Verify the script's `# ===` header comment still matches (env vars, options, requirements) |
259
277
|`.githooks/pre-commit`|`install-hooks.sh` if hook path or installation instructions change; README.md Best Practices section |
3.**Copy the header template** from Script Anatomy above — fill in description, all env vars, requirements
178
179
4.**Source the shared library** using `SCRIPT_DIR`
179
180
5.**Validate all inputs** before any API calls
180
-
6.**Add to README.md** — follow the existing format: use case, env var table, usage example, output format
181
-
7. Place in the correct domain:
181
+
6.**Create `action.yml`** in the same directory — expose every env var as an input (required inputs first, optional inputs with defaults); map CLI flags (`--dry-run`, `--type`, etc.) to boolean/string inputs and construct the `ARGS` array in the `run:` step. See existing `action.yml` files for the pattern.
182
+
7.**Add to README.md** — follow the existing format: use case, env var table, usage example, output format; add a row to the Available Actions table in the "Using Scripts in GitHub Actions" section
-**CI:** shellcheck runs on all `.sh` files on every PR (`.github/workflows/ci.yml`)
197
+
-**Releases:** automated by Release Please (`.github/workflows/release.yml`) — pushes to `main` trigger a release PR; merging it publishes the GitHub Release and tag
All commits **must** follow [Conventional Commits](https://www.conventionalcommits.org/). `CHANGELOG.md` is fully managed by Release Please and **must never be edited manually**.
202
+
203
+
| Prefix | Version bump | Visible in changelog |
204
+
|--------|-------------|----------------------|
205
+
|`feat:`| minor | ✅ Features |
206
+
|`fix:`| patch | ✅ Bug Fixes |
207
+
|`docs:`| patch | ✅ Documentation |
208
+
|`perf:`| patch | ✅ Performance Improvements |
209
+
|`revert:`| patch | ✅ Reverts |
210
+
|`feat!:` / `BREAKING CHANGE:`| major | ✅ |
211
+
|`chore:`| none | hidden |
212
+
|`ci:`| none | hidden |
213
+
|`refactor:`| none | hidden |
214
+
|`test:`| none | hidden |
195
215
196
216
---
197
217
@@ -205,3 +225,4 @@ done
205
225
-**Public repo filtering:** Do not rely on `?type=public` for enterprise-managed orgs — fetch all and filter in `jq`
206
226
-**macOS vs Linux date:**`github-archive-old-repos.sh` handles both BSD `date -v` and GNU `date -d`
207
227
-**`set -euo pipefail`:** Must be the first executable line after the header — never omit it
228
+
-**Never edit `CHANGELOG.md` manually** — it is fully managed by Release Please via Conventional Commits
Copy file name to clipboardExpand all lines: CHANGELOG.md
+18-27Lines changed: 18 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,44 +2,35 @@
2
2
3
3
All notable changes to this project will be documented in this file.
4
4
5
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
+
This changelog is automatically maintained by [Release Please](https://github.com/googleapis/release-please) using [Conventional Commits](https://www.conventionalcommits.org/). Do not edit the versioned sections manually.
6
6
7
-
## [Unreleased]
8
-
9
-
### Added
10
-
-`github-install-enterprise-app` — programmatically installs an enterprise-owned automation GitHub App into an org using an installer GitHub App (JWT → installation token flow); supports `--dry-run` and optional org-scoped token verification. Adds `openssl` as a dependency
11
-
-`github-copilot-report`: NDJSON usage-metrics endpoints, Entra ID enrichment via `az rest`, auto-detection of credits per seat with promo/standard table, `--no-entra` flag
-`.github/workflows/update-readme-sha.yml` — automatically updates the pinned commit SHA in README.md on every push to `main`
14
-
15
-
### Changed
16
-
- README: updated all `actions/checkout` references from `v4` to `v7.0.0` (pinned SHA `9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0`)
17
-
- README: replaced `ref: main` in the GitHub Actions usage example with a pinned commit SHA, and updated the accompanying note to recommend SHA pinning
7
+
<!-- Release Please inserts new entries above this line -->
18
8
19
9
---
20
10
21
-
## [2026-06-21]
11
+
## Pre-release history
22
12
23
-
### Added
24
-
-`github-copilot-report`: NDJSON usage-metrics endpoints, Entra ID enrichment via `az rest`, auto-detection of credits per seat with promo/standard table, `--no-entra` flag
- Validated all required environment variables across all scripts before any API calls
29
-
- Improved error handling with descriptive exit messages throughout
15
+
- feat: composite `action.yml` for all 16 automation scripts — each script is now usable as a `uses:` step in GitHub Actions workflows, enabling Dependabot to track and bump version pins automatically
16
+
- feat: Release Please workflow for automated releases on push to `main`
17
+
- feat: `github-install-enterprise-app` — programmatically installs an enterprise-owned GitHub App using a second installer app (JWT flow); supports `--dry-run`
18
+
- feat: `github-copilot-report` — Copilot usage report with Entra ID enrichment, AI credit accounting, and new usage-metrics endpoints
19
+
- fix: `github-archive-old-repos` — `REPORT_DIR` is now overridable via environment variable
20
+
- chore: remove `update-readme-sha.yml` workflow (superseded by release tags)
21
+
- docs: GitHub Actions section in README restructured to lead with composite action `uses:` syntax
30
22
31
-
---
23
+
### 2026-06-21
32
24
33
-
## [2026-06-20]
25
+
- feat: `github-copilot-report` — NDJSON usage-metrics endpoints, Entra ID enrichment via `az rest`, credits per seat auto-detection
0 commit comments