diff --git a/.github/workflows/issues.yaml b/.github/workflows/issues.yaml index 6aae5063..e4a5b680 100644 --- a/.github/workflows/issues.yaml +++ b/.github/workflows/issues.yaml @@ -1,28 +1,49 @@ -name: Issues Automation +name: Sync issue to Azure DevOps work item on: issues: - types: [opened, edited, deleted, closed, reopened, labeled, unlabeled, assigned] - + types: + [opened, edited, deleted, closed, reopened, labeled, unlabeled, assigned] + concurrency: group: issue-${{ github.event.issue.number }} cancel-in-progress: false +# Extra permissions needed to login with Entra ID service principal via federated identity +permissions: + id-token: write + issues: write + jobs: ado: - name: Sync issue to Azure DevOps runs-on: ubuntu-latest + environment: + name: issues steps: - - uses: danhellem/github-actions-issue-to-work-item@v2.2 + # Auth using Azure Service Principals was added as a part of v2.3 + # reference: https://github.com/danhellem/github-actions-issue-to-work-item/pull/143 + - name: Login to Azure + uses: azure/login@v2 + with: + client-id: ${{ vars.AZURE_SP_DEVOPS_SYNC_CLIENT_ID }} + tenant-id: ${{ vars.AZURE_SP_DEVOPS_SYNC_TENANT_ID }} + allow-no-subscriptions: true + - name: Get Azure DevOps token + id: get_ado_token + run: + # The resource ID for Azure DevOps is always 499b84ac-1321-427f-aa17-267ca6975798 + # https://learn.microsoft.com/azure/devops/integrate/get-started/authentication/service-principal-managed-identity + echo "ADO_TOKEN=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv)" >> $GITHUB_ENV + - name: Sync issue to Azure DevOps + uses: danhellem/github-actions-issue-to-work-item@v2.3 env: - ado_token: "${{ secrets.ADO_AOCTO_BOT_TOKEN }}" - github_token: "${{ secrets.GH_RAD_CI_BOT_PAT }}" - ado_organization: "azure-octo" - ado_project: "Incubations" + ado_token: ${{ env.ADO_TOKEN }} + github_token: '${{ secrets.GH_RAD_CI_BOT_PAT }}' + ado_organization: 'azure-octo' + ado_project: 'Incubations' ado_area_path: "Incubations\\Radius" ado_iteration_path: "Incubations\\Radius" - ado_wit: "GitHub Issue" - ado_new_state: "New" - ado_active_state: "Active" - ado_close_state: "Closed" - ado_wit: "GitHub Issue" + ado_new_state: 'New' + ado_active_state: 'Active' + ado_close_state: 'Closed' + ado_wit: 'GitHub Issue'