2121 # The type of runner that the job will run on
2222 runs-on : ubuntu-latest
2323
24+ # Variables for creating the leb environment
25+ env :
26+ RESOURCE_GROUP : AzureDataPipelineTools_CI
27+ LAB_NAME : AzureDataPipelineTools
28+ ARM_TEMPLATE_NAME : sqlcollaborative_AzureDataPipelineTools
29+
30+
2431 # Steps represent a sequence of tasks that will be executed as part of the job
2532 steps :
2633 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
@@ -32,13 +39,110 @@ jobs:
3239 with :
3340 creds : ' ${{ secrets.AZURE_DEV_TEST_LABS_CREDENTIALS }}'
3441
35- - name : Azure CLI script
42+ # --raw-output is requiored on all jq commands that select strings, otherwise they come out with the quotes, which is interpreted as a command, and it likely won't exist!
43+ - name : Create DevTest Labs Environment
44+ id : create-devtest-labs-environment
3645 uses : azure/CLI@v1
3746 with :
38- # azcliversion: 2.0.72
47+ # azcliversion: 2.24.0 # Versions prior to this have a bug creating environments
3948 inlineScript : |
40- az version
41- az account show
49+ echo "========================================================================================================================================================================================================"
50+ echo "Azure CLI Version: $(az version | jq '."azure-cli"')"
51+ echo
52+ echo "Connection info:"
53+ az account show | jq '. | {tenantId: .tenantId, subscriptionName: .name, userName: .user.name, userType: .user.type}'
54+ echo
55+
56+ ARTIFACT_SOURCE_NAME=$(az lab artifact-source list --resource-group $RESOURCE_GROUP \
57+ --lab-name $LAB_NAME \
58+ | jq --raw-output \
59+ '.[] | select( .uri == "https://github.com/sqlcollaborative/AzureDataPipelineTools.git" ) | .name' \
60+ )
61+
62+ echo "Artifact Source Name: $ARTIFACT_SOURCE_NAME"
63+
64+ BRANCH_NAME=${GITHUB_REF#*refs/heads/}
65+ echo "Branch Name: $BRANCH_NAME"
66+
67+ PARAMETERS_FILE="$(pwd)/azuredeploy.parameters.json"
68+ echo $'[ { "name":"'branch'", "value":"'$BRANCH_NAME'" }, { "name":"'commit'", "value":"'$GITHUB_SHA'" } ]' \
69+ | jq '.' > "$PARAMETERS_FILE"
70+ cat $PARAMETERS_FILE
71+
72+ ENVIRONMENT_INSTANCE_NAME='CI_Build___'"${BRANCH_NAME////__}"'___('"${GITHUB_SHA:0:8}"')'
73+ echo "Environment Instance Name: $ENVIRONMENT_INSTANCE_NAME"
74+
75+ echo "::set-output name=ENVIRONMENT_INSTANCE_NAME::$ENVIRONMENT_INSTANCE_NAME"
76+
77+ ENVIRONMENT_CREATE_OUTPUT=$(az lab environment create --resource-group $RESOURCE_GROUP \
78+ --lab-name $LAB_NAME \
79+ --name $ENVIRONMENT_INSTANCE_NAME \
80+ --artifact-source-name $ARTIFACT_SOURCE_NAME \
81+ --arm-template $ARM_TEMPLATE_NAME \
82+ --parameter "@$PARAMETERS_FILE" \
83+ | jq '.'
84+ )
85+
86+ echo "Output from 'az lab environment create'"
87+ echo $ENVIRONMENT_CREATE_OUTPUT
88+
89+ PROVISIONING_STATE=$(echo $ENVIRONMENT_CREATE_OUTPUT | jq --raw-output '.provisioningState')
90+ echo "Provisioning State: $PROVISIONING_STATE"
91+
92+ ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME=$(echo $ENVIRONMENT_CREATE_OUTPUT | jq --raw-output '.resourceGroupId' | xargs basename)
93+ echo "Resource Group Id: $ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME"
94+
95+ echo "::set-output name=ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME::$ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME"
96+
97+ if [ $PROVISIONING_STATE != "Succeeded" ]; then
98+ echo "::error Error provisioning lab environment"
99+ exit 1
100+ fi
101+
102+ echo "========================================================================================================================================================================================================"
103+
104+
105+ - name : Get DevTest Labs Environment Resource Info
106+ id : get-devtest-labs-environment-resources
107+ uses : azure/CLI@v1
108+ with :
109+ # azcliversion: 2.24.0 # Versions prior to this have a bug creating environments
110+ inlineScript : |
111+ echo "========================================================================================================================================================================================================"
112+ echo "Azure CLI Version: $(az version | jq '."azure-cli"')"
113+ echo
114+ echo "Connection info:"
115+ az account show | jq '. | {tenantId: .tenantId, subscriptionName: .name, userName: .user.name, userType: .user.type}'
116+ echo
117+
118+ RESOURCE_GROUP="${{ steps.create-devtest-labs-environment.outputs.ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME }}"
119+
120+ ENVIRONMENT_INSTANCE_RESOURCES=$(az resource list --resource-group $RESOURCE_GROUP \
121+ | jq '.[] | { name: .name, id: .id, provisioningState: .provisioningState, kind: .kind, location: .location, tags: .tags }'
122+ )
123+
124+ echo "Output from 'az resource list --resource-group $RESOURCE_GROUP'"
125+ echo
126+ echo $ENVIRONMENT_INSTANCE_RESOURCES
127+
128+ echo "::set-output name=ENVIRONMENT_INSTANCE_RESOURCES::$ENVIRONMENT_INSTANCE_RESOURCES"
129+
130+ echo "========================================================================================================================================================================================================"
131+
132+
133+
134+
135+ # Runs a set of commands using the runners shell
136+ - name : Run a multi-line script
137+ run : |
138+ echo "ENVIRONMENT_INSTANCE_NAME: ${{ steps.create-devtest-labs-environment.outputs.ENVIRONMENT_INSTANCE_NAME }}"
139+ echo "ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME: ${{ steps.create-devtest-labs-environment.outputs.ENVIRONMENT_INSTANCE_RESOURCE_GROUP_NAME }}"
140+ echo "ENVIRONMENT_INSTANCE_RESOURCES: ${{ steps.get-devtest-labs-environment-resources.outputs.ENVIRONMENT_INSTANCE_RESOURCES }}"
141+ # az lab arm-template show --resource-group $RESOURCE_GROUP \
142+ # --lab-name $LAB_NAME \
143+ # --artifact-source-name $ARTIFACT_SOURCE_NAME \
144+ # --name $ARM_TEMPLATE_NAME
145+
42146
43147 # # Once logged into Azure, run a test command to check it worked
44148 # - name: Azure CLI script
0 commit comments