chore(sample): fix lint and ts sample & add ci jobs to build samples (#3365)

* chore: start fixing linter and tsc warning and errors
* chore(ci): add basic example build
* chore: allow to build with or without ads on android
* chore: fix job definition

---------

Co-authored-by: olivier <olivier.bouillet@ifeelsmart.com>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
This commit is contained in:
Olivier Bouillet 2023-11-30 21:17:41 +01:00 committed by GitHub
parent cac802fb77
commit 472820123a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 287 additions and 3 deletions

34
.github/actions/setup-node/action.yml vendored Normal file
View File

@ -0,0 +1,34 @@
name: Setup node_modules
description: Setup Node.js and install dependencies
inputs:
working-directory:
description: 'working directory for yarn install'
default: ./
required: false
runs:
using: composite
steps:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Cache dependencies
id: yarn-cache
uses: actions/cache@v3
with:
path: |
**/node_modules
.yarn/install-state.gz
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }}
restore-keys: |
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
${{ runner.os }}-yarn-
- name: Install dependencies
working-directory: ${{ inputs.working-directory }}
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable --ignore-scripts
shell: bash

80
.github/workflows/build-android.yml vendored Normal file
View File

@ -0,0 +1,80 @@
name: Build Android
on:
push:
branches:
- master
paths:
- '.github/workflows/build-android.yml'
- 'android/**'
- 'examples/basic/android/**'
- 'yarn.lock'
- 'examples/basic/yarn.lock'
pull_request:
paths:
- '.github/workflows/build-android.yml'
- 'android/**'
- 'examples/basic/android/**'
- 'yarn.lock'
- 'examples/basic/yarn.lock'
jobs:
build:
name: Build Android Example App
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK 11
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: 11
java-package: jdk
- name: Install node_modules
uses: ./.github/actions/setup-node
with:
working-directory: examples/basic
- name: Restore Gradle cache
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Run Gradle Build for basic example
run: cd examples/basic/android && ./gradlew assembleDebug --build-cache && cd ../../..
build-without-ads:
name: Build Android Example App Without Ads
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK 11
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: 11
java-package: jdk
- name: Install node_modules
uses: ./.github/actions/setup-node
with:
working-directory: examples/basic
- name: Restore Gradle cache
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Run Gradle Build for basic example
run: cd examples/basic/android && export RNV_SAMPLE_ENABLE_ADS=false && ./gradlew assembleDebug --build-cache && cd ../../..

165
.github/workflows/build-ios.yml vendored Normal file
View File

@ -0,0 +1,165 @@
name: Build iOS
on:
push:
branches:
- main
paths:
- '.github/workflows/build-ios.yml'
- 'ios/**'
- '*.podspec'
- 'examples/basic/ios/**'
pull_request:
paths:
- '.github/workflows/build-ios.yml'
- 'ios/**'
- '*.podspec'
- 'examples/basic/ios/**'
jobs:
build:
name: Build iOS Example App
runs-on: macOS-latest
defaults:
run:
working-directory: examples/basic/ios
steps:
- uses: actions/checkout@v4
- name: Install node_modules
uses: ./.github/actions/setup-node
with:
working-directory: examples/basic
- name: Restore buildcache
uses: mikehardy/buildcache-action@v2
continue-on-error: true
- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.10
bundler-cache: true
- name: Restore Pods cache
uses: actions/cache@v3
with:
path: |
examples/basic/ios/Pods
~/Library/Caches/CocoaPods
~/.cocoapods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
run: pod install
- name: Install xcpretty
run: gem install xcpretty
- name: Build App
run: "set -o pipefail && xcodebuild \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace videoplayer.xcworkspace \
-scheme videoplayer \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 11 Pro' \
build \
CODE_SIGNING_ALLOWED=NO | xcpretty"
build-with-ads:
name: Build iOS Example App With Ads
runs-on: macOS-latest
defaults:
run:
working-directory: examples/basic/ios
steps:
- uses: actions/checkout@v4
- name: Install node_modules
uses: ./.github/actions/setup-node
with:
working-directory: examples/basic
- name: Restore buildcache
uses: mikehardy/buildcache-action@v2
continue-on-error: true
- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.10
bundler-cache: true
- name: Restore Pods cache
uses: actions/cache@v3
with:
path: |
examples/basic/ios/Pods
~/Library/Caches/CocoaPods
~/.cocoapods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
run: export RNV_SAMPLE_ENABLE_ADS=true && pod install
- name: Install xcpretty
run: gem install xcpretty
- name: Build App
run: "set -o pipefail && export RNV_SAMPLE_ENABLE_ADS=true && xcodebuild \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace videoplayer.xcworkspace \
-scheme videoplayer \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 11 Pro' \
build \
CODE_SIGNING_ALLOWED=NO | xcpretty"
build-with-caching:
name: Build iOS Example App With Caching
runs-on: macOS-latest
defaults:
run:
working-directory: examples/basic/ios
steps:
- uses: actions/checkout@v4
- name: Install node_modules
uses: ./.github/actions/setup-node
with:
working-directory: examples/basic
- name: Restore buildcache
uses: mikehardy/buildcache-action@v2
continue-on-error: true
- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.10
bundler-cache: true
- name: Restore Pods cache
uses: actions/cache@v3
with:
path: |
examples/basic/ios/Pods
~/Library/Caches/CocoaPods
~/.cocoapods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
run: export RNV_SAMPLE_VIDEO_CACHING=true && pod install
- name: Install xcpretty
run: gem install xcpretty
- name: Build App
run: "set -o pipefail && export RNV_SAMPLE_VIDEO_CACHING=true && xcodebuild \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace videoplayer.xcworkspace \
-scheme videoplayer \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 11 Pro' \
build \
CODE_SIGNING_ALLOWED=NO | xcpretty"

View File

@ -11,7 +11,7 @@ buildscript {
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
ndkVersion = "23.1.7779620"
RNVUseExoplayerIMA = true
RNVUseExoplayerIMA = System.getenv("RNV_SAMPLE_ENABLE_ADS") ?: true
}
repositories {
google()

View File

@ -29,8 +29,13 @@ target 'videoplayer' do
config = use_native_modules!
use_frameworks! :linkage => :static
# $RNVideoUseGoogleIMA = true
if ENV['RNV_SAMPLE_ENABLE_ADS']
$RNVideoUseGoogleIMA = true
end
if ENV['RNV_SAMPLE_VIDEO_CACHING']
$RNVideoUseVideoCaching = true
end
# Flags change depending on the env values.
flags = get_default_flags()