From eddf40cd00855884f243dd7636887e1aba373c66 Mon Sep 17 00:00:00 2001 From: Jagandeep Brar Date: Wed, 13 Apr 2022 02:02:51 -0400 Subject: [PATCH] chore(ci): build for all platforms unless platform keywords are specified --- .github/workflows/enable_check.yml | 168 ------------------------ .github/workflows/prepare.yml | 202 ++++++++++++++++++++++------- .github/workflows/release.yml | 43 +++--- 3 files changed, 171 insertions(+), 242 deletions(-) delete mode 100644 .github/workflows/enable_check.yml diff --git a/.github/workflows/enable_check.yml b/.github/workflows/enable_check.yml deleted file mode 100644 index e6324823..00000000 --- a/.github/workflows/enable_check.yml +++ /dev/null @@ -1,168 +0,0 @@ -name: Enable Check - -on: - workflow_call: - outputs: - android: - description: "Is Android Enabled?" - value: ${{ jobs.android.outputs.android }} - ios: - description: "Is iOS Enabled?" - value: ${{ jobs.ios.outputs.ios }} - linux: - description: "Is Linux Enabled?" - value: ${{ jobs.linux.outputs.linux }} - macos: - description: "Is macOS Enabled?" - value: ${{ jobs.macos.outputs.macos }} - windows: - description: "Is Windows Enabled?" - value: ${{ jobs.windows.outputs.windows }} - web: - description: "Is Web Enabled?" - value: ${{ jobs.web.outputs.web }} - -jobs: - android: - name: Android - runs-on: ubuntu-latest - outputs: - android: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const android = process.env.MESSAGE.includes("[platform:android]"); - return all || android; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" - - ios: - name: iOS - runs-on: ubuntu-latest - outputs: - ios: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const ios = process.env.MESSAGE.includes("[platform:ios]"); - return all || ios; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" - - linux: - name: Linux - runs-on: ubuntu-latest - outputs: - linux: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const linux = process.env.MESSAGE.includes("[platform:linux]"); - return all || linux; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" - - macos: - name: macOS - runs-on: ubuntu-latest - outputs: - macos: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const macos = process.env.MESSAGE.includes("[platform:macos]"); - return all || macos; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" - - windows: - name: Windows - runs-on: ubuntu-latest - outputs: - windows: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const windows = process.env.MESSAGE.includes("[platform:windows]"); - return all || windows; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" - - web: - name: Web - runs-on: ubuntu-latest - outputs: - web: ${{ steps.output.outputs.enable }} - steps: - - name: Run Script - id: script - uses: actions/github-script@v6 - env: - MESSAGE: ${{ github.event.head_commit.message || '[platform:all]' }} - with: - result-encoding: string - script: | - const all = process.env.MESSAGE.includes("[platform:all]"); - const web = process.env.MESSAGE.includes("[platform:web]"); - return all || web; - - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=enable::${{ steps.script.outputs.result }}" diff --git a/.github/workflows/prepare.yml b/.github/workflows/prepare.yml index f0e9867d..927bd8a5 100644 --- a/.github/workflows/prepare.yml +++ b/.github/workflows/prepare.yml @@ -10,24 +10,153 @@ on: outputs: build-number: description: "Build Number" - value: ${{ jobs.build-number.outputs.build-number }} + value: ${{ jobs.build-details.outputs.build-number }} build-title: description: "Build Title" - value: ${{ jobs.build-title.outputs.build-title }} + value: ${{ jobs.build-details.outputs.build-title }} build-version: description: "Build Version" - value: ${{ jobs.build-version.outputs.build-version }} + value: ${{ jobs.build-details.outputs.build-version }} + enable-android: + description: "Is Android Enabled?" + value: ${{ jobs.platform-list.outputs.android }} + enable-ios: + description: "Is iOS Enabled?" + value: ${{ jobs.platform-list.outputs.ios }} + enable-linux: + description: "Is Linux Enabled?" + value: ${{ jobs.platform-list.outputs.linux }} + enable-macos: + description: "Is macOS Enabled?" + value: ${{ jobs.platform-list.outputs.macos }} + enable-windows: + description: "Is Windows Enabled?" + value: ${{ jobs.platform-list.outputs.windows }} + enable-web: + description: "Is Web Enabled?" + value: ${{ jobs.platform-list.outputs.web }} secrets: FIREBASE_TOKEN: required: true jobs: - build-number: - name: Build Number + platform-list: + name: Platform List runs-on: ubuntu-latest outputs: - build-number: ${{ steps.output.outputs.build-number }} + android: ${{ steps.android.outputs.result }} + ios: ${{ steps.ios.outputs.result }} + linux: ${{ steps.linux.outputs.result }} + macos: ${{ steps.macos.outputs.result }} + windows: ${{ steps.windows.outputs.result }} + web: ${{ steps.web.outputs.result }} + steps: + - name: Check Message for Any Keywords + id: exists + uses: actions/github-script@v6 + env: + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + return process.env.MESSAGE.includes("platform:"); + + - name: Android + id: android + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:android"); + + - name: iOS + id: ios + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:ios"); + + - name: Linux + id: linux + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:linux"); + + - name: macOS + id: macos + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:macos"); + + - name: Web + id: web + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:web"); + + - name: Windows + id: windows + uses: actions/github-script@v6 + env: + EXISTS: ${{ steps.exists.outputs.result }} + MESSAGE: ${{ github.event.head_commit.message || '' }} + with: + result-encoding: string + script: | + if (process.env.EXISTS == "false") return true; + return process.env.MESSAGE.includes("platform:windows"); + + - name: Log Platform List + env: + android: ${{ steps.android.outputs.result }} + ios: ${{ steps.ios.outputs.result }} + linux: ${{ steps.linux.outputs.result }} + macos: ${{ steps.macos.outputs.result }} + windows: ${{ steps.windows.outputs.result }} + web: ${{ steps.web.outputs.result }} + run: | + echo "Android: $android" + echo "iOS: $ios" + echo "Linux: $linux" + echo "macOS: $macos" + echo "Web: $web" + echo "Windows: $windows" + + build-details: + name: Build Details + runs-on: ubuntu-latest + outputs: + build-number: ${{ steps.build-number.outputs.result }} + build-title: ${{ steps.build-title.outputs.output }} + build-version: ${{ steps.build-version.outputs.current-version }} steps: - name: Checkout Repository uses: actions/checkout@v2 @@ -40,8 +169,8 @@ jobs: COUNT=`git rev-list HEAD --count` echo "::set-output name=commit_count::$COUNT" - - name: Run Script - id: script + - name: Build Number + id: build-number uses: actions/github-script@v6 env: COUNT: ${{ steps.commit_count.outputs.commit_count }} @@ -52,53 +181,26 @@ jobs: const base = 1000000000; return base + Number(count); - - name: Set Output - id: output - run: | - echo ${{ steps.script.outputs.result }} - echo "::set-output name=build-number::${{ steps.script.outputs.result }}" - - build-version: - name: Build Version - runs-on: ubuntu-latest - outputs: - build-version: ${{ steps.output.outputs.build-version }} - steps: - - name: Checkout Repository - uses: actions/checkout@v2 - - - name: Get Version - id: version + - name: Build Version + id: build-version uses: martinbeentjes/npm-get-version-action@v1.1.0 - - name: Set Output - id: output - run: | - echo ${{ steps.version.outputs.current-version }} - echo "::set-output name=build-version::${{ steps.version.outputs.current-version }}" - - build-title: - name: Build Title - needs: [ build-number, build-version ] - runs-on: ubuntu-latest - outputs: - build-title: ${{ steps.output.outputs.build-title }} - steps: - - name: Checkout Repository - uses: actions/checkout@v2 - - - name: Determine Short Hash - id: hash + - name: Build Title + id: build-title run: | HASH=`git rev-parse --short ${{ github.sha }}` - echo "::set-output name=hash::$HASH" - - - name: Set Output - id: output + TITLE="v${{ steps.build-version.outputs.current-version }}-${{ inputs.flavor }}-${{ steps.build-number.outputs.result }}-$HASH" + echo "::set-output name=output::$TITLE" + + - name: Log Build Details + env: + number: ${{ steps.build-number.outputs.result }} + title: ${{ steps.build-title.outputs.output }} + version: ${{ steps.build-version.outputs.current-version }} run: | - TITLE="v${{ needs.build-version.outputs.build-version }}-${{ inputs.flavor }}-${{ needs.build-number.outputs.build-number }}-${{ steps.hash.outputs.hash }}" - echo $TITLE - echo "::set-output name=build-title::$TITLE" + echo "Build Number: $number" + echo "Build Title: $title" + echo "Build Version: $version" generate-files: name: Generate Files diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 32c53c18..67d18cd7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,13 +18,8 @@ on: - stable jobs: - enable: - name: Enable - uses: JagandeepBrar/LunaSea/.github/workflows/enable_check.yml@master - prepare: name: Prepare - needs: [ enable ] uses: JagandeepBrar/LunaSea/.github/workflows/prepare.yml@master with: flavor: ${{ github.event.inputs.flavor || 'edge' }} @@ -40,8 +35,8 @@ jobs: build-android: name: Build Android - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.android == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-android == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_android.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} @@ -52,8 +47,8 @@ jobs: build-ios: name: Build iOS - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.ios == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-ios == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_ios.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} @@ -70,14 +65,14 @@ jobs: build-linux: name: Build Linux - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.linux == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-linux == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_linux.yml@master build-macos: name: Build macOS - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.macos == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-macos == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_macos.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} @@ -99,8 +94,8 @@ jobs: build-web: name: Build Web - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.web == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-web == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_web.yml@master with: build-number: ${{ needs.prepare.outputs.build-number }} @@ -109,8 +104,8 @@ jobs: build-windows: name: Build Windows - needs: [ enable, prepare, validate ] - if: ${{ needs.enable.outputs.windows == 'true' }} + needs: [ prepare, validate ] + if: ${{ needs.prepare.outputs.enable-windows == 'true' }} uses: JagandeepBrar/LunaSea/.github/workflows/build_windows.yml@master secrets: CODE_SIGNING_CERTIFICATE: ${{ secrets.CODE_SIGNING_CERTIFICATE }} @@ -120,18 +115,18 @@ jobs: publish: name: Publish - needs: [ enable, prepare, build-android, build-ios, build-linux, build-macos, build-web, build-windows ] + needs: [ prepare, build-android, build-ios, build-linux, build-macos, build-web, build-windows ] if: ${{ always() }} uses: JagandeepBrar/LunaSea/.github/workflows/publish.yml@master with: flavor: ${{ github.event.inputs.flavor || 'edge' }} build-title: ${{ needs.prepare.outputs.build-title }} - enable-android: ${{ needs.enable.outputs.android }} - enable-ios: ${{ needs.enable.outputs.ios }} - enable-linux: ${{ needs.enable.outputs.linux }} - enable-macos: ${{ needs.enable.outputs.macos }} - enable-web: ${{ needs.enable.outputs.web }} - enable-windows: ${{ needs.enable.outputs.windows }} + enable-android: ${{ needs.prepare.outputs.enable-android }} + enable-ios: ${{ needs.prepare.outputs.enable-ios }} + enable-linux: ${{ needs.prepare.outputs.enable-linux }} + enable-macos: ${{ needs.prepare.outputs.enable-macos }} + enable-web: ${{ needs.prepare.outputs.enable-web }} + enable-windows: ${{ needs.prepare.outputs.enable-windows }} secrets: APPLE_ID: ${{ secrets.APPLE_ID }}