Skip to content

Commit

Permalink
GitHub Actions: Upload iOS app error log on CI build failure (#1215)
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-magda authored Oct 17, 2024
1 parent 720b1fd commit c3756e9
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 119 deletions.
161 changes: 84 additions & 77 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ name: CI
on:
push:
branches:
- '**'
- '!main'
- '!develop'
- '!hotfix/**'
- '!release/**'
- "**"
- "!main"
- "!develop"
- "!hotfix/**"
- "!release/**"
workflow_dispatch:
inputs:
force_android:
description: 'Force Android'
description: "Force Android"
required: false
default: false
type: boolean
force_shared:
description: 'Force shared'
description: "Force shared"
required: false
default: false
type: boolean
force_ios:
description: 'Force iOS'
description: "Force iOS"
required: false
default: false
type: boolean
Expand All @@ -42,7 +42,7 @@ jobs:
steps:
- name: Checkout
uses: actions/[email protected]

- name: Gradle Wrapper Validation
uses: gradle/actions/wrapper-validation@v4

Expand All @@ -63,24 +63,24 @@ jobs:
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/[email protected]
- name: Checkout
uses: actions/[email protected]

- name: Setup CI
uses: ./.github/actions/setup-android
- 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: 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
- 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
Expand All @@ -90,22 +90,22 @@ jobs:
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/[email protected]
- 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
- name: Checkout
uses: actions/[email protected]

- 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' }}
Expand All @@ -120,26 +120,26 @@ jobs:
- name: Setup Ruby
uses: ruby/[email protected]
with:
ruby-version: '3.3.0'
ruby-version: "3.3.0"
bundler-cache: true
working-directory: './iosHyperskillApp'
working-directory: "./iosHyperskillApp"

- name: Cache Pods
uses: actions/[email protected]
id: cache-pods
with:
path: './iosHyperskillApp/Pods'
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'
working-directory: "./iosHyperskillApp"
run: bundle exec pod install

- name: Run SwiftLint
working-directory: './iosHyperskillApp'
working-directory: "./iosHyperskillApp"
run: ./lint.sh

shared-unit-testing:
Expand All @@ -150,21 +150,21 @@ jobs:
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/[email protected]

- 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 }}
- name: Checkout
uses: actions/[email protected]

- 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]
Expand All @@ -174,28 +174,28 @@ jobs:
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/[email protected]

- 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 }}
- name: Checkout
uses: actions/[email protected]

- 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/[email protected]
Expand All @@ -207,10 +207,17 @@ jobs:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Build
working-directory: './iosHyperskillApp'
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 }}

- name: Upload error log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: iosHyperskillApp-iosHyperskillApp.log
path: /Users/runner/Library/Logs/gym/iosHyperskillApp-iosHyperskillApp.log
7 changes: 7 additions & 0 deletions .github/workflows/ios_beta_deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,10 @@ jobs:
APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload error log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: iosHyperskillApp-iosHyperskillApp.log
path: /Users/runner/Library/Logs/gym/iosHyperskillApp-iosHyperskillApp.log
57 changes: 32 additions & 25 deletions .github/workflows/ios_release_deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ concurrency:
defaults:
run:
shell: bash

jobs:
# Run Gradle Wrapper Validation Action to verify the wrapper's checksum
gradle-wrapper-validation:
Expand All @@ -22,7 +22,7 @@ jobs:
steps:
- name: Checkout
uses: actions/[email protected]

- name: Gradle Wrapper Validation
uses: gradle/actions/wrapper-validation@v4

Expand All @@ -35,26 +35,33 @@ jobs:
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/[email protected]

- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}
google-cloud-storage-code-signing-certificates-key: ${{ secrets.GOOGLE_CLOUD_STORAGE_CODE_SIGNING_CERTIFICATES_KEY_CONTENT }}

- name: Submit a new Release Build to App Store Connect
working-directory: './iosHyperskillApp'
run: bundle exec fastlane release install_pods:false
env:
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
KEYCHAIN_NAME: ${{ secrets.KEYCHAIN_NAME }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
uses: actions/[email protected]

- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}
google-cloud-storage-code-signing-certificates-key: ${{ secrets.GOOGLE_CLOUD_STORAGE_CODE_SIGNING_CERTIFICATES_KEY_CONTENT }}

- name: Submit a new Release Build to App Store Connect
working-directory: "./iosHyperskillApp"
run: bundle exec fastlane release install_pods:false
env:
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
KEYCHAIN_NAME: ${{ secrets.KEYCHAIN_NAME }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload error log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: iosHyperskillApp-iosHyperskillApp.log
path: /Users/runner/Library/Logs/gym/iosHyperskillApp-iosHyperskillApp.log
41 changes: 24 additions & 17 deletions .github/workflows/ios_unit_testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,27 @@ jobs:
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/[email protected]

- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Run unit tests
working-directory: './iosHyperskillApp'
run: bundle exec fastlane run_unit_tests 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 }}
- name: Checkout
uses: actions/[email protected]

- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Run unit tests
working-directory: "./iosHyperskillApp"
run: bundle exec fastlane run_unit_tests 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 }}

- name: Upload error log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: iosHyperskillApp-iosHyperskillApp.log
path: /Users/runner/Library/Logs/gym/iosHyperskillApp-iosHyperskillApp.log

0 comments on commit c3756e9

Please sign in to comment.