diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/check-changed-files.js | 20 | ||||
-rw-r--r-- | .github/workflows/pull_request.yml | 70 |
2 files changed, 42 insertions, 48 deletions
diff --git a/.github/check-changed-files.js b/.github/check-changed-files.js new file mode 100644 index 00000000..10f86348 --- /dev/null +++ b/.github/check-changed-files.js @@ -0,0 +1,20 @@ +module.exports = async ({github, context}) => { + const result = await github.pulls.listFiles({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + pull_number: context.payload.number, + per_page: 100, + }); + + const files = result.data.filter((file) => { + const filename = file.filename + // Markdown files are not tested + return !filename.endsWith("md") && + // Exclude YAML files as long as they are not the PR workflow itself + !(filename.endsWith("yml") && !filename.endsWith("pull_request.yml")) && !filename.endsWith("yaml") && + // Fastlane metadata does not need tests + !filename.startsWith("fastlane/"); + }); + console.log(`Remaining changed files: ${files.map(file => file.filename)}`) + return files.length != 0; +} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 045a9124..ead79571 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -10,45 +10,35 @@ jobs: unit-tests: runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + with: + fetch-depth: 0 + - name: Check if relevant files have changed uses: actions/github-script@a3e7071a34d7e1f219a8a4de9a5e0a34d1ee1293 id: service-changed with: result-encoding: string script: | - const result = await github.pulls.listFiles({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.number, - per_page: 100 - }) - const files = result.data.filter(file => - // We wanna run this if the PR workflow is modified - (file.filename.endsWith(".yml") && !file.filename.endsWith("pull_request.yml")) || - // Changes in Markdown files don't need tests - file.filename.endsWith(".md") || - // Changes to fastlane metadata aren't covered by tests - file.filename.startsWith("fastlane/") - ) - // If filtered file count and source file count is equal, it means all files - // in this PR are skip-worthy. - return files.length != result.data.length + const script = require('.github/check-changed-files.js') + return await script({github, context}) - uses: actions/setup-java@d202f5dbf7256730fb690ec59f6381650114feb2 if: ${{ steps.service-changed.outputs.result == 'true' }} with: java-version: '11' - - name: Checkout repository - if: ${{ steps.service-changed.outputs.result == 'true' }} - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - with: - fetch-depth: 0 - - name: Copy CI gradle.properties if: ${{ steps.service-changed.outputs.result == 'true' }} run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + - name: Build debug APKs + if: ${{ steps.service-changed.outputs.result == 'true' }} + uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6 + with: + arguments: assembleFreeDebug assembleNonFreeDebug + - name: Run unit tests if: ${{ steps.service-changed.outputs.result == 'true' }} uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6 @@ -62,32 +52,22 @@ jobs: name: Test report path: app/build/reports - run-screenshot-tests: - runs-on: macOS-latest + instrumentation-tests: + runs-on: macos-11 steps: + - name: Checkout repository + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + with: + fetch-depth: 0 + - name: Check if relevant files have changed uses: actions/github-script@a3e7071a34d7e1f219a8a4de9a5e0a34d1ee1293 id: service-changed with: result-encoding: string script: | - const result = await github.pulls.listFiles({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.number, - per_page: 100 - }) - const files = result.data.filter(file => - // We wanna run this if the PR workflow is modified - (file.filename.endsWith(".yml") && !file.filename.endsWith("pull_request.yml")) || - // Changes in Markdown files don't need tests - file.filename.endsWith(".md") || - // Changes to fastlane metadata aren't covered by tests - file.filename.startsWith("fastlane/") - ) - // If filtered file count and source file count is equal, it means all files - // in this PR are skip-worthy. - return files.length != result.data.length + const script = require('.github/check-changed-files.js') + return await script({github, context}) - uses: actions/cache@c64c572235d810460d0d6876e9c705ad5002b353 if: ${{ steps.service-changed.outputs.result == 'true' }} @@ -103,12 +83,6 @@ jobs: with: java-version: '11' - - name: Checkout repository - if: ${{ steps.service-changed.outputs.result == 'true' }} - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - with: - fetch-depth: 0 - - name: Copy CI gradle.properties if: ${{ steps.service-changed.outputs.result == 'true' }} run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties |