Ignoring a description for all languages makes it pointless to run the test at all #954
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow is used to add new issues to GitHub Kiota Project | |
name: Add Issue or PR to project | |
on: | |
issues: | |
types: | |
- opened | |
pull_request: | |
types: | |
- opened | |
branches: | |
- "main" | |
workflow_dispatch: | |
jobs: | |
track_issue: | |
if: github.actor != 'dependabot[bot]' && github.event.pull_request.head.repo.fork == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ secrets.GRAPHBOT_APP_ID }} | |
private-key: ${{ secrets.GRAPHBOT_APP_PEM }} | |
- name: Check if issue has language specified | |
env: | |
ISSUE_BODY: ${{github.event.issue.body}} | |
run: | | |
language=$(awk '/SDK language/{flag=1;next} /Describe/{flag=0} flag' <<< "$ISSUE_BODY" | tr -d '[:space:]') | |
allowedList="PHP Python Go TypeScript Csharp Java PowerShell CLI Ruby Swift" | |
if [[ $allowedList =~ (^|[[:space:]])$language($|[[:space:]]) ]]; then | |
echo "$language is in allowed list"; | |
echo 'LANGUAGE='$language >> $GITHUB_ENV; | |
echo 'SELECTED_LANGUAGE='$language >> $GITHUB_ENV; | |
else | |
echo "$language is not allowed"; | |
echo 'SELECTED_LANGUAGE=Multiple Languages' >> $GITHUB_ENV; | |
fi | |
- name: Get project data | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
ORGANIZATION: microsoft | |
PROJECT_NUMBER: 220 | |
run: | | |
gh api graphql -f query=' | |
query($org: String!, $number: Int!) { | |
organization(login: $org){ | |
projectV2(number: $number) { | |
id | |
fields(first:20) { | |
nodes { | |
... 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 'LANGUAGE_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .id' project_data.json) >> $GITHUB_ENV | |
LANGUAGE_OPTION_ID=$(jq --arg lang "$SELECTED_LANGUAGE" '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .options[] | select(.name==$lang) | .id' project_data.json) | |
echo "LANGUAGE_OPTION_ID=$LANGUAGE_OPTION_ID" >> $GITHUB_ENV | |
- name: Add Issue or PR to project | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
ISSUE_ID: ${{ github.event_name == 'issues' && github.event.issue.node_id || github.event.pull_request.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 Language to Project | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
run: | | |
gh api graphql -f query=' | |
mutation ( | |
$project: ID! | |
$item: ID! | |
$language_field: ID! | |
$language_value: String! | |
) { | |
set_status: updateProjectV2ItemFieldValue(input: { | |
projectId: $project | |
itemId: $item | |
fieldId: $language_field | |
value: {singleSelectOptionId: $language_value} | |
}) { | |
projectV2Item { | |
id | |
} | |
} | |
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f language_field=$LANGUAGE_FIELD_ID -f language_value=${{ env.LANGUAGE_OPTION_ID }} --silent | |
- name: Get label for selected language in repository | |
if: ${{ env.SELECTED_LANGUAGE != 'Multiple Languages'}} | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
run: | | |
gh api graphql -f query=' | |
query($repoOwner: String!, $repoName: String!) { | |
repository(owner: $repoOwner, name: $repoName) { | |
id, | |
labels(first: 100) { | |
nodes{ | |
id, | |
name | |
} | |
} | |
} | |
}' -f repoOwner=${{github.repository_owner}} -f repoName=${{github.event.repository.name}} > issue_data.json | |
echo 'LANGUAGELABEL_ID='$(jq --arg lang "$SELECTED_LANGUAGE" '.data.repository.labels.nodes[] | select(.name==$lang) | .id' issue_data.json) >> $GITHUB_ENV | |
- name: Add label to issue | |
if: ${{ env.SELECTED_LANGUAGE != 'Multiple Languages'}} | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
ISSUE_ID: ${{ github.event_name == 'issues' && github.event.issue.node_id || github.event.pull_request.node_id }} | |
run: | | |
gh api graphql -f query=' | |
mutation ( | |
$issue: ID! | |
$label: ID! | |
) { | |
addLabelsToLabelable(input: { | |
labelableId: $issue | |
labelIds : [$label] | |
}) { | |
clientMutationId | |
} | |
}' -f issue=$ISSUE_ID -f label=$LANGUAGELABEL_ID --silent |