Skip to content

build(deps): bump swift 6.0.2 xcode 16.1 #71

build(deps): bump swift 6.0.2 xcode 16.1

build(deps): bump swift 6.0.2 xcode 16.1 #71

# This workflow performs a full End 2 End test of the App
# It runs the test on the last 5 iOS releases.
name: E2E Test with latest FusionAuth
on:
# Triggers the workflow on pull request events but only for default and protected branches
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
fusionauth-docker-image-version: "1.54.0"
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "e2e-test"
e2e-test:
name: End 2 End Test
permissions:
# required for all workflows
security-events: write
# only required for workflows in private repositories
actions: read
contents: read
# The type of runner that the job will run on
# https://xcodereleases.com/
# https://developer.apple.com/support/xcode/
# https://developer.apple.com/documentation/xcode-release-notes
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
destination: [ "platform=iOS Simulator,OS=18.1,name=iPhone 15" ]
xcode: [ "16.1" ]
simulator-platform: [ "iOS" ]
simulator-version: [ "18.1" ]
swift: [ "6.0.2" ]
os: [ "macos-14" ]
postgresql-version: [ "16" ]
include:
- destination: "platform=iOS Simulator,OS=18.1,name=iPhone 15"
xcode: "15.4"
simulator-platform: "iOS"
simulator-version: "18.1"
swift: "5.10.1"
os: "macos-14"
postgresql-version: "16"
- destination: "platform=iOS Simulator,OS=17.5,name=iPhone 15"
xcode: "15.4"
simulator-platform: "iOS"
simulator-version: "17.5"
swift: "5.10.1"
os: "macos-14"
postgresql-version: "16"
- destination: "platform=iOS Simulator,OS=16.4,name=iPhone 14"
xcode: "14.3.1"
simulator-platform: "iOS"
simulator-version: "16.4"
swift: "5.8.1"
os: "macos-13"
postgresql-version: "16"
- destination: "platform=iOS Simulator,OS=15.5,name=iPhone 13"
xcode: "14.3.1"
simulator-platform: "iOS"
simulator-version: "15.5"
swift: "5.8.1"
os: "macos-13"
postgresql-version: "16"
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Initialize the latest version of Xcode.
- name: Initialize latest xcode
uses: maxim-lobanov/[email protected]
with:
xcode-version: ${{ matrix.xcode }}
# Remove any other Xcode version.
- name: Remove old xcode versions
run: |
echo "Searching for Xcode versions:"
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1
echo "Removing old Xcode versions..."
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1 | grep -v ${{ matrix.xcode }} | xargs rm -rf
echo "Available Xcode versions after removal:"
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1
# Get the Xcode version.
- name: Get Xcode version
run: xcodebuild -version
# Install Xcodes.
- name: Install Xcodes
if: matrix.os == 'macos-13'
shell: bash
run: |
brew install aria2
brew install xcodes
# Install simulator platform.
- name: Install Simulator
if: matrix.os == 'macos-13'
shell: bash
run: |
sudo xcodes runtimes
sudo xcodes runtimes install '${{ matrix.simulator-platform }} ${{ matrix.simulator-version }}'
sudo xcodes runtimes
# Initialize Swift in the matrix specified version.
- name: Initialize Swift
if: matrix.swift != '6.0.2'
uses: swift-actions/[email protected]
with:
swift-version: ${{ matrix.swift }}
# Get the Swift version.
- name: Get Swift version
run: swift --version
# Checkout the repository.
- name: Checkout repository
uses: actions/[email protected]
# Docker deployment is failing because the current macos runner has an M-series processor runner without nested virtualization support.
# Setup Docker on macOS required by FusionAuth.
#- name: Setup Docker on macOS
# uses: douglascamata/setup-docker-macos-action@v1-alpha
# Create and start FusionAuth containers used by E2E test.
#- name: Start FusionAuth
# uses: fusionauth/fusionauth-github-action@v1
# with:
# FUSIONAUTH_VERSION: ${{ env.fusionauth-docker-image-version }}
# FUSIONAUTH_APP_KICKSTART_DIRECTORY_PATH: Samples/Quickstart/fusionauth/${{ env.fusionauth-docker-image-version }}/kickstart
# FusionAuth deployment fails https://github.com/FusionAuth/homebrew-fusionauth/issues/9
# Install FusionAuth with brew.
#- name: Install FusionAuth
# env:
# FUSIONAUTH_APP_KICKSTART_FILE: "Samples/Quickstart/fusionauth/${{ env.fusionauth-docker-image-version }}/kickstart/kickstart.json"
# run: |
# brew tap fusionauth/homebrew-fusionauth
# brew install fusionauth-app fusionauth-search
# brew services start fusionauth-search
# brew services start fusionauth-app
# Install FusionAuth with brew.
- name: Install PostgreSQL
run: brew install postgresql@${{ matrix.postgresql-version }} -v
# Start PostgreSQL with brew.
- name: Start PostgreSQL
run: brew services start postgresql@${{ matrix.postgresql-version }} -v
# Add PostgreSQL to the PATH.
- name: Add PostgreSQL to the PATH
run: echo "$(brew --prefix postgresql@${{matrix.postgresql-version }})/bin" >> $GITHUB_PATH
# Add PostgreSQL fusionauth user with default password.
- name: Add PostgreSQL fusionauth user
run: psql --command="CREATE USER fusionauth PASSWORD 'fusionauth'" --command="\du" postgres
# Add PostgreSQL fusionauth database.
- name: Add PostgreSQL fusionauth database
run: createdb --owner=fusionauth fusionauth
# Tap FusionAuth Homebrew formulae.
- name: Tap FusionAuth Homebrew formulae
run: brew tap sonderformat-llc/fusionauth
# Install FusionAuth Search with brew.
- name: Install FusionAuth Search
run: brew install fusionauth-search -v
# Install FusionAuth App with brew.
- name: Install FusionAuth App
run: brew install fusionauth-app -v
# Configure FusionAuth App with silent mode.
- name: Configure FusionAuth App
run: |
echo "" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties
echo "fusionauth-app.kickstart.file=$(echo $GITHUB_WORKSPACE)/Samples/Quickstart/fusionauth/${{ env.fusionauth-docker-image-version }}/kickstart/kickstart.json" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties
echo "fusionauth-app.silent-mode=true" >> $(brew --prefix)/etc/fusionauth/fusionauth.properties
cat $(brew --prefix)/etc/fusionauth/fusionauth.properties
# Start FusionAuth Search.
- name: Start FusionAuth Search
run: brew services start fusionauth-search -v
# Start FusionAuth App.
- name: Start FusionAuth App
run: brew services start fusionauth-app -v
# Check Brew services status.
- name: Check Brew services status
run: brew services list
# Check FusionAuth status 10 times with increasing wait times
# Continue if FusionAuth status is OK or fail at the end.
- name: Check FusionAuth status
run: |
for i in {1..10}; do
if curl -s http://localhost:9011/api/status | grep -qi "ok"; then
echo "FusionAuth is up and running."
exit 0
else
echo "FusionAuth is not up and running. Waiting for $(expr 10 \* $i) seconds."
sleep $(expr 10 \* $i)
fi
done
cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log
exit 1
# Check KickstartRunner execution 10 times with increasing wait times
# Continue if KickstartRunner execution is OK or fail at the end.
# TODO - use webhook instead https://fusionauth.io/docs/extend/events-and-webhooks/events/kickstart-success
- name: Check KickstartRunner execution
run: |
for i in {1..10}; do
if cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log | grep "KickstartRunner" | grep -q "Summary"; then
echo "KickstartRunner execution is OK."
exit 0
else
echo "KickstartRunner execution is not OK. Waiting for $(expr 10 \* $i) seconds."
sleep $(expr 10 \* $i)
fi
done
cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log
exit 1
# Read FusionAuth App logs.
- name: Read FusionAuth App logs
run: cat $(brew --prefix)/var/log/fusionauth/fusionauth-app.log
# Connect to FusionAuth App.
- name: Connect to FusionAuth App
run: curl http://localhost:9011/api/status
# Perform the tests from the fusionauth-quickstart-swift-ios-native Sample.
- name: Perform end to end tests
run: set -o pipefail && xcodebuild test -workspace FusionAuthSDK.xcworkspace/ -scheme fusionauth-quickstart-swift-ios-native -destination "${{matrix.destination}}" -skipPackagePluginValidation
- name: Upload recording
uses: actions/[email protected]
if: ${{ failure() }}
with:
name: FusionAuth-${{ matrix.fusionauth-docker-image-version }}_${{ matrix.os }}_xcode-${{ matrix.xcode }}_swift-${{ matrix.swift }}_${{ matrix.simulator-platform }}-${{ matrix.simulator-version }}.xcresult
path: /Users/runner/Library/Developer/Xcode/DerivedData/*/Logs/Test/*.xcresult