diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e49cf3c..7852785 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,19 +1,101 @@ -# This is a basic workflow that is manually triggered - -name: Test build workflow +name: Build macOS/Windows distributions on: workflow_dispatch: + inputs: + refToBuild: + description: 'Branch, tag or commit SHA1 to build' + required: true + type: string + push: + tags: + - '*' + +env: + GH_TOKEN: ${{ secrets.GH_PIPELINE_TOKEN }} -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "greet" - build-pipeline-mac: - # The type of runner that the job will run on - runs-on: macos-latest + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest, windows-latest] - # Steps represent a sequence of tasks that will be executed as part of the job steps: - # Runs a single command using the runners shell - - name: yarn dist-mac-dev - run: yarn dist-mac-dev + - name: Check out Git repository + uses: actions/checkout@v3 + with: + ref: ${{ inputs.refToBuild }} + + - name: Install Node.js, NPM and Yarn + uses: actions/setup-node@v1 + with: + node-version: 16 + + - name: Install Java and Maven + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '11' + + - name: Check out submodule + run: git submodule update --init --recursive + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Cache yarn + uses: actions/cache@v3 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Cache downloaded Maven dependencies + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Cache downloaded JRE + uses: actions/cache@v3 + with: + path: engine/src/main/jre + # always update cache using this trick: + # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache + key: ${{ runner.os }}-jre-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-jre- + + - name: Install GNU Make on macOS + if: ${{ matrix.os == 'macos-latest' }} + run: | + brew update + brew install make + + - name: Build DMG if on macOS + if: ${{ matrix.os == 'macos-latest' }} + run: gmake dmg + + - name: Build EXE if on Windows + if: ${{ matrix.os == 'windows-latest' }} + shell: cmd + run: engine\\make.exe exe + + - name: Upload the DMG + if: ${{ matrix.os == 'macos-latest' }} + uses: actions/upload-artifact@v3 + with: + name: "daisy-pipeline.dmg" + path: dist/*.dmg + + - name: Upload the EXE + if: ${{ matrix.os == 'windows-latest' }} + uses: actions/upload-artifact@v3 + with: + name: "daisy-pipeline.exe" + path: dist/*.exe