Skip to content

iOS: Update create code reply #1492

iOS: Update create code reply

iOS: Update create code reply #1492

Workflow file for this run

name: CI
on:
push:
branches:
- '**'
- '!main'
- '!develop'
- '!hotfix/**'
- '!release/**'
workflow_dispatch:
inputs:
force_android:
description: 'Force Android'
required: false
default: false
type: boolean
force_shared:
description: 'Force shared'
required: false
default: false
type: boolean
force_ios:
description: 'Force iOS'
required: false
default: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
defaults:
run:
shell: bash
jobs:
gradle-wrapper-validation:
name: Gradle Wrapper Validation
runs-on: ubuntu-22.04
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Gradle Wrapper Validation
uses: gradle/actions/wrapper-validation@v3
files-changed:
name: Detect changes
needs: gradle-wrapper-validation
uses: ./.github/workflows/detect_changed_files_reusable_workflow.yml
with:
force_android: ${{ inputs.force_android || false }}
force_shared: ${{ inputs.force_shared || false }}
force_ios: ${{ inputs.force_ios || false }}
ktlint:
needs: files-changed
if: ${{ needs.files-changed.outputs.android == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run ktlint
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup CI
uses: ./.github/actions/setup-android
- name: Run ktlint
run: ./gradlew setUserHome ktlintCheck --stacktrace
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
if: success() || failure()
with:
sarif_file: shared/build/reports/ktlint
category: ktlint
detekt:
needs: files-changed
if: ${{ needs.files-changed.outputs.android == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run detekt
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup CI
uses: ./.github/actions/setup-android
- name: Run detekt
run: ./gradlew detekt
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
if: success() || failure()
with:
sarif_file: build/reports/detekt/detekt.sarif
category: detekt
swiftlint:
needs: files-changed
if: ${{ needs.files-changed.outputs.ios == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run SwiftLint
runs-on: macos-14
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup Ruby
uses: ruby/setup-ruby@v1.175.1
with:
ruby-version: '3.3.0'
bundler-cache: true
working-directory: './iosHyperskillApp'
- name: Cache Pods
uses: actions/cache@v4.0.2
id: cache-pods
with:
path: './iosHyperskillApp/Pods'
key: ${{ runner.os }}-pods-${{ hashFiles('iosHyperskillApp/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
if: steps.cache-pods.outputs.cache-hit != 'true'
working-directory: './iosHyperskillApp'
run: bundle exec pod install
- name: Run SwiftLint
working-directory: './iosHyperskillApp'
run: ./lint.sh
shared-unit-testing:
needs: [files-changed, ktlint, detekt]
if: ${{ needs.files-changed.outputs.shared == 'true' }}
name: Run shared unit tests
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup CI
id: setup
uses: ./.github/actions/setup-android
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}
- name: Run unit tests
run: ./gradlew shared:testDebugUnitTest
env:
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
android-unit-testing:
needs: [files-changed, ktlint, detekt]
if: ${{ needs.files-changed.outputs.android == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run Android unit tests
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup CI
id: setup
uses: ./.github/actions/setup-android
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}
- name: Run unit tests
run: ./gradlew androidHyperskillApp:testDebugUnitTest
env:
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-ios:
needs: swiftlint
name: Build iOS
runs-on: macos-14
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}
- name: Build
working-directory: './iosHyperskillApp'
run: bundle exec fastlane build install_pods:false
env:
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}