backstage / backstage/community-plugins

Help Wanted: GitHub Action to automate the plugin archive process

Open
#8,983 4 comments 0 reactions 0 assignees View on GitHub
do-not-stale help wanted
Dominant language
TypeScript
Stars
422
Forks
697
Avg merge
2d 6h
Merged PRs (30d)
286

Description

## Summary

We're looking for a community contribution to automate the [plugin archive process](https://github.com/backstage/community-plugins/blob/main/docs/plugin-maintainers-guide.md#how-to-archive) as a manually triggered GitHub Action. Right now, archiving a plugin requires a maintainer to run scripts locally and open a PR by hand. A `workflow_dispatch` action would make this faster, more consistent, and lower the barrier for maintainers to action unmaintained plugins.

This is part of a broader effort to formalise how we handle unmaintained plugins — see the [Unmaintained Plugin Process RFC](https://github.com/backstage/community-plugins/issues/8982) for context.

## What We're Looking For

A manually triggered GitHub Action (`workflow_dispatch`) that:

1. Accepts a workspace name as input
2. Follows the documented archive steps end-to-end
3. Opens a PR on a branch named `archived/`
4. Creates a GitHub issue to notify the plugin owner and community that the archive process has been triggered

## Action Inputs

| Input | Required | Description |
|---|---|---|
| `workspace` | ✅ | The name of the workspace to archive (e.g. `azure-sites`) |
| `reason` | ❌ | Custom deprecation reason. Defaults to `"No longer maintained"` |

---

## Steps the Action Should Perform

1. **Run the archive script**
```bash
node scripts/archive.js ""
```
This records Git tag references, updates `.github/archived-plugins.json`, `ARCHIVED_WORKSPACES.md`, `docs/README.md`, `.github/CODEOWNERS`, `.github/labeler.yml`, and the issue template workspace dropdowns.

2. **Dry-run the deprecation script** to verify the packages that would be deprecated on npm:
```bash
./scripts/ci/deprecate-archived-plugins.sh --dry-run
```

3. **Delete the workspace folder** from the repository.

4. **Open a PR** targeting `main` on a branch named `archived/`, including all changes from the steps above. The PR description should:
- Link to the unmaintained issue created in step 5
- Note that the npm deprecation will be triggered automatically once the PR is merged via the existing GitHub Action

5. **Create a GitHub issue** titled `[Unmaintained] `, tagged with the `unmaintained` label, notifying the plugin's code owners and the community that the archive PR has been opened and stating when it will be merged if no action is taken. See the [issue template](https://github.com/backstage/community-plugins/blob/main/docs/plugin-maintainers-guide.md#archiving-a-plugin) for the expected content.

## Notes

- The action should only be triggerable by members of `@backstage/community-plugins-maintainers`
- Step 2 (deprecation dry-run) output should be included in the PR description so reviewers can see what will be deprecated on npm at merge time
- The existing post-merge GitHub Action that handles npm deprecation does not need to change — this action only handles the PR creation side
- For reference, the manual process this is replacing is documented here: [How to Archive](https://github.com/backstage/community-plugins/blob/main/docs/plugin-maintainers-guide.md#how-to-archive)

If you're interested in picking this up, please leave a comment and we'll assign it to you. Questions about the archive process or the broader unmaintained plugin initiative are welcome here too.

Contributor guide

Open the contributing guide

Research direction

Start with scripts/archive.js, scripts/ci/deprecate-archived-plugins.sh, and the plugin-maintainers guide's archive steps; inspect existing GitHub Actions for workflow and PR/issue patterns. Implement the manually dispatched flow using the named workspace and reason inputs, then verify it updates the listed metadata, removes the workspace, opens the required branch and PR, and creates the notification issue with the dry-run output.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, nodejs, shell
Domain
ci-cd, devops, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.