Skip to content

Commit

Permalink
chore(sample): fix lint and ts sample & add ci jobs to build samples (T…
Browse files Browse the repository at this point in the history
…heWidlarzGroup#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 <[email protected]>
Co-authored-by: Krzysztof Moch <[email protected]>
  • Loading branch information
3 people authored Nov 30, 2023
1 parent cac802f commit 4728201
Show file tree
Hide file tree
Showing 5 changed files with 287 additions and 3 deletions.
34 changes: 34 additions & 0 deletions .github/actions/setup-node/action.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 80 additions & 0 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 165 additions & 0 deletions .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion examples/basic/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
9 changes: 7 additions & 2 deletions examples/basic/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,13 @@ target 'videoplayer' do
config = use_native_modules!

use_frameworks! :linkage => :static
# $RNVideoUseGoogleIMA = true
$RNVideoUseVideoCaching = 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()
Expand Down

0 comments on commit 4728201

Please sign in to comment.