-
Notifications
You must be signed in to change notification settings - Fork 26
115 lines (99 loc) · 4.04 KB
/
bitbar-run.yaml
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
name: Run tests in BitBar Cloud
on:
workflow_call:
inputs:
bitbar-project-id:
description: BitBar project id
type: string
default: 207050144
bitbar-device-group-id:
description: The device group id to run tests against
type: string
default: 45011
bitbar-os-type:
description: OS Type
type: string
default: IOS
bitbar-framework-id:
description: The framework id
type: string
default: 590
outputs:
bitbar-run-id:
description: The newly created run id in BitBar
value: ${{ jobs.bitbar-run.outputs.bitbar_run_id }}
secrets:
# To obtain a new API key: https://cloud.bitbar.com/#user/security-center
BITBAR_API_KEY:
description: BitBar API Key
required: true
SLACK_WEBHOOK_URL:
description: 'Slack Notifier Incoming Webhook URL'
required: true
jobs:
bitbar-run:
runs-on: ubuntu-latest
outputs:
bitbar_run_id: ${{ steps.bitbar_run_id.outputs.bitbar_run_id }}
steps:
# Get the test artifacts prepared in previous step
- name: Get FRTestHost.ipa BitBar artifact
uses: actions/download-artifact@v3
with:
name: FRTestHost.ipa
- name: Get the FRAuthTests.xctest.zip BitBar artifact
uses: actions/download-artifact@v3
with:
name: FRAuthTests.xctest.zip
- name: Unzip FRTestHost.ipa and FRAuthTests.xctest.zip
run: |
unzip -o FRTestHost.ipa
unzip -o FRAuthTests.xctest.zip
- name: Upload FRTestHost.ipa to BitBar
run: |
echo "BITBAR_APP_FILE_ID=$(curl -X POST -u ${{ secrets.BITBAR_API_KEY }}: https://cloud.bitbar.com/api/me/files -F "[email protected]" | jq '.id')" >> $GITHUB_ENV
- name: Upload FRAuthTests.xctest.zip to BitBar
run: |
echo "BITBAR_TEST_FILE_ID=$(curl -X POST -u ${{ secrets.BITBAR_API_KEY }}: https://cloud.bitbar.com/api/me/files -F "[email protected]" | jq '.id')" >> $GITHUB_ENV
- name: Prepare BitBar run configuration file
run: |
(
echo "{"
echo "\"osType\":\"${{ inputs.bitbar-os-type }}\","
echo "\"projectId\":${{ inputs.bitbar-project-id }},"
echo "\"frameworkId\":${{ inputs.bitbar-framework-id }},"
echo "\"deviceGroupId\":${{ inputs.bitbar-device-group-id }},"
echo "\"files\":["
echo " {\"id\":${{ env.BITBAR_APP_FILE_ID }}, \"action\": \"INSTALL\"},"
echo " {\"id\":${{ env.BITBAR_TEST_FILE_ID }}, \"action\": \"RUN_TEST\"}"
echo "]"
echo "}"
) > bitbar-run-configuration.txt
- name: Display bitbar-run-configuration.txt
run: |
cat bitbar-run-configuration.txt
# Start the test run
- name: Start a test run
run: |
echo "BITBAR_TEST_RUN_ID=$(curl -H 'Content-Type: application/json' -u ${{ secrets.BITBAR_API_KEY }}: https://cloud.bitbar.com/api/me/runs --data-binary @bitbar-run-configuration.txt | jq '.id')" >> $GITHUB_ENV
# Set bitbar_run_id as output of the workflow. This is needed for the next workflow to continue
- name: Set the bitbar_run_id output
id: bitbar_run_id
run: echo "::set-output name=bitbar_run_id::${{ env.BITBAR_TEST_RUN_ID }}"
# Send slack notification ONLY if any of the steps above fail
- name: Send slack notification
uses: 8398a7/action-slack@v3
with:
status: custom
fields: all
custom_payload: |
{
attachments: [{
title: ':no_entry: Failed to start BitBar test run!',
color: 'danger',
text: `\nWorkflow: ${process.env.AS_WORKFLOW} -> ${process.env.AS_JOB}\nPull request: ${process.env.AS_PULL_REQUEST}\nCommit: ${process.env.AS_COMMIT} by ${process.env.AS_AUTHOR}`,
}]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: failure()