diff --git a/.github/workflows/add-pr-to-project-as-review.yaml b/.github/workflows/add-pr-to-project-as-review.yaml new file mode 100644 index 0000000..de1d416 --- /dev/null +++ b/.github/workflows/add-pr-to-project-as-review.yaml @@ -0,0 +1,112 @@ +name: Add PR to project as review + +on: + pull_request: + types: + - ready_for_review + +jobs: + track_pr: + runs-on: ubuntu-latest + steps: + + - name: Generate token + id: generate-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ vars.CASRU_GAME_APP_ID }} + private-key: ${{ secrets.CASRU_GAME_APP_PRIVATE_KEY }} + + - name: Get project data + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }} + ORGANIZATION: CASru-GAME + PROJECT_NUMBER: 3 + 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 'DATE_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Date posted") | .id' project_data.json) >> $GITHUB_ENV + echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV + echo 'TODO_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Review") |.id' project_data.json) >> $GITHUB_ENV + + - name: Add PR to project + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }} + PR_ID: ${{ github.event.pull_request.node_id }} + run: | + item_id="$( gh api graphql -f query=' + mutation($project:ID!, $pr:ID!) { + addProjectV2ItemById(input: {projectId: $project, contentId: $pr}) { + item { + id + } + } + }' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectV2ItemById.item.id')" + + echo 'ITEM_ID='$item_id >> $GITHUB_ENV + + - name: Get date + run: echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV + + - name: Set fields + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }} + run: | + gh api graphql -f query=' + mutation ( + $project: ID! + $item: ID! + $status_field: ID! + $status_value: String! + $date_field: ID! + $date_value: Date! + ) { + set_status: updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $status_field + value: { + singleSelectOptionId: $status_value + } + }) { + projectV2Item { + id + } + } + set_date_posted: updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $date_field + value: { + date: $date_value + } + }) { + projectV2Item { + id + } + } + }' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TODO_OPTION_ID }} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent diff --git a/README.md b/README.md index 3e1af7c..17278dc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # 概要 + チームで大規模Unity開発をするための、予行練習リポジトリ このGitHubリポジトリを使って、開発ツールや今後の開発の方向性について議論をする。 ## ブランチルール -- ブランチを切るときは、必ず`main`ブランチから切る。また、ブランチはissueから作成する。 \ No newline at end of file + +- ブランチを切るときは、必ず`main`ブランチから切る。また、ブランチはissueから作成する。