Build iAPS (dev-bo) #181
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 4. Build iAPS | |
run-name: Build iAPS (${{ github.ref_name }}) | |
on: | |
workflow_dispatch: | |
workflow_call: | |
## Remove the "#" sign from the beginning of the line below to get automated builds on push (code changes in your repository) | |
#push: | |
schedule: | |
- cron: '30 04 1 * *' # Runs at 04:30 UTC on the 1st every month | |
env: | |
TARGET_BRANCH: ${{ github.ref_name }} # branch on fork to build from | |
jobs: | |
build: | |
runs-on: macos-13 | |
permissions: | |
contents: write | |
if: | # runs if started manually, or if sync schedule is set and enabled and scheduled on the first Saturday each month, or if sync schedule is set and enabled and new commits were found | |
github.event_name == 'workflow_dispatch' || | |
(needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && | |
(vars.SCHEDULED_BUILD != 'false' && github.event.schedule == '0 6 1 * *') || | |
(vars.SCHEDULED_SYNC == 'true' && needs.check_latest_from_upstream.outputs.NEW_COMMITS == 'true' ) | |
) | |
steps: | |
- name: Select Xcode version | |
run: "sudo xcode-select --switch /Applications/Xcode_15.0.1.app/Contents/Developer" | |
- name: Checkout Repo for syncing | |
if: | | |
needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && | |
vars.SCHEDULED_SYNC == 'true' | |
uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GH_PAT }} | |
ref: ${{ env.TARGET_BRANCH }} | |
- name: Sync upstream changes | |
if: | # do not run the upstream sync action on the upstream repository | |
needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && | |
vars.SCHEDULED_SYNC == 'true' && github.repository_owner != 'Artificial-Pancreas' | |
id: sync | |
uses: aormsby/[email protected] | |
with: | |
target_sync_branch: ${{ env.TARGET_BRANCH }} | |
shallow_since: 6 months ago | |
target_repo_token: ${{ secrets.GH_PAT }} | |
upstream_sync_branch: ${{ env.UPSTREAM_BRANCH }} | |
upstream_sync_repo: ${{ env.UPSTREAM_REPO }} | |
# Display a sample message based on the sync output var 'has_new_commits' | |
- name: New commits found | |
if: | | |
needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && | |
vars.SCHEDULED_SYNC == 'true' && steps.sync.outputs.has_new_commits == 'true' | |
run: echo "New commits were found to sync." | |
- name: No new commits | |
if: | | |
needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && | |
vars.SCHEDULED_SYNC == 'true' && steps.sync.outputs.has_new_commits == 'false' | |
run: echo "There were no new commits." | |
- name: Show value of 'has_new_commits' | |
if: | | |
needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' | |
&& vars.SCHEDULED_SYNC == 'true' | |
run: | | |
echo ${{ steps.sync.outputs.has_new_commits }} | |
echo "NEW_COMMITS=${{ steps.sync.outputs.has_new_commits }}" >> $GITHUB_OUTPUT | |
- name: Checkout Repo for building | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.TARGET_BRANCH }} | |
# Patch Fastlane Match to not print tables | |
- name: Patch Match Tables | |
run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" | |
# Install project dependencies | |
- name: Install project dependencies | |
run: bundle install | |
# Sync the GitHub runner clock with the Windows time server (workaround as suggested in https://github.com/actions/runner/issues/2996) | |
- name: Sync clock | |
run: sudo sntp -sS time.windows.com | |
# Build signed iAPS IPA file | |
- name: Fastlane Build & Archive | |
run: bundle exec fastlane build_iAPS | |
env: | |
TEAMID: ${{ secrets.TEAMID }} | |
GH_PAT: ${{ secrets.GH_PAT }} | |
FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} | |
FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} | |
FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} | |
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
# Upload to TestFlight | |
- name: Fastlane upload to TestFlight | |
run: bundle exec fastlane release | |
env: | |
TEAMID: ${{ secrets.TEAMID }} | |
GH_PAT: ${{ secrets.GH_PAT }} | |
FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} | |
FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} | |
FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} | |
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
# Upload Build artifacts | |
- name: Upload build log, IPA and Symbol artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-artifacts | |
path: | | |
artifacts | |
buildlog |