diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 0000000..9327cf8 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,115 @@ +name: CI + +on: + push: + branches: + - main + - dev + +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 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - 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