forked from Azure/azure-osconfig
-
Notifications
You must be signed in to change notification settings - Fork 0
86 lines (76 loc) · 4.27 KB
/
e2etest-provision-hosts.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
name: Provision Host VM
on:
workflow_call:
inputs:
environment:
description: The name of the target environment
type: string
required: true
distroName:
description: The name of the target distro
type: string
required: true
resourceGroupName:
description: The name of the target environment
type: string
required: true
jobs:
provision-hosts:
name: ${{ matrix.distroName }}
runs-on: ubuntu-latest
environment: ${{ inputs.environment }}
strategy:
fail-fast: false
matrix:
distroName: ${{ fromJson(inputs.distroName) }}
steps:
- uses: actions/checkout@v1
- name: Install Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: "latest"
terraform_wrapper: false
- name: Get GitHub runner token
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
id: runner_token
run: |
RUNNER_TOKEN=$(gh api --method POST -H "Accept: application/vnd.github.v3+json" /repos/Azure/azure-osconfig/actions/runners/registration-token | jq '.token')
echo "RUNNER_TOKEN=$RUNNER_TOKEN" >> $GITHUB_OUTPUT
echo ::add-mask::$RUNNER_TOKEN
- name: Provision VM - ${{ matrix.distroName }}
id: provision-vm
env:
ARM_CLIENT_ID: ${{ secrets.CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.TENANT_ID }}
working-directory: ./devops/terraform/host
run: |
target=`jq '.[] | select(.distroName=="${{ matrix.distroName }}")' ${{ github.workspace }}/devops/e2e/${{ secrets.E2E_ENV_FILE }}`
distroName=${{ matrix.distroName }}
echo "Using Target JSON: `echo $target | jq .`"
rg=${{ inputs.resourceGroupName }}
image_publisher=`echo $target | jq .image_publisher | tr -d \"`
image_offer=`echo $target | jq .image_offer | tr -d \"`
image_sku=`echo $target | jq .image_sku | tr -d \"`
image_version=`echo $target | jq .image_version | tr -d \"`
image_name=`echo $target | jq .image_name | tr -d \"`
gallery_name=`echo $target | jq .gallery_name | tr -d \"`
packagePattern=`echo $target | jq .packagePattern | tr -d \"`
device_id=`echo $target | jq .device_id | tr -d \"`
vm_size=`echo $target | jq .vm_size | tr -d \"`
location=`echo $target | jq .location | tr -d \"`
github_runner_tar_gz=`echo $target | jq .github_runner_tar_gz | tr -d \"`
cloud_init=`echo $target | jq .cloud_init | tr -d \"`
echo "device_id=$device_id" >> $GITHUB_OUTPUT
terraform init
if [[ "$gallery_name" != "null" ]]; then
echo Using compute gallery "$gallery_name"
terraform apply -var subscription_id="${{ secrets.SUBSCRIPTION_ID }}" -var tenant_id="${{ secrets.TENANT_ID }}" -var client_id="${{ secrets.CLIENT_ID }}" -var key_vault_id="${{ secrets.KEY_VAULT_ID }}" -var client_secret="${{ secrets.CLIENT_SECRET }}" -var resource_group_name="$rg" -var vm_name="$distroName" -var runner_token=${{ steps.runner_token.outputs.RUNNER_TOKEN }} -var image_name="$image_name" -var gallery_name="$gallery_name" -var vm_size=$vm_size -var location="$location" -var cloud_init="$cloud_init" -var github_runner_tar_gz_package="$github_runner_tar_gz" -auto-approve
else
echo Using Azure Marketplace Image
terraform apply -var subscription_id="${{ secrets.SUBSCRIPTION_ID }}" -var tenant_id="${{ secrets.TENANT_ID }}" -var client_id="${{ secrets.CLIENT_ID }}" -var key_vault_id="${{ secrets.KEY_VAULT_ID }}" -var client_secret="${{ secrets.CLIENT_SECRET }}" -var resource_group_name="$rg" -var vm_name="$distroName" -var runner_token=${{ steps.runner_token.outputs.RUNNER_TOKEN }} -var image_offer=$image_offer -var image_publisher=$image_publisher -var image_sku=$image_sku -var image_version=$image_version -var vm_size=$vm_size -var location="$location" -var cloud_init="$cloud_init" -var github_runner_tar_gz_package="$github_runner_tar_gz" -auto-approve
fi
runner=$rg-$distroName
echo Created self-hosted runner "$runner"