From 88b9b97e296ead4c40195b8d9fb27486158379d6 Mon Sep 17 00:00:00 2001 From: Roland Kakonyi Date: Tue, 19 Dec 2023 10:28:26 +0100 Subject: [PATCH 1/5] chore: split away typescript related CI checks --- .github/workflows/ci-typescript.yml | 118 ++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/ci-typescript.yml diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml new file mode 100644 index 00000000..290dc9fd --- /dev/null +++ b/.github/workflows/ci-typescript.yml @@ -0,0 +1,118 @@ +name: CI (TypeScript) + +on: + pull_request: + paths: + - '.github/workflows/ci-typescript.yml' + - '**.ts' + - '**.tsx' + - '**.js' + - '**.json' + - '**package.json' + - '.eslint*' + - '*prettier*' + - '**babel.config.js' + - 'tsconfig.json' + - 'typedoc.json' + - '**yarn.lock' + - '**react-native.config.js' + - '**metro.config.js' + - '!*/android/**' + - '!*/ios/**' + + push: + branches: [development] + paths: + - '.github/workflows/ci-typescript.yml' + - '**.ts' + - '**.tsx' + - '**.js' + - '**.json' + - '**package.json' + - '.eslint*' + - '*prettier*' + - '**babel.config.js' + - 'tsconfig.json' + - 'typedoc.json' + - '**yarn.lock' + - '**react-native.config.js' + - '**metro.config.js' + - '!*/android/**' + - '!*/ios/**' + +concurrency: + group: ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + code-style-typescript: + name: Code style Typescript + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Lint Typescript + run: yarn lint + + test-build-typescript: + name: Build Typescript + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Install node_modules (example/) + run: yarn install --frozen-lockfile --cwd example + + - name: Install node_modules (integration_test/) + run: yarn install --frozen-lockfile --cwd integration_test + + - name: Compile TypeScript + run: yarn typescript + + test-build-docs: + name: Build API docs + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Install node_modules (example/) + run: yarn install --frozen-lockfile --cwd example + + - name: Install node_modules (integration_test/) + run: yarn install --frozen-lockfile --cwd integration_test + + - name: Build docs + run: yarn docs From 94abc19277d6172923f542f781a426726b6b1b8f Mon Sep 17 00:00:00 2001 From: Roland Kakonyi Date: Tue, 19 Dec 2023 10:30:56 +0100 Subject: [PATCH 2/5] chore: fix concurrency --- .github/workflows/ci-typescript.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml index 290dc9fd..d44fb12c 100644 --- a/.github/workflows/ci-typescript.yml +++ b/.github/workflows/ci-typescript.yml @@ -41,7 +41,7 @@ on: - '!*/ios/**' concurrency: - group: ci-${{ github.event.pull_request.number || github.ref }} + group: ci-typescript-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: From 3d120558acc2c3bce90e05a5fe91bb327165f559 Mon Sep 17 00:00:00 2001 From: Roland Kakonyi Date: Tue, 19 Dec 2023 10:32:55 +0100 Subject: [PATCH 3/5] chore: improve the name of jobs --- .github/workflows/ci-typescript.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml index d44fb12c..36919a68 100644 --- a/.github/workflows/ci-typescript.yml +++ b/.github/workflows/ci-typescript.yml @@ -46,7 +46,7 @@ concurrency: jobs: code-style-typescript: - name: Code style Typescript + name: Code style runs-on: ubuntu-latest steps: - name: Checkout @@ -66,7 +66,7 @@ jobs: run: yarn lint test-build-typescript: - name: Build Typescript + name: Build runs-on: ubuntu-latest steps: - name: Checkout From 6bd49184210f14cf1b0dfbe1d7c700633f89bd0e Mon Sep 17 00:00:00 2001 From: Roland Kakonyi Date: Tue, 19 Dec 2023 10:58:52 +0100 Subject: [PATCH 4/5] chore: split away iOS and Android related CI jobs --- .github/workflows/ci-android.yml | 95 +++++++++++++++ .github/workflows/ci-ios-tvos.yml | 185 ++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+) create mode 100644 .github/workflows/ci-android.yml create mode 100644 .github/workflows/ci-ios-tvos.yml diff --git a/.github/workflows/ci-android.yml b/.github/workflows/ci-android.yml new file mode 100644 index 00000000..b440d60d --- /dev/null +++ b/.github/workflows/ci-android.yml @@ -0,0 +1,95 @@ +name: CI (Android) + +on: + pull_request: + paths: + - '.github/workflows/ci-android.yml' + - 'package.json' + - 'yarn.lock' + - 'android/**' + - 'example/android/**' + - 'example/package.json' + - 'example/yarn.lock' + + push: + branches: [development] + paths: + - '.github/workflows/ci-android.yml' + - 'package.json' + - 'yarn.lock' + - 'android/**' + - 'example/android/**' + - 'example/package.json' + - 'example/yarn.lock' + +concurrency: + group: ci-android-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + NO_FLIPPER: 1 + +jobs: + code-style-android: + name: Code style Android + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '11' + + - name: Set up Gradle cache + uses: gradle/gradle-build-action@v2 + with: + cache-read-only: ${{ github.ref != 'refs/heads/development' }} + + - name: Check code style + run: ./gradlew ktlintCheck + working-directory: android + + test-build-android: + name: Build Android + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '11' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Install node_modules (example/) + run: yarn install --frozen-lockfile --cwd example + + - name: Install node_modules (integration_test/) + run: yarn install --frozen-lockfile --cwd integration_test + + - name: Set up Gradle cache + uses: gradle/gradle-build-action@v2 + with: + cache-read-only: ${{ github.ref != 'refs/heads/development' }} + + - name: Build Android example + run: ./gradlew assembleDebug --build-cache + working-directory: example/android + + - name: Build Android integration test host app + run: ./gradlew assembleDebug --build-cache + working-directory: integration_test/android diff --git a/.github/workflows/ci-ios-tvos.yml b/.github/workflows/ci-ios-tvos.yml new file mode 100644 index 00000000..18162763 --- /dev/null +++ b/.github/workflows/ci-ios-tvos.yml @@ -0,0 +1,185 @@ +name: CI (iOS & tvOS) + +on: + pull_request: + paths: + - '.github/workflows/ci-ios-tvos.yml' + - 'package.json' + - 'yarn.lock' + - 'ios/**' + - 'RNBitmovinPlayer.podspec' + - '.swiftlint.yml' + - 'Brewfile.lock.json' + - 'example/ios/**' + - 'example/package.json' + - 'example/yarn.lock' + + push: + branches: [development] + paths: + - '.github/workflows/ci-ios-tvos.yml' + - 'package.json' + - 'yarn.lock' + - 'ios/**' + - 'RNBitmovinPlayer.podspec' + - '.swiftlint.yml' + - 'Brewfile.lock.json' + - 'example/ios/**' + - 'example/package.json' + - 'example/yarn.lock' + +concurrency: + group: ci-ios-tvos-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + NO_FLIPPER: 1 + +jobs: + code-style-ios: + name: Code style iOS + runs-on: macOS-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.2' + + - name: Install dependencies + run: brew bundle install + + - name: Check code style + run: swiftlint --strict + + test-build-ios: + name: Build iOS + runs-on: macOS-12 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.2' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Install node_modules (example/) + run: yarn install --frozen-lockfile --cwd example + + - name: Install node_modules (integration_test/) + run: yarn install --frozen-lockfile --cwd integration_test + + - name: Install dependencies + run: brew bundle install + + - name: Restore Pods cache + id: pods-cache-restore + uses: actions/cache/restore@v3 + with: + path: | + .cocoapods-cache + example/ios/Pods + integration_test/ios/Pods + key: pods-${{ hashFiles('example/ios/Podfile.lock') }}-${{ hashFiles('integration_test/ios/Podfile.lock') }} + restore-keys: pods- + + - name: Install pods + run: | + pod repo add bitmovin https://github.com/bitmovin/cocoapod-specs.git || pod repo update bitmovin + yarn pods + env: + CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache + + - name: Save Pods cache + if: steps.pods-cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: | + .cocoapods-cache + example/ios/Pods + integration_test/ios/Pods + key: ${{ steps.pods-cache-restore.outputs.cache-primary-key }} + + - name: Build iOS example + run: set -o pipefail && xcodebuild -workspace BitmovinPlayerReactNativeExample.xcworkspace -scheme BitmovinPlayerReactNativeExample -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty + working-directory: example/ios + env: + NSUnbufferedIO: YES + + - name: Build iOS integration test host app + run: set -o pipefail && xcodebuild -workspace IntegrationTest.xcworkspace -scheme IntegrationTest -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty + working-directory: integration_test/ios + env: + NSUnbufferedIO: YES + + test-build-tvos: + name: Build tvOS + runs-on: macOS-12 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node and npm registry + uses: actions/setup-node@v3 + with: + node-version: '16' + registry-url: 'https://registry.npmjs.org/' + cache: 'yarn' + + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.2' + + - name: Install node_modules + run: yarn install --frozen-lockfile + + - name: Install node_modules (example/) + run: yarn install --frozen-lockfile --cwd example + + - name: Install dependencies + run: brew bundle install + + - name: Restore Pods cache + id: pods-cache-restore + uses: actions/cache/restore@v3 + with: + path: | + .cocoapods-cache + example/ios/Pods + integration_test/ios/Pods + key: pods-${{ hashFiles('example/ios/Podfile.lock') }}-${{ hashFiles('integration_test/ios/Podfile.lock') }} + restore-keys: pods- + + - name: Install pods + run: | + pod repo add bitmovin https://github.com/bitmovin/cocoapod-specs.git || pod repo update bitmovin + yarn example pods + env: + CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache + + - name: Save Pods cache + if: steps.pods-cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: | + .cocoapods-cache + example/ios/Pods + integration_test/ios/Pods + key: ${{ steps.pods-cache-restore.outputs.cache-primary-key }} + + - name: Build tvOS example + run: set -o pipefail && xcodebuild -workspace BitmovinPlayerReactNativeExample.xcworkspace -scheme BitmovinPlayerReactNativeExample-tvOS -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty + working-directory: example/ios + env: + NSUnbufferedIO: YES From ac4c7847a199ec42e9fa15472953c81c72e266b7 Mon Sep 17 00:00:00 2001 From: Roland Kakonyi Date: Tue, 19 Dec 2023 10:59:13 +0100 Subject: [PATCH 5/5] chore: remove single CI job after split --- .github/workflows/ci.yml | 303 --------------------------------------- 1 file changed, 303 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index da1b52ac..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,303 +0,0 @@ -name: CI - -on: - pull_request: - paths-ignore: - - '**.md' - - push: - branches: [development] - paths-ignore: - - '**.md' - -concurrency: - group: ci-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - NO_FLIPPER: 1 - -jobs: - code-style-typescript: - name: Code style Typescript - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Lint Typescript - run: yarn lint - - code-style-android: - name: Code style Android - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Java - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '11' - - - name: Set up Gradle cache - uses: gradle/gradle-build-action@v2 - with: - cache-read-only: ${{ github.ref != 'refs/heads/development' }} - - - name: Check code style - run: ./gradlew ktlintCheck - working-directory: android - - code-style-ios: - name: Code style iOS - runs-on: macOS-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '14.1' - - - name: Install dependencies - run: brew bundle install - - - name: Check code style - run: swiftlint --strict - - test-build-typescript: - name: Build Typescript - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Install node_modules (example/) - run: yarn install --frozen-lockfile --cwd example - - - name: Install node_modules (integration_test/) - run: yarn install --frozen-lockfile --cwd integration_test - - - name: Compile TypeScript - run: yarn typescript - - test-build-docs: - name: Build API docs - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Install node_modules (example/) - run: yarn install --frozen-lockfile --cwd example - - - name: Install node_modules (integration_test/) - run: yarn install --frozen-lockfile --cwd integration_test - - - name: Build docs - run: yarn docs - - test-build-android: - name: Build Android - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - name: Set up Java - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '11' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Install node_modules (example/) - run: yarn install --frozen-lockfile --cwd example - - - name: Install node_modules (integration_test/) - run: yarn install --frozen-lockfile --cwd integration_test - - - name: Set up Gradle cache - uses: gradle/gradle-build-action@v2 - with: - cache-read-only: ${{ github.ref != 'refs/heads/development' }} - - - name: Build Android example - run: ./gradlew assembleDebug --build-cache - working-directory: example/android - - - name: Build Android integration test host app - run: ./gradlew assembleDebug --build-cache - working-directory: integration_test/android - - test-build-ios: - name: Build iOS - runs-on: macOS-12 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '14.1' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Install node_modules (example/) - run: yarn install --frozen-lockfile --cwd example - - - name: Install node_modules (integration_test/) - run: yarn install --frozen-lockfile --cwd integration_test - - - name: Install dependencies - run: brew bundle install - - - name: Restore Pods cache - id: pods-cache-restore - uses: actions/cache/restore@v3 - with: - path: | - .cocoapods-cache - example/ios/Pods - integration_test/ios/Pods - key: pods-${{ hashFiles('example/ios/Podfile.lock') }}-${{ hashFiles('integration_test/ios/Podfile.lock') }} - restore-keys: pods- - - - name: Install pods - run: | - pod repo add bitmovin https://github.com/bitmovin/cocoapod-specs.git || pod repo update bitmovin - yarn pods - env: - CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache - - - name: Save Pods cache - if: steps.pods-cache-restore.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 - with: - path: | - .cocoapods-cache - example/ios/Pods - integration_test/ios/Pods - key: ${{ steps.pods-cache-restore.outputs.cache-primary-key }} - - - name: Build iOS example - run: set -o pipefail && xcodebuild -workspace BitmovinPlayerReactNativeExample.xcworkspace -scheme BitmovinPlayerReactNativeExample -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty - working-directory: example/ios - env: - NSUnbufferedIO: YES - - - name: Build iOS integration test host app - run: set -o pipefail && xcodebuild -workspace IntegrationTest.xcworkspace -scheme IntegrationTest -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty - working-directory: integration_test/ios - env: - NSUnbufferedIO: YES - - test-build-tvos: - name: Build tvOS - runs-on: macOS-12 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node and npm registry - uses: actions/setup-node@v3 - with: - node-version: '16' - registry-url: 'https://registry.npmjs.org/' - cache: 'yarn' - - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '14.1' - - - name: Install node_modules - run: yarn install --frozen-lockfile - - - name: Install node_modules (example/) - run: yarn install --frozen-lockfile --cwd example - - - name: Install dependencies - run: brew bundle install - - - name: Restore Pods cache - id: pods-cache-restore - uses: actions/cache/restore@v3 - with: - path: | - .cocoapods-cache - example/ios/Pods - integration_test/ios/Pods - key: pods-${{ hashFiles('example/ios/Podfile.lock') }}-${{ hashFiles('integration_test/ios/Podfile.lock') }} - restore-keys: pods- - - - name: Install pods - run: | - pod repo add bitmovin https://github.com/bitmovin/cocoapod-specs.git || pod repo update bitmovin - yarn example pods - env: - CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache - - - name: Save Pods cache - if: steps.pods-cache-restore.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 - with: - path: | - .cocoapods-cache - example/ios/Pods - integration_test/ios/Pods - key: ${{ steps.pods-cache-restore.outputs.cache-primary-key }} - - - name: Build tvOS example - run: set -o pipefail && xcodebuild -workspace BitmovinPlayerReactNativeExample.xcworkspace -scheme BitmovinPlayerReactNativeExample-tvOS -configuration Debug build CODE_SIGNING_ALLOWED='NO' | xcpretty - working-directory: example/ios - env: - NSUnbufferedIO: YES