Skip to content

Cron Checks

Cron Checks #343

Workflow file for this run

name: Cron Checks
on:
schedule:
# Runs "At 02:00 every night"
- cron: '0 2 * * *'
# TODO: commented until `develop` branch is in place
# pull_request:
# branches:
# - 'main'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
jobs:
build-and-test-e2e-debug:
name: Test E2E UI (Debug)
strategy:
matrix:
include:
# TODO: uncomment this block as soon as Xcode 15 is stable on CI
# - ios: 17.0
# xcode: 15.0
# os: macos-13
# device: "iPhone 14 Pro Max"
# setup_runtime: false
- ios: 16.4
xcode: 14.3.1
os: macos-13
device: "iPhone 14 Pro Max"
setup_runtime: false
fail-fast: false
runs-on: ${{ matrix.os }}
env:
GITHUB_EVENT: ${{ toJson(github.event) }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
XCODE_VERSION: ${{ matrix.xcode }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
env:
INSTALL_ALLURE: true
INSTALL_XCPARSE: true
- name: Setup iOS ${{ matrix.ios }} Runtime
if: ${{ matrix.setup_runtime }}
run: xcversion simulators --install='iOS ${{ matrix.ios }}'
- name: Launch Allure TestOps
run: bundle exec fastlane allure_launch cron:true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_e2e_mock cron:true device:"${{ matrix.device }} (${{ matrix.ios }})"
timeout-minutes: 90
- name: Allure TestOps Upload
if: success() || failure()
run: bundle exec fastlane allure_upload launch_id:$LAUNCH_ID
- name: Allure TestOps Launch Removal
if: cancelled()
run: bundle exec fastlane allure_launch_removal launch_id:$LAUNCH_ID
- uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: "You shall not pass!"
job_name: "${{ github.workflow }}: ${{ github.job }}"
fields: message,commit,author,action,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MATRIX_CONTEXT: ${{ toJson(matrix) }}
if: failure() && github.event_name == 'schedule'
- name: Parse xcresult
if: failure()
run: xcparse logs fastlane/test_output/StreamChatSwiftUITestsApp.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v3
if: failure()
with:
name: Test Data
path: |
fastlane/recordings
fastlane/sinatra_log.txt
fastlane/test_output/logs/*/Diagnostics/StreamChatSwiftUITestsAppUITests-*/*/*.txt
build-apps:
name: Build Demo App
strategy:
matrix:
include:
- xcode: 15.0
os: macos-13
- xcode: 14.3.1
os: macos-13
- xcode: 14.2
os: macos-12
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
- name: Build Demo App
run: bundle exec fastlane build_demo
env:
XCODE_VERSION: ${{ matrix.xcode }}
- uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: "You shall not pass!"
job_name: "${{ github.workflow }}: ${{ github.job }}"
fields: message,commit,author,action,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MATRIX_CONTEXT: ${{ toJson(matrix) }}
if: failure() && github.event_name == 'schedule'
automated-code-review:
name: Automated Code Review
runs-on: macos-13
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
- run: bundle exec fastlane rubocop
- run: ./Scripts/run-linter.sh
- run: bundle exec fastlane pod_lint