-
Notifications
You must be signed in to change notification settings - Fork 3
133 lines (115 loc) · 3.98 KB
/
test_against_testrig.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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: "Test against testrig"
run-name: ${{ inputs.run-name }}
# Needed secrets:
# - DEPLOY_KEY: private ssh key to access [email protected]
# - DEPLOY_KNOWN_HOSTS: known hosts including [email protected]
# - TAILSCALE_OAUTH_CLIENT, TAILSCALE_OAUTH_SECRET: OAuth credentials for tailscale
# - TESTRIG_WIFI_NAME, TESTRIG_WIFI_KEY, TESTRIG_WIFI_ENCKEY: wifi credentials to cloak
on:
workflow_dispatch:
inputs:
target:
description: "Target DUT to deploy to"
required: true
default: 'pic'
image:
description: "Image to deploy"
required: false
default: '1.0.0-latest'
e2e-branch:
description: "Branch to run E2E tests from"
required: false
default: 'master'
run-name:
description: "Distinct run-name to use"
required: false
jobs:
deploy:
name: "🏗 Deploy"
runs-on: ubuntu-latest
outputs:
target: ${{ env.TARGET }}
image: ${{ env.IMAGE }}
steps:
- name: "🧥 Cloak some stuff"
env:
TESTRIG_WIFI_NAME: ${{ secrets.TESTRIG_WIFI_NAME }}
TESTRIG_WIFI_KEY: ${{ secrets.TESTRIG_WIFI_KEY }}
TESTRIG_WIFI_ENCKEY: ${{ secrets.TESTRIG_WIFI_ENCKEY }}
run: |
echo "::add-mask::$TESTRIG_WIFI_NAME"
echo "::add-mask::$TESTRIG_WIFI_KEY"
echo "::add-mask::$TESTRIG_WIFI_ENCKEY"
- name: "🔑 Install SSH key in agent"
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.DEPLOY_KEY }}
known_hosts: ${{ secrets.DEPLOY_KNOWN_HOSTS }}
- name: "🌐 Connect to tailscale network"
uses: tailscale/github-action@v2
with:
oauth-client-id: ${{ secrets.TAILSCALE_OAUTH_CLIENT }}
oauth-secret: ${{ secrets.TAILSCALE_OAUTH_SECRET }}
tags: tag:github-runner
- name: ✔ Check if tailscale is running
run: |
tailscale --version
tailscale status
tailscale netcheck
ping -c 3 flashhost
ssh fab@flashhost flashhost_list_images
- name: 🔍 Determine image
run: |
IMAGE=${{ github.event.inputs.image }}
if [[ "$IMAGE" == https://* ]] || [[ $IMAGE == http://* ]]
then
URL="$IMAGE"
IMAGE="github-run-${{ github.run_id }}-${{ github.run_attempt }}"
ssh fab@flashhost flashhost_fetch_image:"$URL",$IMAGE
fi
echo "Image: $IMAGE"
echo "IMAGE=$IMAGE" >> $GITHUB_ENV
- name: "🔥 Flash & provision image"
env:
TARGET: ${{ github.event.inputs.target }}
IMAGE: ${{ env.IMAGE }}
run: |
ssh -o SendEnv=TARGET fab@flashhost flashhost_flash_and_provision:$IMAGE octopi_wait:headless=1
- name: "🐙 Preconfigure OctoPrint"
env:
TARGET: ${{ github.event.inputs.target }}
run: |
ssh -o SendEnv=TARGET fab@flashhost octopi_test_provisioned:headless=1,config=configs/e2e
- name: "🧹 Clean up if needed"
if: always()
run: |
IMAGE="${{ env.IMAGE }}"
if [[ "$IMAGE" == github-run-* ]]
then
ssh fab@flashhost flashhost_remove_image:$IMAGE
fi
e2e:
name: "🧪 E2E"
runs-on: ubuntu-latest
needs: deploy
steps:
- name: "🌐 Connect to tailscale network"
uses: tailscale/github-action@v2
with:
oauth-client-id: ${{ secrets.TAILSCALE_OAUTH_CLIENT }}
oauth-secret: ${{ secrets.TAILSCALE_OAUTH_SECRET }}
tags: tag:github-runner
- name: ✔ Check if tailscale is running and make sure DUT is up
run: |
tailscale --version
tailscale status
tailscale netcheck
curl http://flashhost/${{ github.event.inputs.target }}/
- name: "🎭 Run E2E tests"
uses: OctoPrint/actions/e2e@main
with:
ref: ${{ github.event.inputs.e2e-branch }}
server: "http://flashhost/${{ github.event.inputs.target }}"
- name: 📷 Check webcam
run: |
curl -i -o webcam.jpg http://flashhost/${{ github.event.inputs.target }}/webcam/?action=snapshot