From bbec40e6f29e010f766b5b113cc69876a7c6cc3f Mon Sep 17 00:00:00 2001 From: Alan Rynne Date: Mon, 9 Jan 2023 16:51:05 +0100 Subject: [PATCH] feat: update status to be a reusable-workflow --- workflows/project/update-status.yml | 81 +++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 workflows/project/update-status.yml diff --git a/workflows/project/update-status.yml b/workflows/project/update-status.yml new file mode 100644 index 0000000..cc9d2aa --- /dev/null +++ b/workflows/project/update-status.yml @@ -0,0 +1,81 @@ +name: Update issue Status + +on: + workflow_call: + inputs: + github-org: + type: string + default: specklesystems + description: The organisation the project belongs to + project-number: + type: number + default: 11 + description: The project number where the issue should be updated + secrets: + GHPROJECT_TOKEN: + required: true +env: + GITHUB_TOKEN: ${{ secrets.GHPROJECT_TOKEN }} + ISSUE_ID: ${{ github.event.issue.node_id }} + +jobs: + update_issue: + runs-on: ubuntu-latest + steps: + - name: Get project data + run: | + gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + query($org: String!, $number: Int!) { + organization(login: $org){ + projectNext(number: $number) { + id + fields(first:20) { + nodes { + id + name + settings + } + } + } + } + }' -f org=${{ inputs.github-org }} -F number=${{ inputs.project-number }} > project_data.json + + echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV + echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV + + echo "$PROJECT_ID" + echo "$STATUS_FIELD_ID" + + echo 'DONE_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .settings | fromjson | .options[] | select(.name== "Done") | .id' project_data.json) >> $GITHUB_ENV + echo "$DONE_ID" + + - name: Add Issue to project #it's already in the project, but we do this to get its node id! + run: | + item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + mutation($project:ID!, $id:ID!) { + addProjectNextItem(input: {projectId: $project, contentId: $id}) { + projectNextItem { + id + } + } + }' -f project=$PROJECT_ID -f id=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')" + + echo 'ITEM_ID='$item_id >> $GITHUB_ENV + + - name: Update Status + run: | + gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + mutation($project:ID!, $status:ID!, $id:ID!, $value:String!) { + set_status: updateProjectNextItemField( + input: { + projectId: $project + itemId: $id + fieldId: $status + value: $value + } + ) { + projectNextItem { + id + } + } + }' -f project=$PROJECT_ID -f status=$STATUS_FIELD_ID -f id=$ITEM_ID -f value=${{ env.DONE_ID }}