fix(core): azure ci workflow (#23453)

The Azure pipelines CI generator had an invalid step

`displayName` can't be the first line of a step
This commit is contained in:
Isaac Mann 2024-05-16 15:11:58 -04:00 committed by GitHub
parent f1f2024ea8
commit 04b2067ad5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 52 additions and 45 deletions

View File

@ -3,6 +3,8 @@
Below is an example of an Azure Pipelines setup building and testing only what is affected. Below is an example of an Azure Pipelines setup building and testing only what is affected.
```yaml {% fileName="azure-pipelines.yml" %} ```yaml {% fileName="azure-pipelines.yml" %}
name: CI
trigger: trigger:
- main - main
pr: pr:
@ -11,7 +13,7 @@ pr:
variables: variables:
CI: 'true' CI: 'true'
${{ if eq(variables['Build.Reason'], 'PullRequest') }}: ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
NX_BRANCH: $(System.PullRequest.PullRequestId) # You can use $(System.PullRequest.PullRequestNumber if your pipeline is triggered by a PR from GitHub ONLY) NX_BRANCH: $(System.PullRequest.PullRequestNumber)
TARGET_BRANCH: $[replace(variables['System.PullRequest.TargetBranch'],'refs/heads/','origin/')] TARGET_BRANCH: $[replace(variables['System.PullRequest.TargetBranch'],'refs/heads/','origin/')]
BASE_SHA: $(git merge-base $(TARGET_BRANCH) HEAD) BASE_SHA: $(git merge-base $(TARGET_BRANCH) HEAD)
${{ if ne(variables['Build.Reason'], 'PullRequest') }}: ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
@ -26,16 +28,11 @@ jobs:
steps: steps:
- checkout: self - checkout: self
fetchDepth: 0 fetchDepth: 0
# Set Azure Devops CLI default settings # Set Azure Devops CLI default settings
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -44,18 +41,23 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
# This line enables distribution # Connect your workspace on nx.app and uncomment this to enable task distribution.
# The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested
# - script: npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci" # - script: yarn nx-cloud start-ci-run --distribute-on="5 linux-medium-js" --stop-agents-after="e2e-ci"
- script: npm ci
# Required for nx affected if we're on a branch - script: yarn install --frozen-lockfile
- script: git branch --track main origin/main - script: git branch --track main origin/main
condition: eq(variables['Build.Reason'], 'PullRequest') condition: eq(variables['Build.Reason'], 'PullRequest')
- script: npx nx-cloud record -- nx format:check --base=$(BASE_SHA) # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
- script: npx nx affected --base=$(BASE_SHA) -t lint test build e2e-ci # - script: yarn nx-cloud record -- echo Hello World
- script: yarn nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) lint test build
- script: yarn nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) --parallel 1 e2e-ci
``` ```
## Get the Commit of the Last Successful Build ## Get the Commit of the Last Successful Build
@ -66,20 +68,26 @@ use [Azure Devops CLI](https://learn.microsoft.com/en-us/cli/azure/pipelines?vie
First, we configure Devops CLI First, we configure Devops CLI
```yaml ```yaml
# Set Azure Devops default settings # Set Azure Devops CLI default settings
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Configure Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
``` ```
Then we can query the pipelines API (providing the auth token) Then we can query the pipelines API (providing the auth token)
```yaml ```yaml
# Get last successfully commit infos from Azure Devops # Get last successfull commit from Azure Devops CLI
- bash: | - bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"")
if [ -z "$LAST_SHA" ]
then
echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA"
else
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi
displayName: 'Get last successful commit SHA' displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env: env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
``` ```
@ -87,9 +95,8 @@ Then we can query the pipelines API (providing the auth token)
We can target a specific build; in this example, we specified: We can target a specific build; in this example, we specified:
- The branch (--branch) - The branch (--branch)
- The pipeline ID (--definition-ids)
- The result type (--result) - The result type (--result)
- The number of the result (-top) - The number of the result (--top)
The command returns an entire JSON object with all the information. But we can narrow it down to the desired result with the `--query` param that uses [JMESPath](https://jmespath.org/) The command returns an entire JSON object with all the information. But we can narrow it down to the desired result with the `--query` param that uses [JMESPath](https://jmespath.org/)
format ([more details](https://learn.microsoft.com/en-us/cli/azure/query-azure-cli?tabs=concepts%2Cbash)) format ([more details](https://learn.microsoft.com/en-us/cli/azure/query-azure-cli?tabs=concepts%2Cbash))

View File

@ -30,11 +30,7 @@ jobs:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -43,6 +39,10 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
# Connect your workspace on nx.app and uncomment this to enable task distribution. # Connect your workspace on nx.app and uncomment this to enable task distribution.
# The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested
@ -246,11 +246,7 @@ jobs:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -259,6 +255,10 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
# Connect your workspace on nx.app and uncomment this to enable task distribution. # Connect your workspace on nx.app and uncomment this to enable task distribution.
# The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested
@ -483,11 +483,7 @@ jobs:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -496,6 +492,10 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
- script: npm install --prefix=$HOME/.local -g pnpm@8 - script: npm install --prefix=$HOME/.local -g pnpm@8
displayName: Install PNPM displayName: Install PNPM
@ -741,11 +741,7 @@ jobs:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\\"ci.sourceSha\\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -754,6 +750,10 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
# Connect your workspace on nx.app and uncomment this to enable task distribution. # Connect your workspace on nx.app and uncomment this to enable task distribution.
# The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "build" targets have been requested

View File

@ -27,11 +27,7 @@ jobs:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) - bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject)
displayName: 'Set default Azure DevOps organization and project' displayName: 'Set default Azure DevOps organization and project'
# Get last successfull commit from Azure Devops CLI # Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA' - bash: |
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"") LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"")
if [ -z "$LAST_SHA" ] if [ -z "$LAST_SHA" ]
then then
@ -40,6 +36,10 @@ jobs:
echo "Last successful commit SHA: $LAST_SHA" echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA" echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi fi
displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
<% if(packageManager == 'pnpm'){ %> <% if(packageManager == 'pnpm'){ %>
- script: npm install --prefix=$HOME/.local -g pnpm@8 - script: npm install --prefix=$HOME/.local -g pnpm@8