{"id":19272270,"url":"https://github.com/backstage/actions","last_synced_at":"2026-02-20T17:02:55.640Z","repository":{"id":40943611,"uuid":"505861970","full_name":"backstage/actions","owner":"backstage","description":"Custom actions for automating Backstage workflows","archived":false,"fork":false,"pushed_at":"2026-02-05T20:30:48.000Z","size":56946,"stargazers_count":22,"open_issues_count":19,"forks_count":22,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-06T04:10:38.159Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/backstage.png","metadata":{"files":{"readme":"README.md","changelog":"changeset-feedback/action.yaml","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-21T13:46:07.000Z","updated_at":"2026-02-05T20:24:39.000Z","dependencies_parsed_at":"2024-04-22T08:47:58.702Z","dependency_job_id":"ddc173ff-aa30-429f-ac34-105543f0c5d1","html_url":"https://github.com/backstage/actions","commit_stats":null,"previous_names":[],"tags_count":79,"template":false,"template_full_name":null,"purl":"pkg:github/backstage/actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/backstage%2Factions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/backstage%2Factions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/backstage%2Factions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/backstage%2Factions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/backstage","download_url":"https://codeload.github.com/backstage/actions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/backstage%2Factions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29169384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T16:33:35.550Z","status":"ssl_error","status_checked_at":"2026-02-06T16:33:30.716Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T20:36:04.556Z","updated_at":"2026-02-06T17:06:49.401Z","avatar_url":"https://github.com/backstage.png","language":"TypeScript","funding_links":[],"categories":["Building"],"sub_categories":["Workflows"],"readme":"# Backstage Actions\n\nThis repository contains GitHub actions related to Backstage. The goal of the\ncurrent actions are to help manage the maintenance of the main Backstage\nrepository.\n\n## Usage\n\nEach action in this repo can be used by referring to the foldername, for example:\n\n```yaml\n- name: yarn install\n  uses: backstage/actions/yarn-install@v0.5.9\n  with:\n    cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}\n```\n\n## Releases\n\nReleases are generated manually via [GitHub](https://github.com/backstage/actions/releases/new). Create the version tag for the next release, click \"Generate release notes\", and then publish the release.\n\n## TODO\n\n- [x] Get this repo set up with two initial actions, one for PR sync, and one\n      for cron polling.\n- [ ] Migrate all existing custom workflow scripts from backstage/backstage into\n      these new actions.\n\n  - [x] Migrate `.github/workflows/automate_merge_renovate_prs.yaml`\n  - [ ] Migrate `.github/workflows/automate_review-labels-scheduled.yaml`\n  - [x] Migrate `.github/workflows/automate_review-labels.yaml`\n  - [x] Migrate `.github/workflows/sync_approve_renovate_pr.yaml`\n  - [x] Migrate `.github/workflows/sync_issue-labels.yml`\n  - [x] Migrate `.github/workflows/verify_dco.yaml`\n  - [ ] Maybe migrate `.github/workflows/sync_dependabot-changesets.yml`?\n  - [ ] Maybe migrate `.github/workflows/sync_renovate-changesets.yml`?\n\n- New features targeting the maintenance project board:\n\n  - [x] Remove items from the board instead of setting the status to \"Done\".\n  - [ ] Automate the move to the \"Changes Requested\" column.\n  - [ ] Custom logic for adding PRs to the board, skip PRs that do not have DCO,\n        but add them once they do.\n\n- Assigning PRs:\n\n  - Pros:\n    - Less context switching for reviewers\n    - Higher throughput\n    - PRs are assigned to people familiar with the code\n    - Goalie workload is reduced\n    - Goalie can join the mob\n  - Cons:\n    - Needs tooling / processes\n  - Risks:\n    - When do we review PRs then? Needs dedicated time?\n    - Assigning PRs based on familiarity can lead to silos\n    - Stale waiting on reviewer because of unknown reasons? Vacations or sickness?\n\n- PR WoW changes?\n\n  ```\n  assign -\u003e triage -\u003e needs review -\u003e merge/close\n              |             ^\n              v             |\n          external          v\n                     changes requested\n  ```\n\n  Assign: The PR is assigned to a random user\n\n  Triage:\n\n  - If the PR is touching only files that are owned by a particular group, then remove the assignment, and external state, or remove from the board?\n\n- TODO:\n\n  - Random Assign\n    -\u003e [x] Each PR that is opened should randomly be assigned to a mammal\n    -\u003e [x] Try to automate pulp PRs as external (if only containing docs or search label)\n    -\u003e [x] Exclude OOO members, make this action input and store the state in a secret\n    -\u003e [x] Do not assign author to their own PR\n    -\u003e [x] Add added timestamp\n    -\u003e [x] Add changed timestamp\n  - Triage\n    -\u003e [ ] add new triage result states as needed\n  - Needs review\n    -\u003e [x] use the built-in changes request automation\n  - Changes requested\n    -\u003e [x] build automation for moving PRs back to 'Re-Review' when needed, migrate awaiting review label workflow to this\n  - Merge/close\n    -\u003e [x] remove from board\n  - [x] Verify that it works with forks\n\n## Docs\n\n- [Creating a JavaScript action](https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action)\n- [actions/github-script](https://github.com/actions/github-script)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackstage%2Factions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbackstage%2Factions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackstage%2Factions/lists"}