forked from sebastienblanc/todo-demo-app
120 lines (97 loc) · 4.38 KB
/
pull-request-run-e2e-tests.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
name: PR Run E2E Tests
on:
pull_request:
types: [ labeled ]
jobs:
create-e2e-environment:
if: ${{ github.event.label.name == 'e2e' }}
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- id: create-environment
name: Create and deploy Qovery E2E environment
env:
QOVERY_CLI_ACCESS_TOKEN: ${{ secrets.QOVERY_CLI_ACCESS_TOKEN }}
run: |
# Download and install Qovery CLI
curl -s https://get.qovery.com | bash
echo "Organization name: ${{ vars.QOVERY_ORGANIZATION_NAME }}"
echo "Project name: ${{ vars.QOVERY_PROJECT_NAME }}"
echo "Blueprint name: ${{ vars.QOVERY_BLUEPRINT_ENVIRONMENT_NAME }}"
new_environment_name="${GITHUB_HEAD_REF}"
echo "Let's clone '${{ vars.QOVERY_BLUEPRINT_ENVIRONMENT_NAME }}' environment into '$new_environment_name' environment"
qovery environment clone \
--organization "${{ vars.QOVERY_ORGANIZATION_NAME }}" \
--project "${{ vars.QOVERY_PROJECT_NAME }}" \
--environment "${{ vars.QOVERY_BLUEPRINT_ENVIRONMENT_NAME }}" \
--new-environment-name "$new_environment_name"
qovery container update \
--organization "${{ vars.QOVERY_ORGANIZATION_NAME }}" \
--project "${{ vars.QOVERY_PROJECT_NAME }}" \
--environment "${{ vars.QOVERY_BLUEPRINT_ENVIRONMENT_NAME }}" \
--container "${{ vars.QOVERY_APPLICATION_NAME }}" \
--tag ${{ github.sha }}
qovery environment deploy \
--organization "${{ vars.QOVERY_ORGANIZATION_NAME }}" \
--project "${{ vars.QOVERY_PROJECT_NAME }}" \
--environment "$new_environment_name" \
-w
qovery_status_markdown_output=`qovery service list \
--organization "${{ vars.QOVERY_ORGANIZATION_NAME }}" \
--project "${{ vars.QOVERY_PROJECT_NAME }}" \
--environment "$new_environment_name" \
--markdown`
echo "QOVERY_STATUS_MARKDOWN_OUTPUT<<EOF" >> "$GITHUB_OUTPUT"
echo "$qovery_status_markdown_output" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
- name: PR Comment with URL
uses: mshick/add-pr-comment@v2
with:
message-id: qovery-e2e-environment-status
message: |
${{ steps.create-environment.outputs.QOVERY_STATUS_MARKDOWN_OUTPUT }}
run-e2e-tests:
if: ${{ github.event.label.name == 'e2e' }}
runs-on: ubuntu-latest
needs: create-e2e-environment
permissions:
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- id: run-e2e
name: Run E2E tests
env:
QOVERY_CLI_ACCESS_TOKEN: ${{ secrets.QOVERY_CLI_ACCESS_TOKEN }}
run: |
# Download and install Qovery CLI
curl -s https://get.qovery.com | bash
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
new_environment_name="${GITHUB_HEAD_REF}"
api_domain=`qovery container domain list \
--organization "${{ vars.QOVERY_ORGANIZATION_NAME }}" \
--project "${{ vars.QOVERY_PROJECT_NAME }}" \
--environment "$new_environment_name" \
--container "${{ vars.QOVERY_APPLICATION_NAME }}" | grep "BUILT_IN_DOMAIN" | head -1 | awk '{print $5}' | sed -e 's/\x1b\[[0-9;]*m//g'`
echo "api_domain: $api_domain"
api_host="https://$api_domain"
echo "API_HOST: $api_host"
e2e_report=`k6 --no-color -q -e API_HOST=$api_host run e2e/e2e.js`
echo "E2E_REPORT<<EOF" >> $GITHUB_OUTPUT
echo "$e2e_report" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Display E2E Report
uses: mshick/add-pr-comment@v2
with:
message-id: e2e-report
message: |
E2E Tests Report
--
```
${{ steps.run-e2e.outputs.E2E_REPORT }}
```