Skip to content

build(deps): bump the prod-github-actions group across 1 directory with 2 updates #5

build(deps): bump the prod-github-actions group across 1 directory with 2 updates

build(deps): bump the prod-github-actions group across 1 directory with 2 updates #5

# This workflow performs a full End 2 End test of the App
# It includes all FusionAuth versions of the past 6 months.
# And uses the latest iOS Target API level requirements.
name: E2E Test with FusionAuth supported versions
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:
# 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: [ "15.4" ]
simulator-platform: [ "iOS" ]
simulator-version: [ "18.1" ]
swift: [ "5.10.1" ]
os: [ "macos-14" ]
postgresql-version: [ "16" ]
fusionauth-docker-image-version: [ "1.47.1", "1.48.3", "1.49.2", "1.50.1", "1.51.2", "1.52.1", "1.53.3" ]
# 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
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]
# 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/${{ matrix.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