Skip to content

chore(release): version package v1.2.0 #147

chore(release): version package v1.2.0

chore(release): version package v1.2.0 #147

Workflow file for this run

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