forked from OKEAMAH/datatracker
-
Notifications
You must be signed in to change notification settings - Fork 0
109 lines (96 loc) · 3.84 KB
/
tests-az.yml
File metadata and controls
109 lines (96 loc) · 3.84 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
name: Tests (Azure Test)
on:
workflow_dispatch:
jobs:
main:
name: Run Tests on Azure temp VM
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Launch VM on Azure
id: azlaunch
run: |
echo "Authenticating to Azure..."
az login --service-principal -u ${{ secrets.AZ_TESTS_APP_ID }} -p ${{ secrets.AZ_TESTS_PWD }} --tenant ${{ secrets.AZ_TESTS_TENANT_ID }}
echo "Creating VM..."
vminfo=$(az vm create \
--resource-group ghaDatatrackerTests \
--name tmpGhaVM2 \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--priority Spot \
--size Standard_D4as_v5 \
--max-price -1 \
--os-disk-size-gb 30 \
--eviction-policy Delete \
--nic-delete-option Delete \
--output tsv \
--query "publicIpAddress")
echo "ipaddr=$vminfo" >> "$GITHUB_OUTPUT"
echo "VM Public IP: $vminfo"
cat ~/.ssh/id_rsa > ${{ github.workspace }}/prvkey.key
ssh-keyscan -t rsa $vminfo >> ~/.ssh/known_hosts
- name: Remote SSH into VM
uses: appleboy/ssh-action@029f5b4aeeeb58fdfe1410a5d17f967dacf36262
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
host: ${{ steps.azlaunch.outputs.ipaddr }}
port: 22
username: azureuser
command_timeout: 60m
key_path: ${{ github.workspace }}/prvkey.key
envs: GITHUB_TOKEN
script_stop: true
script: |
export DEBIAN_FRONTEND=noninteractive
lsb_release -a
sudo apt-get update
sudo apt-get upgrade -y
echo "Installing Docker..."
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
echo "Starting Containers..."
sudo docker network create dtnet
sudo docker run -d --name db --network=dtnet ghcr.io/ietf-tools/datatracker-db:latest &
sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:latest sleep infinity &
wait
echo "Cloning datatracker repo..."
sudo docker exec app git clone --depth=1 https://github.com/ietf-tools/datatracker.git .
echo "Prepare tests..."
sudo docker exec app chmod +x ./dev/tests/prepare.sh
sudo docker exec app sh ./dev/tests/prepare.sh
echo "Running checks..."
sudo docker exec app ietf/manage.py check
sudo docker exec app ietf/manage.py migrate --fake-initial
echo "Running tests..."
sudo docker exec app ietf/manage.py test -v2 --validate-html-harder --settings=settings_test
- name: Destroy VM + resources
if: always()
shell: pwsh
run: |
echo "Destroying VM..."
az vm delete -g ghaDatatrackerTests -n tmpGhaVM2 --yes --force-deletion true
$resourceOrderRemovalOrder = [ordered]@{
"Microsoft.Compute/virtualMachines" = 0
"Microsoft.Compute/disks" = 1
"Microsoft.Network/networkInterfaces" = 2
"Microsoft.Network/publicIpAddresses" = 3
"Microsoft.Network/networkSecurityGroups" = 4
"Microsoft.Network/virtualNetworks" = 5
}
echo "Fetching remaining resources..."
$resources = az resource list --resource-group ghaDatatrackerTests | ConvertFrom-Json
$orderedResources = $resources
| Sort-Object @{
Expression = {$resourceOrderRemovalOrder[$_.type]}
Descending = $False
}
echo "Deleting remaining resources..."
$orderedResources | ForEach-Object {
az resource delete --resource-group ghaDatatrackerTests --ids $_.id --verbose
}
echo "Logout from Azure..."
az logout