Skip to content

Commit

Permalink
🔄 synced file(s) with conda/infrastructure (#126)
Browse files Browse the repository at this point in the history
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
  • Loading branch information
conda-bot and conda-bot committed Apr 24, 2023
1 parent 2d02c15 commit b337c39
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 76 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
labels: ${{ env.FEEDBACK_LBL }}
github_token: ${{ secrets.PROJECT_TOKEN }}
# add [pending::support], if still open
- uses: actions-ecosystem/action-add-labels@v1.1.0
- uses: actions-ecosystem/action-add-labels@v1.1.3
if: github.event.issue.state == 'open'
with:
labels: ${{ env.SUPPORT_LBL }}
Expand Down
32 changes: 9 additions & 23 deletions .github/workflows/lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ on:
# NOTE: github.event is workflow_dispatch payload:
# https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_dispatch
workflow_dispatch:
# inputs:
# dryrun:
# description: "dryrun: Preview locking issues/prs without marking them (true|false)"
# required: true
# type: boolean
# default: true

schedule:
- cron: 0 6 * * *
Expand All @@ -23,35 +17,27 @@ jobs:
if: '!github.event.repository.fork'
runs-on: ubuntu-latest
steps:
# - id: read_yaml
# uses: conda/actions/read-yaml@v22.2.1
# with:
# path: https://raw.githubusercontent.com/conda/infra/main/.github/messages.yml
- uses: dessant/lock-threads@v2
- uses: dessant/lock-threads@v4
with:
# Number of days of inactivity before a closed issue is locked
issue-lock-inactive-days: 365
issue-inactive-days: 365
# Do not lock issues created before a given timestamp, value must follow ISO 8601
issue-exclude-created-before: ''
exclude-issue-created-before: ''
# Do not lock issues with these labels, value must be a comma separated list of labels or ''
issue-exclude-labels: ''
exclude-any-issue-labels: ''
# Labels to add before locking an issue, value must be a comma separated list of labels or ''
issue-lock-labels: 'locked'
# Comment to post before locking an issue
# issue-lock-comment: ${{ fromJSON(steps.read_yaml.outputs.value)['lock-issue'] }}
add-issue-labels: 'locked'
# Reason for locking an issue, value must be one of resolved, off-topic, too heated, spam or ''
issue-lock-reason: 'resolved'

# Number of days of inactivity before a closed pull request is locked
pr-lock-inactive-days: 365
pr-inactive-days: 365
# Do not lock pull requests created before a given timestamp, value must follow ISO 8601
pr-exclude-created-before: ''
exclude-pr-created-before: ''
# Do not lock pull requests with these labels, value must be a comma separated list of labels or ''
pr-exclude-labels: ''
exclude-any-pr-labels: ''
# Labels to add before locking a pull request, value must be a comma separated list of labels or ''
pr-lock-labels: 'locked'
# Comment to post before locking a pull request
# pr-lock-comment: ${{ fromJSON(steps.read_yaml.outputs.value)['lock-pr'] }}
add-pr-labels: 'locked'
# Reason for locking a pull request, value must be one of resolved, off-topic, too heated, spam or ''
pr-lock-reason: 'resolved'

Expand Down
85 changes: 48 additions & 37 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,74 +14,85 @@ on:
schedule:
- cron: 0 4 * * *

permissions:
issues: write
pull-requests: write

jobs:
stale:
if: '!github.event.repository.fork'
runs-on: ubuntu-latest
strategy:
matrix:
# The issues labeled "support" have a more aggressive stale/close timeline from the rest
only-issue-labels: ['type::support', '']
include:
- only-issue-labels: ''
days-before-issue-stale: 365
days-before-issue-close: 30
# [type::support] issues have a more aggressive stale/close timeline
- only-issue-labels: type::support
days-before-issue-stale: 21
days-before-issue-close: 7
steps:
- id: read_yaml
uses: conda/actions/read-yaml@v22.9.0
- uses: conda/actions/read-yaml@v22.9.0
id: read_yaml
with:
path: https://raw.githubusercontent.com/conda/infra/main/.github/messages.yml
- uses: actions/stale@v4

- uses: actions/stale@v7
id: stale
with:
# Idle number of days before marking issues stale (default: 60)
days-before-issue-stale: ${{ matrix.only-issue-labels && 21 || 365 }}
# Idle number of days before closing stale issues/PRs (default: 7)
days-before-issue-close: ${{ matrix.only-issue-labels && 7 || 30 }}
# Idle number of days before marking PRs stale (default: 60)
# Only issues with these labels are checked whether they are stale
only-issue-labels: ${{ matrix.only-issue-labels }}

# Idle number of days before marking issues stale
days-before-issue-stale: ${{ matrix.days-before-issue-stale }}
# Idle number of days before closing stale issues/PRs
days-before-issue-close: ${{ matrix.days-before-issue-close }}
# Idle number of days before marking PRs stale
days-before-pr-stale: 365
# Idle number of days before closing stale PRs (default: 7)
# Idle number of days before closing stale PRs
days-before-pr-close: 30

# Comment on the staled issues
stale-issue-message: ${{ fromJSON(steps.read_yaml.outputs.value)['stale-issue'] }}
# Comment on the staled issues while closed
# close-issue-message: ${{ fromJSON(steps.read_yaml.outputs.value)['close-issue'] }}
# Comment on the staled PRs
stale-pr-message: ${{ fromJSON(steps.read_yaml.outputs.value)['stale-pr'] }}
# Comment on the staled PRs while closed
# close-pr-message: ${{ fromJSON(steps.read_yaml.outputs.value)['close-pr'] }}
# Label to apply on staled issues
stale-issue-label: 'stale'
stale-issue-label: stale
# Label to apply on closed issues
close-issue-label: 'stale::closed'
close-issue-label: stale::closed
# Reason to use when closing issues
close-issue-reason: not_planned

# Comment on the staled PRs
stale-pr-message: ${{ fromJSON(steps.read_yaml.outputs.value)['stale-pr'] }}
# Label to apply on staled PRs
stale-pr-label: 'stale'
stale-pr-label: stale
# Label to apply on closed PRs
close-pr-label: 'stale::closed'
close-pr-label: stale::closed
# Reason to use when closing PRs
close-pr-reason: not_planned

# Issues with these labels will never be considered stale
exempt-issue-labels: 'stale::recovered,epic'
# Issues with these labels will never be considered stale
exempt-pr-labels: 'stale::recovered,epic'
# Only issues with these labels are checked whether they are stale
only-issue-labels: ${{ matrix.only-issue-labels }}

# Max number of operations per run
operations-per-run: ${{ secrets.STALE_OPERATIONS_PER_RUN || 100 }}
# Remove stale label from issues/PRs on updates/comments
remove-stale-when-updated: true

# Add specified labels to issues/PRs when they become unstale
labels-to-add-when-unstale: 'stale::recovered'
labels-to-remove-when-unstale: 'stale,stale::closed'
labels-to-add-when-unstale: stale::recovered
# Remove specified labels to issues/PRs when they become unstale
labels-to-remove-when-unstale: stale,stale::closed

# Dry-run (default: false)
# Max number of operations per run
operations-per-run: ${{ secrets.STALE_OPERATIONS_PER_RUN || 100 }}
# Dry-run
debug-only: ${{ github.event.inputs.dryrun || false }}
# Order to get issues/PRs (default: false)
# Order to get issues/PRs
ascending: true
# Delete branch after closing a stale PR (default: false)
# Delete branch after closing a stale PR
delete-branch: false

# Issues with these labels will never be considered stale
exempt-issue-labels: stale::recovered,epic
# Issues with these labels will never be considered stale
exempt-pr-labels: stale::recovered,epic
# Exempt all issues/PRs with milestones from stale
exempt-all-milestones: true

# Assignees on issues/PRs exempted from stale
exempt-assignees: mingwandroid

Expand Down
31 changes: 16 additions & 15 deletions HOW_WE_USE_GITHUB.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[project-sorting]: https://github.com/orgs/conda/projects/2/views/11
[project-support]: https://github.com/orgs/conda/projects/2/views/12
[project-backlog]: https://github.com/orgs/conda/projects/2/views/13
[project-sprint]: https://github.com/orgs/conda/projects/2/views/14
[project-in-progress]: https://github.com/orgs/conda/projects/2/views/14

[docs-toc]: https://github.blog/changelog/2021-04-13-table-of-contents-support-in-markdown-files/
[docs-actions]: https://docs.github.com/en/actions
Expand All @@ -15,6 +15,8 @@
[workflow-sync]: https://github.com/conda/infra/blob/main/.github/workflows/sync.yml
[labels-global]: https://github.com/conda/infra/blob/main/.github/global.yml

[signing-commits]: https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits

<!-- relative URLs -->
[workflow-issues]: /.github/workflows/issues.yml
[workflow-project]: /.github/workflows/project.yml
Expand All @@ -30,6 +32,7 @@ This document seeks to outline how we as a community use GitHub Issues to track
<!-- only include high-level topics or particularly noteworthy sections here -->
Topics:
- [What is Issue Sorting?](#what-is-issue-sorting)
- [Commit signing](#commit-signing)
- [Types of tickets](#types-of-tickets)
- [Normal Ticket/Issue](#normal-ticketissue)
- [Epics](#epics)
Expand Down Expand Up @@ -58,8 +61,8 @@ flowchart LR
board_backlog-- refine -->board_backlog
end
subgraph flow_sprint [Sprint]
board_sprint{{Sprint}}
subgraph flow_progress [In Progress]
board_progress{{In Progress}}
end
state_new(New Issues)
Expand All @@ -69,9 +72,9 @@ flowchart LR
board_sorting-- investigated -->board_backlog
board_sorting-- duplicates, off-topic -->state_closed
board_support-- resolved, unresponsive -->state_closed
board_backlog-- pending work -->board_sprint
board_backlog-- pending work -->board_progress
board_backlog-- resolved, irrelevant -->state_closed
board_sprint-- resolved -->state_closed
board_progress-- resolved -->state_closed
```

In order to explain how various `conda` issues are evaluated, the following document will provide information about our sorting process in the form of an FAQ.
Expand Down Expand Up @@ -129,23 +132,14 @@ The additional tabs in the project board that the issues can be moved to include

All sorted issues will be reviewed by sorting engineers during a weekly Refinement meeting in order to understand how those particular issues fit into the short- and long-term roadmap of `conda`. These meetings enable the sorting engineers to get together to collectively prioritize issues, earmark feature requests for specific future releases (versus a more open-ended backlog), tag issues as ideal for first-time contributors, as well as whether or not to close/reject specific feature requests.

Once issues are deemed ready to be worked on, they will be moved to the [`conda` Backlog tab of the Planning board][project-backlog] on GitHub. Once actively in progress, the issues will be moved to the [Sprint tab of the Planning board][project-sprint] and then closed out once the work is complete.
Once issues are deemed ready to be worked on, they will be moved to the [`conda` Backlog tab of the Planning board][project-backlog] on GitHub. Once actively in progress, the issues will be moved to the [In Progress tab of the Planning board][project-in-progress] and then closed out once the work is complete.


#### What is the purpose of having a "Backlog"?

Issues are "backlogged" when they have been sorted but not yet earmarked for an upcoming release. Weekly Refinement meetings are a time when the `conda` engineers will transition issues from "[Sorting][project-sorting]" to "[Backlog][project-backlog]". Additionally, this time of handoff will include discussions around the kind of issues that were raised, which provides an opportunity to identify any patterns that may point to a larger problem.


#### What is the purpose of a "development sprint"?

After issues have been sorted and backlogged, they will eventually be moved into the "Sprint Candidate", "Short-Term", "Medium-Term", "Long-Term", or "No Time Frame" sections of the [Backlog tab of the Planning board][project-backlog] and get one or more sprint cycles dedicated to them.

The purpose of a development sprint is to enable a steady delivery of enhancements, features, and bug fixes by setting aside pre-determined portions of time that are meant for focusing on specifically-assigned items.

Sprints also serve to focus the engineering team's attention on more accurate planning for what is to come during the entire release cycle, as well as keep the scope of development work concise. They enable the setting aside of dedicated time for the engineers to resolve any problems with the work involved, instead of pushing these problems to the end of the release cycle when there may not be any time remaining to fix issues.


#### How does labeling work?

Labeling is a very important means for sorting engineers to keep track of the current state of an issue with regards to the asynchronous nature of communicating with users. Utilizing the proper labels helps to identify the severity of the issue as well as to quickly understand the current state of a discussion.
Expand Down Expand Up @@ -239,6 +233,13 @@ please post details to the [Nucleus forums](https://community.anaconda.cloud/).
In order to not have to manually type or copy/paste the above repeatedly, please note that it's possible to add text for the most commonly-used responses via [GitHub's "Add Saved Reply" option][docs-saved-reply].


### Commit signing

For all conda maintainers, we require commit signing and strongly recommend it for all others wishing to contribute to conda
related projects. More information about how to set this up within GitHub can be found here:

- [Signing Commits][signing-commits]

### Types of Tickets

#### Standard Ticket/Issue
Expand Down

0 comments on commit b337c39

Please sign in to comment.