diff --git a/workflows/project/add-issue.yml b/workflows/project/add-issue.yml new file mode 100644 index 0000000..8c86854 --- /dev/null +++ b/workflows/project/add-issue.yml @@ -0,0 +1,67 @@ +name: Move new issues into Project + +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 + issue-id: + type: number + required: true + secrets: + GHPROJECT_TOKEN: + required: true + outputs: + item-id: + type: string + value: ${{ steps.add-issue.outputs.ITEM_ID }} + +jobs: + track_issue: + runs-on: ubuntu-latest + steps: + - name: Get project data + env: + GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}} + ORGANIZATION: specklesystems + 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 + + - id: add-issue + name: Add Issue to project + env: + GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}} + 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=${{ inputs.project-number }} -f id=${{ inputs.issue-id }} --jq '.data.addProjectNextItem.projectNextItem.id')" + + echo 'ITEM_ID='$item_id >> $GITHUB_OUTPUT