name: CI on: push: branches: - main pull_request: workflow_dispatch: env: NODE_VERSION: 16 jobs: build: name: Build web assets runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - name: Install dependencies run: npm i; cd NUXT; npm i - name: Set App Version working-directory: NUXT run: sed -i 's/dev-local/${{ github.sha }}/' nuxt.config.js - name: Build web assets working-directory: NUXT run: npm run generate - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: dist path: dist android: name: Build Android platform runs-on: ubuntu-latest needs: [build] steps: - name: Checkout uses: actions/checkout@v2 - name: Download artifacts uses: actions/download-artifact@v2 with: name: dist path: dist - name: Set up Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - name: Install dependencies run: npm i - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Copy web assets to native platform run: npx cap copy android - name: Update native platform run: npx cap update android - name: Build with Gradle working-directory: android run: chmod +x gradlew; ./gradlew clean assembleRelease -x test -Pandroid.injected.signing.store.file=/home/runner/work/VueTube/VueTube/android/key.jks -Pandroid.injected.signing.store.password=${{ secrets.ANDROID_STORE_PASSWORD }} -Pandroid.injected.signing.key.alias=${{ secrets.ANDROID_KEY_ALIAS }} -Pandroid.injected.signing.key.password=${{ secrets.ANDROID_KEY_PASSWORD }} - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: android path: android/app/build/outputs/apk/release/app-release.apk ios: name: Build iOS platform runs-on: macos-latest needs: [build] steps: - name: Checkout uses: actions/checkout@v2 - name: Download artifacts uses: actions/download-artifact@v2 with: name: dist path: dist - name: Set up Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v2 with: node-version: ${{ env.NODE_VERSION }} - name: Install dependencies run: npm i - name: Copy web assets to native platform run: npx cap copy ios - name: Update native platform run: npx cap update ios - name: Add empty `GoogleService-Info.plist` run: echo "$GOOGLE_SERVICE_INFO_PLIST" > ios/App/App/GoogleService-Info.plist env: GOOGLE_SERVICE_INFO_PLIST: ${{secrets.GOOGLE_SERVICE_INFO_PLIST}} - name: Build and archive with xcodebuild working-directory: ios run: xcodebuild -workspace App/App.xcworkspace -scheme App -archivePath App/build/App.xarchive clean build archive CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED="NO" CODE_SIGN_ENTITLEMENTS="" - name: Make IPA run: mkdir Payload && mv ~/Library/Developer/Xcode/DerivedData/App-*/Build/Products/Debug-iphoneos/App.app Payload && zip -r Payload.zip Payload && mv Payload.zip VueTube.ipa - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: iOS path: VueTube.ipa