chore(release): version package v1.2.0 #147
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: Integration Test | |
permissions: | |
contents: write | |
packages: write | |
actions: write | |
on: | |
pull_request: | |
branches: [main] | |
paths: | |
- 'src/**' | |
- '.github/workflows/test.yml' | |
- '.github/workflows/release.yml' | |
- 'package.json' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint-and-format: | |
name: Lint and Format | |
runs-on: ubuntu-latest | |
outputs: | |
bun-cache-key: ${{ runner.os }}-bun | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Bun.js | |
uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- name: Cache npm dependencies | |
id: bun-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.bun/install/cache | |
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} | |
restore-keys: | | |
${{ runner.os }}-bun- | |
- name: Install npm dependencies (bun) | |
run: bun install | |
- name: Lint and Format | |
run: bun lint && bun format | |
module-generation: | |
name: Module Generation | |
needs: lint-and-format | |
runs-on: macOS-15 | |
strategy: | |
matrix: | |
args: | |
[ | |
'--skip-example', | |
'--module-dir test-module', | |
'--skip-install', | |
] | |
pm: ['bun', 'yarn'] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure Git | |
run: | | |
git config --global user.name "GitHub Actions Bot" | |
git config --global user.email "[email protected]" | |
- name: Setup Bun.js | |
uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- name: Cache npm dependencies | |
id: bun-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.bun/install/cache | |
key: ${{ needs.lint-and-format.outputs.bun-cache-key }}-${{ hashFiles('**/bun.lockb') }} | |
restore-keys: | | |
${{ runner.os }}-bun- | |
- name: Install npm dependencies (bun) | |
run: bun install | |
- name: Build CLI and Link Locally | |
run: | | |
bun run build | |
${{matrix.pm}} link | |
- name: Create expect script ${{ matrix.args }} with ${{ matrix.pm }} | |
run: | | |
cat << 'EOF' > test-module.exp | |
#!/usr/bin/expect -f | |
set timeout 30 | |
spawn ${{ matrix.pm }} create nitro-module ${{ matrix.args }} | |
# Module name | |
expect "📝 What is the name of your module?" {send "test-module\r"} | |
# Platform selection | |
expect "🎯 Select target platforms:" | |
sleep 1 | |
send \x20 | |
sleep 1 | |
send \x1B\[B | |
sleep 1 | |
send \x20 | |
send \r | |
# Language selection | |
expect "💻 Select programming languages:" | |
sleep 1 | |
send \x20 | |
sleep 1 | |
send \x1B\[B\x1B\[B | |
sleep 1 | |
send \x20 | |
send \r | |
# Package manager | |
expect "📦 Select package manager:" {send \r} | |
# Confirm package name | |
expect "✨ Your package name will be called:" {send "y\r"} | |
expect eof | |
EOF | |
chmod +x test-module.exp | |
- name: Generate New Module ${{ matrix.args }} | |
continue-on-error: false | |
run: ./test-module.exp | |
- name: Upload generated module | |
uses: actions/upload-artifact@v4 | |
if: matrix.args == '--skip-install' | |
with: | |
name: test-module-${{ matrix.pm }} | |
path: react-native-test-module/ | |
include-hidden-files: true | |
if-no-files-found: error | |
retention-days: 1 | |
build-ios: | |
name: Build iOS | |
needs: module-generation | |
runs-on: macOS-15 | |
env: | |
WORKING_DIR: /Users/runner/react-native-test-module | |
strategy: | |
matrix: | |
pm: ['bun', 'yarn'] | |
steps: | |
- name: Creating and navigating to directory | |
run: mkdir -p ${{ env.WORKING_DIR }} | |
- name: Download generated module | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-module-${{ matrix.pm }} | |
path: ${{ env.WORKING_DIR }} | |
- name: List files in the directory | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ls -la | |
- name: Setup Ruby and Cocoapods | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
bundler-cache: true | |
- name: Setup Node.js | |
if: matrix.pm == 'yarn' | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.x | |
- name: Setup Yarn | |
if: matrix.pm == 'yarn' | |
run: | | |
corepack enable | |
cd ${{ env.WORKING_DIR }} | |
yarn config set enableImmutableInstalls false | |
yarn config set nodeLinker node-modules | |
touch yarn.lock | |
yarn install | |
- name: Setup Node.js cache | |
if: matrix.pm == 'yarn' | |
uses: actions/cache@v4 | |
with: | |
path: /Users/runner/Library/Caches/Yarn/v6 | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Setup Yarn | |
if: matrix.pm == 'yarn' | |
run: | | |
corepack enable | |
touch yarn.lock | |
- name: Setup Bun.js | |
uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- name: Cache npm dependencies | |
id: bun-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.bun/install/cache | |
key: ${{ runner.os }}-${{ hashFiles('**/bun.lockb') }} | |
restore-keys: | | |
${{ runner.os }}-bun- | |
- name: Install npm dependencies (${{ matrix.pm }}) | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ${{ matrix.pm }} install | |
- name: Codegen | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ${{ matrix.pm }} codegen | |
- name: Cache CocoaPods | |
id: pods-cache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.WORKING_DIR }}/example/ios/Pods | |
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} | |
- name: Install CocoaPods dependencies | |
working-directory: ${{ env.WORKING_DIR }}/example | |
run: ${{ matrix.pm }} pod | |
- name: Build iOS | |
working-directory: ${{ env.WORKING_DIR }}/example/ios | |
run: "set -o pipefail && xcodebuild \ | |
CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ \ | |
-derivedDataPath build -UseModernBuildSystem=YES \ | |
-workspace TestModuleExample.xcworkspace \ | |
-scheme TestModuleExample \ | |
-sdk iphonesimulator \ | |
-configuration Debug \ | |
-destination 'platform=iOS Simulator,name=iPhone 16' \ | |
build \ | |
CODE_SIGNING_ALLOWED=NO" | |
build-android: | |
name: Build Android | |
needs: module-generation | |
runs-on: ubuntu-latest | |
env: | |
WORKING_DIR: /home/runner/react-native-test-module | |
strategy: | |
matrix: | |
pm: ['bun', 'yarn'] | |
steps: | |
- name: Create directory structure | |
run: mkdir -p ${{ env.WORKING_DIR }} | |
- name: Download generated module | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-module-${{ matrix.pm }} | |
path: ${{ env.WORKING_DIR}} | |
- name: List files in the directory | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ls -la | |
- name: Setup Node.js | |
if: matrix.pm == 'yarn' | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.x | |
- name: Setup Yarn | |
if: matrix.pm == 'yarn' | |
run: | | |
corepack enable | |
cd ${{ env.WORKING_DIR }} | |
yarn config set enableImmutableInstalls false | |
yarn config set nodeLinker node-modules | |
touch yarn.lock | |
yarn install | |
- name: Setup Node.js cache | |
if: matrix.pm == 'yarn' | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/Library/Caches/Yarn/v6 | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Setup Bun.js | |
uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- name: Cache npm dependencies | |
id: bun-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.bun/install/cache | |
key: ${{ runner.os }}-${{ hashFiles('**/bun.lockb') }} | |
restore-keys: | | |
${{ runner.os }}-bun- | |
- name: Install npm dependencies (${{ matrix.pm }}) | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ${{ matrix.pm }} install | |
- name: Codegen | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ${{ matrix.pm }} codegen | |
- name: Install Java for Android builds | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Make gradlew executable | |
working-directory: ${{ env.WORKING_DIR }}/example/android | |
run: chmod +x ./gradlew | |
- name: Run Gradle Build | |
working-directory: ${{ env.WORKING_DIR }}/example/android | |
run: ./gradlew assembleDebug --no-daemon --build-cache | |
- name: Stop Gradle Daemon | |
working-directory: ${{ env.WORKING_DIR }}/example/android | |
run: ./gradlew --stop |