diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..47c9428 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,44 @@ +name: Build Status + +# Step 1: Build on pull-requests or pushes to main +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + # Step 2: Build Android sample + build-java: + name: Build + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + regex: + - "android" + steps: + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Clone Repo + uses: actions/checkout@v1 + + - name: Set commit range (push to the main branch, for example, merge) + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + run: echo "COMMIT_RANGE="${{ github.event.before }}.."" >> $GITHUB_ENV + + - name: Set commit range (pull request) + if: github.event_name == 'pull_request' + run: echo "COMMIT_RANGE="HEAD~.."" >> $GITHUB_ENV + + - name: Build + run: .github/workflows/build/build.sh + shell: bash + env: + COMMIT_RANGE: ${{ env.COMMIT_RANGE }} + REGEX: ${{ matrix.regex }} diff --git a/.github/workflows/build/build.sh b/.github/workflows/build/build.sh new file mode 100755 index 0000000..ebb1335 --- /dev/null +++ b/.github/workflows/build/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -eo pipefail +projects=("${REGEX}") + +for PROJ_DIR in "${projects[@]}" +do + CHANGES="$(git --no-pager diff --name-only "${COMMIT_RANGE}")"; + echo "Commit range: ${COMMIT_RANGE}; Project dir: ${PROJ_DIR};\n Changes: ${CHANGES}"; + if [[ -n "$(grep -E "(${PROJ_DIR}|\.github\/workflows)" <<< "${CHANGES}")" ]]; then + echo "Building for ${PROJ_DIR}"; + pushd "$PROJ_DIR"; + ./gradlew build; + popd; + fi +done