aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/check-changed-files.js20
-rw-r--r--.github/workflows/pull_request.yml70
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