Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🤖 Init update.yml workflow #514

Merged
merged 3 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/template-files/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
conda/governance:
# [required] community files
- CODE_OF_CONDUCT.md

kenodegard marked this conversation as resolved.
Show resolved Hide resolved
conda/infrastructure:
# [required] general workflows
- .github/workflows/cla.yml
- .github/workflows/update.yml

# [optional] to include repo in https://github.com/orgs/conda/projects/2
- .github/workflows/issues.yml
- .github/workflows/labels.yml
- .github/workflows/project.yml

# [optional] stale bot workflows
- .github/workflows/stale.yml
- .github/workflows/lock.yml

# [optional] general processes for the conda org
- src: templates/HOW_WE_USE_GITHUB.md
dst: HOW_WE_USE_GITHUB.md

# [optional] standard issue templates
- src: templates/issues/bug.yml
dst: .github/ISSUE_TEMPLATE/0_bug.yml

- src: templates/issues/feature.yml
dst: .github/ISSUE_TEMPLATE/1_feature.yml

- src: templates/issues/documentation.yml
dst: .github/ISSUE_TEMPLATE/2_documentation.yml

- src: templates/issues/epic.yml
dst: .github/ISSUE_TEMPLATE/epic.yml

# [optional] standard PR template
# - src: templates/pull_requests/news_tests_docs.md
# dst: .github/template-files/templates/pull_request_template_details.md
kenodegard marked this conversation as resolved.
Show resolved Hide resolved
- src: templates/pull_requests/base.md
dst: .github/PULL_REQUEST_TEMPLATE.md

# [optional] rever release files
# - src: templates/releases/RELEASE.md
# dst: RELEASE.md
# with:
# placeholder: YY.M
# - src: templates/releases/rever.xsh
# dst: rever.xsh
# - src: templates/releases/TEMPLATE
# dst: news/TEMPLATE
kenodegard marked this conversation as resolved.
Show resolved Hide resolved
124 changes: 124 additions & 0 deletions .github/workflows/update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Update Repository

on:
# every Sunday at 00:36 UTC
# https://crontab.guru/#36_2_*_*_0
schedule:
- cron: 36 2 * * 0

workflow_dispatch:

issue_comment:
types:
- created

jobs:
update:
if: >-
!github.event.repository.fork
&& (
github.event_name == 'schedule'
|| github.event_name == 'workflow_dispatch'
|| (
github.event_name == 'issue_comment'
&& github.event.issue.pull_request
&& (
github.event.comment.body == '@conda-bot render'
|| github.event.comment.body == '@conda-bot recreate'
)
)
)
runs-on: ubuntu-latest
steps:
- if: github.event_name == 'issue_comment'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
with:
comment-id: ${{ github.event.comment.id }}
reactions: eyes
reactions-edit-mode: replace
token: ${{ secrets.SYNC_TOKEN }}

- if: github.event.comment.body == '@conda-bot render'
name: Configure git origin
run: |
echo REPOSITORY=$(curl --silent ${{ github.event.issue.pull_request.url }} | jq --raw-output '.head.repo.full_name') >> $GITHUB_ENV
echo REF=$(curl --silent ${{ github.event.issue.pull_request.url }} | jq --raw-output '.head.ref') >> $GITHUB_ENV

- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: ${{ env.REPOSITORY || github.repository }}
ref: ${{ env.REF || '' }}
token: ${{ secrets.SYNC_TOKEN }}

- name: Configure git user
run: |
git config --global user.name 'Conda Bot'
git config --global user.email '[email protected]'

- uses: conda/actions/combine-durations@15f883f14f4232f83658e3609c3316d58905138f # v24.8.0
id: durations
continue-on-error: true

- uses: conda/actions/template-files@15f883f14f4232f83658e3609c3316d58905138f # v24.8.0
id: templates
continue-on-error: true

- name: Commit changes
# no-op if there are no updates
continue-on-error: true
run: |
git add .
git commit --message "🤖 updated file(s)"

- if: github.event.comment.body != '@conda-bot render'
name: Create fork
# no-op if the repository is already forked
run: echo FORK=$(gh repo fork --clone=false --default-branch-only 2>&1 | awk '{print $1}') >> $GITHUB_ENV
env:
GH_TOKEN: ${{ secrets.SYNC_TOKEN }}

- if: github.event.comment.body != '@conda-bot render'
id: create
# no-op if no commits were made
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
push-to-fork: ${{ env.FORK }}
token: ${{ secrets.SYNC_TOKEN }}
branch: update
delete-branch: true
title: 🤖 Update infrastructure file(s)
body: |
[update.yml]: ${{ github.server_url }}/${{ github.repository }}/blob/main/.github/workflows/update.yml

Your friendly repository updater.

${{ steps.durations.outputs.summary }}

${{ steps.templates.outputs.summary }}

This PR was triggered by @${{ github.triggering_actor }} via ${{ github.event_name }}.

<details>
<summary>Commands</summary>

Trigger actions by commenting on this PR:

- `@conda-bot render` will run rendering workflows and commit and push any changes to this PR
- `@conda-bot recreate` will recreate this PR, overwriting any edits that have been made to it

</details>

###### Auto-generated by the [`update.yml`][update.yml] workflow, see ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}.

- if: github.event.comment.body == '@conda-bot render'
id: update
name: Push changes
run: git push --force-with-lease

- if: always() && github.event_name == 'issue_comment'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
with:
comment-id: ${{ github.event.comment.id }}
reactions: ${{ (steps.create.conclusion == 'success' || steps.update.conclusion == 'success') && 'hooray' || 'confused' }}
reactions-edit-mode: replace
token: ${{ secrets.SYNC_TOKEN }}
Loading