From d1c07f9569f4f7bb90345ccc363d71a8b8507687 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 02:30:00 +0100 Subject: chore: add Projects Beta GitHub Action --- .github/workflows/project.yml | 134 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 .github/workflows/project.yml (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml new file mode 100644 index 000000000..ba3e115c9 --- /dev/null +++ b/.github/workflows/project.yml @@ -0,0 +1,134 @@ +name: Project tracking +on: + issues: + types: [opened] + pull_request_target: + types: [opened, synchronize] + +jobs: + add-to-project: + name: Add to project + runs-on: ubuntu-latest + steps: + - name: Generate token + id: generate_token + uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0 + with: + app_id: ${{ secrets.OHMYZSH_BOT_APP_ID }} + private_key: ${{ secrets.OHMYZSH_BOT_APP_PEM }} + - name: Read project data + env: + GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + ORGANIZATION: ohmyzsh + PROJECT_NUMBER: "1" + run: | + # Get Project data + gh api graphql -f query=' + query($org: String!, $number: Int!) { + organization(login: $org){ + projectNext(number: $number) { + id + fields(first:20) { + nodes { + id + name + } + } + } + } + } + ' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json + + # Parse project data + cat >> $GITHUB_ENV <> $GITHUB_ENV + - name: Classify Pull Request + if: github.event_name == 'pull_request_target' + env: + GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + run: | + gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' + /^plugins\// { + plugins[$2] = 1 + } + /^themes\// { + gsub(/\.zsh-theme$/, "", $2) + themes[$2] = 1 + } + END { + for (plugin in plugins) { + print plugin >> "plugins.list" + } + for (theme in themes) { + print theme >> "themes.list" + } + } + ' + # If only one plugin is modified, add it to the plugin field + if [[ $(wc -l < plugins.list) = 1 ]]; then + echo "PLUGIN=$(cat plugins.list)" >> $GITHUB_ENV + fi + # If only one theme is modified, add it to the theme field + if [[ $(wc -l < themes.list) = 1 ]]; then + echo "THEME=$(cat themes.list)" >> $GITHUB_ENV + fi + - name: Fill Pull Request fields in project + if: github.event_name == 'pull_request_target' + env: + GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + run: | + gh api graphql -f query=' + mutation ( + $project: ID! + $item: ID! + $plugin_field: ID! + $plugin_value: String! + $theme_field: ID! + $theme_value: String! + ) { + set_plugin: updateProjectNextItemField(input: { + projectId: $project + itemId: $item + fieldId: $plugin_field + value: $plugin_value + }) { + projectNextItem { + id + } + } + set_theme: updateProjectNextItemField(input: { + projectId: $project + itemId: $item + fieldId: $theme_field + value: $theme_value + }) { + projectNextItem { + id + } + } + } + ' -f project=$PROJECT_ID -f item=$ITEM_ID \ + -f plugin_field=$PLUGIN_FIELD_ID -f plugin_value=$PLUGIN \ + -f theme_field=$THEME_FIELD_ID -f theme_value=$THEME \ + --silent + -- cgit v1.2.3-70-g09d2 From 95a66532d17181693b828bda95f4261e5421b409 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:09:52 +0100 Subject: chore: use GITHUB_TOKEN auth for Project Beta GitHub Action --- .github/workflows/project.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index ba3e115c9..2b3cc732f 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -10,15 +10,9 @@ jobs: name: Add to project runs-on: ubuntu-latest steps: - - name: Generate token - id: generate_token - uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0 - with: - app_id: ${{ secrets.OHMYZSH_BOT_APP_ID }} - private_key: ${{ secrets.OHMYZSH_BOT_APP_PEM }} - name: Read project data env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | @@ -45,9 +39,10 @@ jobs: PLUGIN_FIELD_ID=$(jq '.data.organization.projectNext.fields.nodes[] | select(.name == "Plugin") | .id' project_data.json) THEME_FIELD_ID=$(jq '.data.organization.projectNext.fields.nodes[] | select(.name == "Theme") | .id' project_data.json) EOF + - name: Add to project env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ISSUE_ID: ${{ github.event.issue.node_id }} PR_ID: ${{ github.event.pull_request.node_id }} run: | @@ -62,10 +57,11 @@ jobs: ' -f project=$PROJECT_ID -f item=${ISSUE_ID:-$PR_ID} --jq '.data.addProjectNextItem.projectNextItem.id')" echo "ITEM_ID=$item_id" >> $GITHUB_ENV + - name: Classify Pull Request if: github.event_name == 'pull_request_target' env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' /^plugins\// { @@ -92,10 +88,11 @@ jobs: if [[ $(wc -l < themes.list) = 1 ]]; then echo "THEME=$(cat themes.list)" >> $GITHUB_ENV fi + - name: Fill Pull Request fields in project if: github.event_name == 'pull_request_target' env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh api graphql -f query=' mutation ( -- cgit v1.2.3-70-g09d2 From 1d35b30461b2cc9a31330ff4e96cc5f97f76fb22 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:17:40 +0100 Subject: chore: fix auth in Project tracking Action --- .github/workflows/project.yml | 2 ++ 1 file changed, 2 insertions(+) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 2b3cc732f..c25fd2e22 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -16,6 +16,8 @@ jobs: ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | + gh auth login --with-token ${{ env.GITHUB_TOKEN }} + # Get Project data gh api graphql -f query=' query($org: String!, $number: Int!) { -- cgit v1.2.3-70-g09d2 From 861e7e24a356ac571af2f362275ddfbac4be69ab Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:19:46 +0100 Subject: chore: please work --- .github/workflows/project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index c25fd2e22..1e66efda8 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -16,7 +16,7 @@ jobs: ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | - gh auth login --with-token ${{ env.GITHUB_TOKEN }} + gh auth login # Get Project data gh api graphql -f query=' -- cgit v1.2.3-70-g09d2 From 17c52ccfc9b06d45f041b24af35d1804d645620f Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:27:25 +0100 Subject: chore: look ma no auth! --- .github/workflows/project.yml | 8 -------- 1 file changed, 8 deletions(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 1e66efda8..7559060d5 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -12,12 +12,9 @@ jobs: steps: - name: Read project data env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | - gh auth login - # Get Project data gh api graphql -f query=' query($org: String!, $number: Int!) { @@ -44,7 +41,6 @@ jobs: - name: Add to project env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ISSUE_ID: ${{ github.event.issue.node_id }} PR_ID: ${{ github.event.pull_request.node_id }} run: | @@ -62,8 +58,6 @@ jobs: - name: Classify Pull Request if: github.event_name == 'pull_request_target' - env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' /^plugins\// { @@ -93,8 +87,6 @@ jobs: - name: Fill Pull Request fields in project if: github.event_name == 'pull_request_target' - env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh api graphql -f query=' mutation ( -- cgit v1.2.3-70-g09d2 From dd7f0f22111bff8145c46f9638c0c95cbc143ce3 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:32:07 +0100 Subject: chore: let's try again --- .github/workflows/project.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 7559060d5..0fe897587 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -12,11 +12,12 @@ jobs: steps: - name: Read project data env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | # Get Project data - gh api graphql -f query=' + GITHUB_TOKEN=$GITHUB_TOKEN gh api graphql -f query=' query($org: String!, $number: Int!) { organization(login: $org){ projectNext(number: $number) { @@ -41,6 +42,7 @@ jobs: - name: Add to project env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ISSUE_ID: ${{ github.event.issue.node_id }} PR_ID: ${{ github.event.pull_request.node_id }} run: | @@ -58,6 +60,8 @@ jobs: - name: Classify Pull Request if: github.event_name == 'pull_request_target' + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' /^plugins\// { @@ -87,6 +91,8 @@ jobs: - name: Fill Pull Request fields in project if: github.event_name == 'pull_request_target' + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh api graphql -f query=' mutation ( -- cgit v1.2.3-70-g09d2 From 121ee818a52b6c88fa4b7ae993ad15a27dc99038 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Sun, 2 Jan 2022 03:37:05 +0100 Subject: chore: I'm dumb af --- .github/workflows/project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 0fe897587..2b3cc732f 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -17,7 +17,7 @@ jobs: PROJECT_NUMBER: "1" run: | # Get Project data - GITHUB_TOKEN=$GITHUB_TOKEN gh api graphql -f query=' + gh api graphql -f query=' query($org: String!, $number: Int!) { organization(login: $org){ projectNext(number: $number) { -- cgit v1.2.3-70-g09d2 From 9dd1dc49d92da4641e83057099691a22ebd52bd8 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 3 Jan 2022 12:32:37 +0100 Subject: chore: simplify `GITHUB_TOKEN` env in project GitHub Action --- .github/workflows/project.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 2b3cc732f..6968e5ad4 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -9,10 +9,11 @@ jobs: add-to-project: name: Add to project runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} steps: - name: Read project data env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ORGANIZATION: ohmyzsh PROJECT_NUMBER: "1" run: | @@ -42,7 +43,6 @@ jobs: - name: Add to project env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} ISSUE_ID: ${{ github.event.issue.node_id }} PR_ID: ${{ github.event.pull_request.node_id }} run: | @@ -60,8 +60,6 @@ jobs: - name: Classify Pull Request if: github.event_name == 'pull_request_target' - env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' /^plugins\// { @@ -91,8 +89,6 @@ jobs: - name: Fill Pull Request fields in project if: github.event_name == 'pull_request_target' - env: - GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} run: | gh api graphql -f query=' mutation ( -- cgit v1.2.3-70-g09d2 From 512839ef7800fa32d78c47f160bdae3293ad22c1 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 3 Jan 2022 13:02:28 +0100 Subject: chore: simplify project GitHub Action --- .github/workflows/project.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 6968e5ad4..013255890 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -43,8 +43,7 @@ jobs: - name: Add to project env: - ISSUE_ID: ${{ github.event.issue.node_id }} - PR_ID: ${{ github.event.pull_request.node_id }} + ISSUE_OR_PR_ID: ${{ github.event.issue.node_id || github.event.pull_request.node_id }} run: | item_id="$(gh api graphql -f query=' mutation($project: ID!, $item: ID!) { @@ -54,7 +53,7 @@ jobs: } } } - ' -f project=$PROJECT_ID -f item=${ISSUE_ID:-$PR_ID} --jq '.data.addProjectNextItem.projectNextItem.id')" + ' -f project=$PROJECT_ID -f item=$ISSUE_OR_PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')" echo "ITEM_ID=$item_id" >> $GITHUB_ENV -- cgit v1.2.3-70-g09d2 From 63345c4e5dd8ce210a43c9e89a883a262e755c69 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 3 Jan 2022 13:10:53 +0100 Subject: ci: disable GitHub Actions on forks --- .github/workflows/main.yml | 1 + .github/workflows/project.yml | 1 + 2 files changed, 2 insertions(+) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ab7efdd6..cdadc1434 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,6 +14,7 @@ jobs: tests: name: Run tests runs-on: ${{ matrix.os }} + if: github.repository == 'ohmyzsh/ohmyzsh' strategy: matrix: os: [ubuntu-latest, macos-latest] diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 013255890..2a27b70fc 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -9,6 +9,7 @@ jobs: add-to-project: name: Add to project runs-on: ubuntu-latest + if: github.repository == 'ohmyzsh/ohmyzsh' env: GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} steps: -- cgit v1.2.3-70-g09d2 From 0ca2e48ee8449439a6e0a4ca0652a4ec07031ad3 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 10 Jan 2022 17:22:31 +0100 Subject: ci(project): fix `gh pr view` call to use ohmyzsh repository --- .github/workflows/project.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 2a27b70fc..bb1063acb 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -47,21 +47,23 @@ jobs: ISSUE_OR_PR_ID: ${{ github.event.issue.node_id || github.event.pull_request.node_id }} run: | item_id="$(gh api graphql -f query=' - mutation($project: ID!, $item: ID!) { - addProjectNextItem(input: {projectId: $project, contentId: $item}) { + mutation($project: ID!, $content: ID!) { + addProjectNextItem(input: {projectId: $project, contentId: $content}) { projectNextItem { id } } } - ' -f project=$PROJECT_ID -f item=$ISSUE_OR_PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')" + ' -f project=$PROJECT_ID -f content=$ISSUE_OR_PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')" echo "ITEM_ID=$item_id" >> $GITHUB_ENV - name: Classify Pull Request if: github.event_name == 'pull_request_target' run: | - gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ ' + gh pr view ${{ github.event.pull_request.number }} \ + --repo ${{ github.repository }} \ + --json files --jq '.files.[].path' | awk -F/ ' /^plugins\// { plugins[$2] = 1 } -- cgit v1.2.3-70-g09d2 From b4819557618bbf8452c612f614ad824d243bb376 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Tue, 11 Jan 2022 23:40:33 +0100 Subject: ci(project): fix .list files not found error --- .github/workflows/project.yml | 2 ++ 1 file changed, 2 insertions(+) (limited to '.github/workflows/project.yml') diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index bb1063acb..800761554 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -61,6 +61,8 @@ jobs: - name: Classify Pull Request if: github.event_name == 'pull_request_target' run: | + touch plugins.list themes.list + gh pr view ${{ github.event.pull_request.number }} \ --repo ${{ github.repository }} \ --json files --jq '.files.[].path' | awk -F/ ' -- cgit v1.2.3-70-g09d2