mirror of
https://github.com/nextcloud/nextcloudpi.git
synced 2026-01-10 15:12:01 -03:30
143 lines
5.4 KiB
YAML
143 lines
5.4 KiB
YAML
name: "Organize Issues and PRs on GH project"
|
|
|
|
on:
|
|
issues:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- closed
|
|
- assigned
|
|
- labeled
|
|
- unlabeled
|
|
- milestoned
|
|
issue_comment:
|
|
types:
|
|
- created
|
|
|
|
permissions:
|
|
repository-projects: write
|
|
contents: write
|
|
issues: write
|
|
|
|
jobs:
|
|
|
|
add_issue_to_project:
|
|
if: ${{ github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened') }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Get project data
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.NCP_PROJECT_PAT }}
|
|
ORGANIZATION: nextcloud
|
|
PROJECT_NUMBER: 67
|
|
run: |
|
|
gh api graphql -f query='
|
|
query($org: String!, $number: Int!) {
|
|
organization(login: $org){
|
|
projectV2(number: $number) {
|
|
id
|
|
fields(first:20) {
|
|
nodes {
|
|
... on ProjectV2Field {
|
|
id
|
|
name
|
|
}
|
|
... on ProjectV2SingleSelectField {
|
|
id
|
|
name
|
|
options {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
|
|
|
|
echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV
|
|
echo "BUGS_STATUS_FIELD_ID=$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json)" >> $GITHUB_ENV
|
|
echo "BUGS_STATUS_OPTION_NEW_ID=$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="New") |.id' project_data.json)" >> $GITHUB_ENV
|
|
echo "BUGS_STATUS_OPTION_BUG_ID=$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Bugs") |.id' project_data.json)" >> $GITHUB_ENV
|
|
echo "DEVEL_STATUS_FIELD_ID=$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Development Status") | .id' project_data.json)" >> $GITHUB_ENV
|
|
echo "DEVEL_STATUS_OPTION_BACKLOG_ID=$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Development Status") | .options[] | select(.name=="Backlog") |.id' project_data.json)" >> $GITHUB_ENV
|
|
|
|
- name: Add Issue to project
|
|
env:
|
|
GH_TOKEN: ${{ secrets.NCP_PROJECT_PAT }}
|
|
ISSUE_ID: ${{ github.event.issue.node_id }}
|
|
run: |
|
|
item_id="$( gh api graphql -f query='
|
|
mutation($project:ID!, $issue:ID!) {
|
|
addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) {
|
|
item {
|
|
id
|
|
}
|
|
}
|
|
}' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectV2ItemById.item.id')"
|
|
|
|
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
|
|
# - name: Set fields
|
|
# env:
|
|
# GH_TOKEN: ${{ secrets.NCP_PROJECT_PAT }}
|
|
# IS_ENHANCMENET: ${{ contains( github.event.issue.labels.*.name, 'enhancement') || contains( github.event.issue.labels.*.name, 'feature-request') || contains( github.event.issue.labels.*.name, 'roadmap') }}
|
|
# IS_BUG: ${{ contains( github.event.issue.labels.*.name, 'bug') }}
|
|
# run: |
|
|
#
|
|
# if [[ "$IS_ENHANCEMENT" == true ]]
|
|
# then
|
|
# STATUS_FIELD_ID="$DEVEL_STATUS_FIELD_ID"
|
|
# STATUS_OPTION_ID="$DEVEL_STATUS_OPTION_BACKLOG_ID"
|
|
# elif [[ "$IS_BUG" == true ]]
|
|
# then
|
|
# STATUS_FIELD_ID="$BUGS_STATUS_FIELD_ID"
|
|
# STATUS_OPTION_ID="$BUGS_STATUS_OPTION_BUG_ID"
|
|
# else
|
|
# STATUS_FIELD_ID="$BUGS_STATUS_FIELD_ID"
|
|
# STATUS_OPTION_ID="$BUGS_STATUS_OPTION_NEW_ID"
|
|
# fi
|
|
#
|
|
# echo "project=$PROJECT_ID
|
|
# item=$ITEM_ID
|
|
# status_field=$STATUS_FIELD_ID
|
|
# status_value=$STATUS_OPTION_ID"
|
|
#
|
|
# gh api graphql -f query='
|
|
# mutation(
|
|
# $project: ID!
|
|
# $item: ID!
|
|
# $status_field: ID!
|
|
# $status_value: String!
|
|
# ) {
|
|
# set_status: updateProjectV2ItemFieldValue(input: {
|
|
# projectId: $project
|
|
# itemId: $item
|
|
# fieldId: $status_field
|
|
# value: {
|
|
# singleSelectOptionId: $status_value
|
|
# }
|
|
# }) {
|
|
# projectV2Item {
|
|
# id
|
|
# }
|
|
# }
|
|
# }' \
|
|
# -f project=$PROJECT_ID \
|
|
# -f "item=$ITEM_ID" \
|
|
# -f "status_field=$STATUS_FIELD_ID" \
|
|
# -f "status_value=$STATUS_OPTION_ID" \
|
|
# --silent
|
|
|
|
set_update_label:
|
|
if: ${{ github.event_name == 'issue_comment' && !github.event.issue.pull_request && !contains( github.event.issue.assignees.*.login, github.event.comment.user.login ) }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Add update label to issue
|
|
if: ${{ ! contains( github.event.issue.labels.*.name, 'update' ) }}
|
|
env:
|
|
ISSUE_ID: ${{ github.event.issue.number }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
gh issue edit --repo "${{ github.repository }}" --add-label has-updates "$ISSUE_ID"
|