generated from StanfordSpezi/SpeziTemplateApplication
-
-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (126 loc) · 4.29 KB
/
deployment.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
#
# This source file is part of the ENGAGE-HF based on the Stanford Spezi Template Application project
#
# SPDX-FileCopyrightText: 2023 Stanford University
#
# SPDX-License-Identifier: MIT
#
name: Deployment
on:
push:
branches:
- main
workflow_dispatch:
inputs:
environment:
description: |
The GitHub deployment environment.
required: true
default: 'development'
type: choice
options:
- development
- staging
- production
version:
description: |
The semantic version of the app that should be released.
required: true
type: string
releasenotes:
description: |
Release notes of what changed in this version.
required: false
type: string
default: Bug fixes and performance improvements.
workflow_call:
inputs:
environment:
description: |
The GitHub deployment environment.
required: false
type: string
default: staging
version:
description: |
The semantic version of the app that should be released.
required: true
type: string
releasenotes:
description: |
Release notes of what changed in this version.
required: false
type: string
default: Bug fixes and performance improvements.
concurrency:
group: deployment
cancel-in-progress: false
jobs:
determineenvironment:
name: Determine Environment
runs-on: ubuntu-latest
outputs:
environment: ${{ steps.determineenvironment.outputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Determine Environment
id: determineenvironment
run: |
if [[ -z "${{ inputs.environment }}" ]]; then
echo "environment=staging" >> $GITHUB_OUTPUT
echo "environment: staging"
else
echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT
echo "environment: ${{ inputs.environment }}"
fi
vars:
name: Inject Environment Variables In Deployment Workflow
needs: determineenvironment
runs-on: ubuntu-latest
environment: ${{ needs.determineenvironment.outputs.environment }}
outputs:
appidentifier: ${{ vars.APP_IDENTIFIER }}
provisioningProfileName: ${{ vars.PROVISIONING_PROFILE_NAME }}
version: ${{ steps.script.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions-ecosystem/action-get-latest-tag@v1
id: get-latest-tag
with:
semver_only: true
initial_version: "2.0.0"
- id: script
run: |
echo "Injecting Environment Variables In Deployment Workflow ..."
echo "appidentifier: ${{ vars.APP_IDENTIFIER }}"
echo "provisioningProfileName: ${{ vars.PROVISIONING_PROFILE_NAME }}"
if [[ -z "${{ inputs.version }}" ]]; then
echo "version=${{ steps.get-latest-tag.outputs.tag }}" >> $GITHUB_OUTPUT
echo "version: ${{ steps.get-latest-tag.outputs.tag }}"
else
echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT
echo "version: ${{ inputs.version }}"
fi
echo "releasenotes: ${{ inputs.releasenotes }}"
buildandtest:
name: Build and Test
needs: determineenvironment
uses: ./.github/workflows/build-and-test.yml
permissions:
contents: read
secrets: inherit
iosapptestflightdeployment:
name: iOS App TestFlight Deployment
needs: [determineenvironment, vars, buildandtest]
uses: StanfordBDHG/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2
permissions:
contents: read
with:
runsonlabels: '["macOS", "self-hosted"]'
environment: ${{ needs.determineenvironment.outputs.environment }}
googleserviceinfoplistpath: 'ENGAGEHF/Supporting Files/GoogleService-Info.plist'
setupsigning: true
fastlanelane: deploy environment:"${{ needs.determineenvironment.outputs.environment }}" appidentifier:"${{ needs.vars.outputs.appidentifier }}" provisioningProfile:"${{ needs.vars.outputs.provisioningProfileName }}" versionname:"${{ needs.vars.outputs.version }}" releasenotes:"${{ inputs.releasenotes }}"
secrets: inherit