diff --git a/.github/sync.yml b/.github/sync.yml index 456d4cd..c8db840 100644 --- a/.github/sync.yml +++ b/.github/sync.yml @@ -1,24 +1,37 @@ group: - repos: | - neurobagel/annotation_tool - neurobagel/api - neurobagel/bagel-cli - neurobagel/bagelschema - neurobagel/bulk_annotations - neurobagel/browbids - neurobagel/digest - neurobagel/documentation - neurobagel/neurobagel_examples - neurobagel/federation-api - neurobagel/menu - neurobagel/openneuro-annotations - neurobagel/planning - neurobagel/proc_dash - neurobagel/project - neurobagel/project - neurobagel/query-tool - neurobagel/recipes - neurobagel/workflows - files: - - source: template_workflows/ - dest: .github/workflows/ + # Workflows related to project automation + - files: + - source: template_workflows/project_automation/ + dest: .github/workflows/ + repos: | + neurobagel/annotation_tool + neurobagel/api + neurobagel/bagel-cli + neurobagel/bagelschema + neurobagel/bulk_annotations + neurobagel/browbids + neurobagel/digest + neurobagel/documentation + neurobagel/neurobagel_examples + neurobagel/federation-api + neurobagel/menu + neurobagel/openneuro-annotations + neurobagel/planning + neurobagel/project + neurobagel/query-tool + neurobagel/recipes + neurobagel/workflows + + # Workflow and configuration files for auto-releasing with intuit/auto + - files: + - source: template_workflows/auto_release/ + dest: .github/workflows/ + - source: template_configs/.autorc + dest: .autorc + - source: template_prs/auto_release_repo_pr.md + dest: .github/pull_request_template.md + # TODO: add JS repos once React migration is complete? + repos: | + neurobagel/api + neurobagel/bagel-cli + neurobagel/federation-api diff --git a/README.md b/README.md index 8581164..dbfdbdb 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ This repo helps automatically synchronize shared workflows across repos. -`/template_workflows/` contains inert templates for workflows we want in multiple repos - these templates are not doing anything on their own. +`template_workflows/` and `template_configs/` contain inert templates for files we want in multiple repos - these templates are not doing anything on their own. `.github/sync.yml` is a config file (containing repo names) which is read by `.github/workflows/sync_wf.yml`. -`.github/workflows/sync_wf.yml` is the actual unique active workflow in this repo which takes everything in `/template_workflows/` and makes PRs to add them to each repo listed in the config file. +`.github/workflows/sync_wf.yml` is the actual unique active workflow in this repo which takes the files in the template directories and makes PRs to adds them to appropriate repos listed in the config file. diff --git a/template_configs/.autorc b/template_configs/.autorc new file mode 100644 index 0000000..377746f --- /dev/null +++ b/template_configs/.autorc @@ -0,0 +1,116 @@ +{ + "onlyPublishWithReleaseLabel": true, + "noDefaultLabels": true, + "baseBranch": "main", + "author": "Chef Bot ", + "noVersionPrefix": false, + "plugins": [ + "git-tag", + "released", + "protected-branch", + "first-time-contributor", + "omit-commits", + { + "username": "dependabot[bot]", + "subject": "[pre-commit.ci]", + "labels": "_bot" + } + ], + "labels": [ + { + "name": "pr-major-breaking", + "changelogTitle": "๐Ÿ’ฅ Breaking Changes", + "description": "Significant behaviour change that breaks compatibility, will increment major version (+1.0.0)", + "releaseType": "major", + "overwrite": true, + "color": "#C5000B" + }, + { + "name": "pr-minor-breaking", + "changelogTitle": "๐Ÿ’ฅ Breaking Changes", + "description": "Feature or enhancement that breaks compatibility, will increment minor version (0.+1.0)", + "releaseType": "minor", + "overwrite": true, + "color": "#F1A60E" + }, + { + "name": "pr-minor", + "changelogTitle": "๐Ÿš€ Enhancements", + "description": "Non-breaking feature or enhancement, will increment minor version (0.+1.0)", + "releaseType": "minor", + "overwrite": true, + "color": "#F1A60E" + }, + { + "name": "pr-patch", + "changelogTitle": "๐Ÿš€ Enhancements", + "description": "Incremental feature improvement, will increment patch version when merged (0.0.+1)", + "releaseType": "patch", + "overwrite": true, + "default": true, + "color": "#870048" + }, + { + "name": "pr-bug-fix", + "changelogTitle": "๐Ÿ› Bug Fixes", + "description": "Bug fix, will increment patch version when merged (0.0.+1)", + "releaseType": "patch", + "overwrite": true, + "color": "#870048" + }, + { + "name": "pr-internal", + "changelogTitle": "๐Ÿ  Internal", + "description": "Non-user-facing code improvement, will increment patch version when merged (0.0.+1)", + "releaseType": "patch", + "overwrite": true, + "color": "#696969" + }, + { + "name": "pr-performance", + "changelogTitle": "๐ŸŽ Performance Improvements", + "description": "Improve performance of an existing feature, will increment patch version when merged (0.0.+1)", + "releaseType": "patch", + "overwrite": true, + "color": "#f4b2d8" + }, + { + "name": "pr-documentation", + "changelogTitle": "๐Ÿ“ Documentation", + "description": "Change that only affects user documentation", + "releaseType": "none", + "overwrite": true, + "color": "#cfd3d7" + }, + { + "name": "pr-tests", + "changelogTitle": " ๐Ÿงช Tests", + "description": "Add or improve existing tests", + "releaseType": "none", + "overwrite": true, + "color": "#ffd3cc" + }, + { + "name": "pr-dependencies", + "changelogTitle": "๐Ÿ”ฉ Dependency Updates", + "description": "Update one or more dependencies version", + "releaseType": "none", + "overwrite": true, + "color": "#8732bc" + }, + { + "name": "skip-release", + "description": "PR doesn't appear in the changelog and preserves current version when merged", + "releaseType": "skip", + "overwrite": true, + "color": "#bf5416" + }, + { + "name": "release", + "description": "Create a release when this PR is merged", + "releaseType": "release", + "overwrite": true, + "color": "#007f70" + } + ] +} diff --git a/template_prs/auto_release_repo_pr.md b/template_prs/auto_release_repo_pr.md new file mode 100644 index 0000000..39ee002 --- /dev/null +++ b/template_prs/auto_release_repo_pr.md @@ -0,0 +1,41 @@ + + + + + + +- Closes # + + +Changes proposed in this pull request: + +- +- + + +## Checklist + +- [ ] PR has an interpretable title with a prefix (`[ENH]`, `[FIX]`, `[REF]`, `[TST]`, `[CI]`, `[MNT]`, `[INF]`, `[MODEL]`, `[DOC]`) _(see https://neurobagel.org/contributing/pull_requests for more info)_ +- [ ] PR has a label for the release changelog or `skip-release` (to be applied by maintainers only) +- [ ] PR links to GitHub issue with mention `Closes #XXXX` +- [ ] Tests pass +- [ ] Checks pass + +For new features: +- [ ] Tests have been added + +For bug fixes: +- [ ] There is at least one test that would fail under the original bug conditions. \ No newline at end of file diff --git a/template_workflows/auto_release/release.yaml b/template_workflows/auto_release/release.yaml new file mode 100644 index 0000000..19195fd --- /dev/null +++ b/template_workflows/auto_release/release.yaml @@ -0,0 +1,28 @@ +name: auto release + +on: + push: + branches: + - main + +jobs: + auto-release: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download latest auto + run: | + auto_download_url="$(curl -fsSL https://api.github.com/repos/intuit/auto/releases/latest | jq -r '.assets[] | select(.name == "auto-linux.gz") | .browser_download_url')" + wget -O- "$auto_download_url" | gunzip > ~/auto + chmod a+x ~/auto + + - name: Release + run: ~/auto shipit -vv + env: + GH_TOKEN: ${{ secrets.NB_PAT_RELEASE }} + PROTECTED_BRANCH_REVIEWER_TOKEN: ${{ secrets.NB_PAT_RELEASE_PROTECTED }} diff --git a/template_workflows/add_iss2project.yml b/template_workflows/project_automation/add_iss2project.yml similarity index 100% rename from template_workflows/add_iss2project.yml rename to template_workflows/project_automation/add_iss2project.yml diff --git a/template_workflows/stale.yml b/template_workflows/project_automation/stale.yml similarity index 100% rename from template_workflows/stale.yml rename to template_workflows/project_automation/stale.yml