name: Build and test main target on: push: branches: - master - develop pull_request: types: [synchronize, opened, reopened, ready_for_review] branches: - master - develop env: PROJECT: Nextcloud.xcodeproj DESTINATION: platform=iOS Simulator,name=iPhone 16,OS=18.1 SCHEME: Nextcloud SERVER_BRANCH: stable28 PHP_VERSION: 8.2 jobs: build: name: Build runs-on: macos-15 if: github.event.pull_request.draft == false steps: - uses: actions/checkout@v4 - name: Download GoogleService-Info.plist run: wget "https://raw.githubusercontent.com/firebase/quickstart-ios/master/mock-GoogleService-Info.plist" -O GoogleService-Info.plist - name: Build Nextcloud iOS run: | set -o pipefail && \ xcodebuild build-for-testing \ -scheme "${{ env.SCHEME }}" \ -destination "${{ env.DESTINATION }}" \ -derivedDataPath "DerivedData" \ | xcbeautify --quieter - name: Upload test build uses: actions/upload-artifact@v4 with: name: Nextcloud iOS path: DerivedData/Build/Products retention-days: 4 test: name: Test runs-on: macos-15 needs: [build] if: github.event.pull_request.draft == false steps: - uses: actions/checkout@v4 - name: Set up php ${{ env.PHP_VERSION }} uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2.30.0 with: php-version: ${{ env.PHP_VERSION }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation extensions: apcu, bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql coverage: none ini-file: development # Temporary workaround for missing pcntl_* in PHP 8.3: ini-values: apc.enable_cli=on ini-values: apc.enable_cli=on, disable_functions= - name: Checkout server uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: submodules: true repository: nextcloud/server path: server ref: ${{ env.SERVER_BRANCH }} - name: Set up Nextcloud run: | mkdir server/data ./server/occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin ./server/occ config:system:set hashing_default_password --value=true --type=boolean ./server/occ config:system:set auth.bruteforce.protection.enabled --value false --type bool ./server/occ config:system:set ratelimit.protection.enabled --value false --type bool ./server/occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu" ./server/occ config:system:set memcache.distributed --value="\\OC\\Memcache\\APCu" ./server/occ background:cron PHP_CLI_SERVER_WORKERS=5 php -S localhost:8080 -t server/ & - name: Download test build uses: actions/download-artifact@v4 with: name: Nextcloud iOS - name: Check server status run: curl -s --retry 5 --retry-delay 60 --retry-all-errors http://localhost:8080/status.php || true - name: Test Nextcloud iOS run: | set -o pipefail && \ xcodebuild test-without-building \ -xctestrun $(find . -type f -name "*.xctestrun") \ -destination "${{ env.DESTINATION }}" \ -derivedDataPath "DerivedData" \ -test-iterations 3 \ -retry-tests-on-failure \ -resultBundlePath "TestResult.xcresult" \ | xcbeautify --quieter - name: Upload test results uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} with: name: TestResult.xcresult path: "TestResult.xcresult"