Split CI checks based on technology stack #873
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |