-
Notifications
You must be signed in to change notification settings - Fork 26
136 lines (118 loc) · 5.91 KB
/
bitbar-prepare-artifacts.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Prepare device farm artifacts
on:
workflow_call:
secrets:
CONFIG_E2E_CLOUD:
description: 'e2e tests configuration file'
required: true
# 1. Open the keychain on your mac and export the signing certificate and private key in a Certificates.p12 file
# 2. Convert your certificate to Base64 string: `base64 Certificates.p12 | pbcopy`
# 3. Update the value of the CERTIFICATES_FILE_BASE64 action secret with the content of the clipboard
# 4. Update the CERTIFICATES_PASSWORD action secret with the one used during the export of the certificate from the keychain
CERTIFICATES_FILE_BASE64:
description: 'Apple signing certificate'
required: true
# The password for your Apple signing certificate
CERTIFICATES_PASSWORD:
description: 'Apple signing certificate p12 password'
required: true
# A new keychain will be created on the runner. The password be any new random string.
KEYCHAIN_PASSWORD:
description: 'Keychain password'
required: true
# 1. Find the 'com.forgerock.FRTestHost' provisioning profile (~/Library/MobileDevice/Provisioning\ Profiles)
# 2. Rename the file to `provisioning_profile.mobileprovision`
# 3. Zip the file: `zip provisioning_profile.mobileprovision.zip provisioning_profile.mobileprovision`
# 4. Convert the file to Base64 string: `base64 provisioning_profile.mobileprovision.zip | pbcopy`
# 5. Update the value of the BUILD_PROVISION_PROFILE_ZIP_BASE64 action secret with the content of the clipboard
BUILD_PROVISION_PROFILE:
description: 'Apple build provisioning profile'
required: true
SLACK_WEBHOOK_URL:
description: 'Slack Notifier Incoming Webhook URL'
required: true
jobs:
prepare-device-farm-artifacts:
runs-on: macos-14
steps:
# Clone the repo
- name: Clone the repository
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{github.event.pull_request.head.repo.full_name}}
fetch-depth: 0
# Setup config file for e2e tests
- name: Setup config file for e2e tests
env:
CONFIG_E2E_CLOUD: ${{ secrets.CONFIG_E2E_CLOUD }}
run: echo $CONFIG_E2E_CLOUD > FRTestHost/FRTestHost/SharedTestFiles/TestConfig/Config-live-01.json
# Install the Apple certificate and provisioning profile
- name: Install the Apple certificate and provisioning profile
run: |
# Create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH_ZIP=$RUNNER_TEMP/build_pp.mobileprovision.zip
PP_FILENAME=provisioning_profile.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# Import certificate and provisioning profile from secrets
echo -n ${{ secrets.CERTIFICATES_FILE_BASE64 }} | base64 --decode -o $CERTIFICATE_PATH
echo -n ${{ secrets.BUILD_PROVISION_PROFILE }} | base64 --decode -o $PP_PATH_ZIP
unzip $PP_PATH_ZIP
# Create temporary keychain
security create-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" $KEYCHAIN_PATH
# Import certificate to keychain
security import $CERTIFICATE_PATH -P "${{ secrets.CERTIFICATES_PASSWORD }}" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# Apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_FILENAME ~/Library/MobileDevice/Provisioning\ Profiles
# Set target Xcode version. For more details and options see:
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md
- name: Select Xcode
run: sudo xcode-select -switch /Applications/Xcode_15.4.app && /usr/bin/xcodebuild -version
- name: build-for-testing and sign
run: xcodebuild -scheme FRTestHostBitBar -sdk iphoneos17.5 -workspace SampleApps/FRExample.xcworkspace -configuration Debug clean build BUILD_DIR=~/build/ DEVELOPMENT_TEAM=JV6EC9KSN3 -allowProvisioningUpdates -destination generic/platform=iOS -derivedDataPath ~/build/derivedData/ build-for-testing
# Prepare BitBar artifacts:
- name: Prepare BitBar artifacts
run: |
pwd
ls -la
cd ~/build/Debug-iphoneos/
cp -r FRTestHost.app/PlugIns/FRAuthTests.xctest .
zip -r -X FRAuthTests.xctest.zip FRAuthTests.xctest
mkdir Payload
cp -r FRTestHost.app Payload/
zip --symlinks -qr FRTestHost.ipa Payload
# Publish e2e tests and app build artifacts
- name: Publish FRTestHost.ipa
uses: actions/upload-artifact@v3
if: success()
with:
name: FRTestHost.ipa
path: ~/build/Debug-iphoneos/FRTestHost.ipa
- name: Publish FRAuthTests.xctest.zip
uses: actions/upload-artifact@v3
if: success()
with:
name: FRAuthTests.xctest.zip
path: ~/build/Debug-iphoneos/FRAuthTests.xctest.zip
# 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 prepare BitBar test artifacts',
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()