Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
a615bb0
Initial Commit of CI Pipeline
polygeist111 Jan 26, 2026
0900426
Add missing layout constraints
polygeist111 Jan 26, 2026
eb104e6
Add French Localization of "Log"
polygeist111 Jan 26, 2026
4890ec7
Localize Super Linter Workflow
polygeist111 Jan 26, 2026
5935206
quick fix to super-linter local workflow
polygeist111 Jan 26, 2026
eb90bcf
Continued compatibility updates
polygeist111 Feb 16, 2026
dc83501
Compatibility Updates Attempt 2
polygeist111 Feb 16, 2026
1b64835
Necessary configuration changes
polygeist111 Feb 16, 2026
831c131
Add Kover Dependency
polygeist111 Feb 16, 2026
3adf2a8
Update test_and_report_coverage.yml
polygeist111 Feb 16, 2026
4d734f1
Update test_and_report_coverage.yml
polygeist111 Feb 16, 2026
3127b21
Relocate reports for viewing
github-actions[bot] Feb 16, 2026
9598b21
Implement task failure for gradle lint warnings
polygeist111 Feb 16, 2026
a23ccf5
Merge branch 'feature/ras-cicd' of https://github.com/grey-box/Projec…
polygeist111 Feb 16, 2026
2a52722
Relocate reports for viewing
github-actions[bot] Feb 16, 2026
272d44e
Update format_and_lint.yml
polygeist111 Feb 17, 2026
ab398bc
Merge branch 'feature/ras-cicd' of https://github.com/grey-box/Projec…
polygeist111 Feb 17, 2026
c9de3f4
Relocate reports for viewing
github-actions[bot] Feb 17, 2026
b63d2de
Update format_and_lint.yml
polygeist111 Feb 17, 2026
65c8c11
Merge branch 'feature/ras-cicd' of https://github.com/grey-box/Projec…
polygeist111 Feb 17, 2026
b11a157
Relocate reports for viewing
github-actions[bot] Feb 17, 2026
8c7007e
Update format_and_lint.yml
polygeist111 Feb 17, 2026
cc616e9
Merge branch 'feature/ras-cicd' of https://github.com/grey-box/Projec…
polygeist111 Feb 17, 2026
b4fbbeb
Relocate reports for viewing
github-actions[bot] Feb 17, 2026
8fba811
Migrate Dokka functionality into staged CI development branch (#44)
polygeist111 Feb 23, 2026
b4c5a56
Dokka Workflow Initial Integration
polygeist111 Feb 24, 2026
00ff0c2
Update reporting_orchestrator.yml
polygeist111 Feb 24, 2026
7af382d
Update build_documentation.yml
polygeist111 Feb 24, 2026
a5f8cb0
Relocate reports for viewing
github-actions[bot] Feb 24, 2026
2ada974
Squashed commit of the following:
polygeist111 Mar 5, 2026
b967666
Relocate reports for viewing
github-actions[bot] Mar 5, 2026
3dec142
Test commit to gh-pages instead of actions deployment
polygeist111 Mar 5, 2026
8924d11
Update .gitignore
polygeist111 Mar 16, 2026
85f9528
Update reporting_orchestrator.yml
polygeist111 Mar 16, 2026
5d17d93
Update Checkout Versions
polygeist111 Mar 16, 2026
29e56af
Update reporting_orchestrator.yml
polygeist111 Mar 16, 2026
649b71c
Update reporting_orchestrator.yml
polygeist111 Mar 16, 2026
828788f
Update reporting_orchestrator.yml
polygeist111 Mar 16, 2026
f4590c0
Update reporting_orchestrator.yml
polygeist111 Mar 16, 2026
19857d5
Update reporting_orchestrator.yml
polygeist111 Mar 17, 2026
6d69d0b
Update reporting_orchestrator.yml
polygeist111 Mar 17, 2026
354c6c5
Update reporting_orchestrator.yml
polygeist111 Mar 17, 2026
c710a41
Update reporting_orchestrator.yml
polygeist111 Mar 18, 2026
bab1963
Update reporting_orchestrator.yml
polygeist111 Mar 18, 2026
9de0550
Update reporting_orchestrator.yml
polygeist111 Mar 23, 2026
78c8fa9
Update major actions versions
polygeist111 Mar 23, 2026
ef60f54
Update reporting_orchestrator.yml
polygeist111 Mar 23, 2026
f2f99e3
Update build_artifacts.yml
polygeist111 Mar 23, 2026
75db282
Update reporting_orchestrator.yml
polygeist111 Mar 23, 2026
cacb26b
Pivot to Cherrypick
polygeist111 Mar 23, 2026
afe33bd
Update reporting_orchestrator.yml
polygeist111 Mar 23, 2026
6550121
Update build_artifacts.yml
polygeist111 Mar 23, 2026
55a7fbb
Update reporting_orchestrator.yml
polygeist111 Mar 23, 2026
a67a2e0
Implement Timestamping
polygeist111 Mar 24, 2026
873c78b
Rename include_html.js
polygeist111 Mar 30, 2026
cff4b01
Visibility tweaks (debugging)
polygeist111 Mar 30, 2026
dd75410
Add Link on Success
polygeist111 Mar 30, 2026
74ca302
Update reporting_orchestrator.yml
polygeist111 Mar 30, 2026
02497f8
Separate build from dependency graph task
polygeist111 Mar 30, 2026
0331cd9
Misc. Workflow Updates
polygeist111 Mar 30, 2026
79562d5
Separate super linter and gradle linter
polygeist111 Mar 30, 2026
46fde07
Update reporting_orchestrator.yml
polygeist111 Mar 30, 2026
13a8362
Update reporting_orchestrator.yml
polygeist111 Mar 30, 2026
79bd42a
Update reporting_orchestrator.yml
polygeist111 Mar 30, 2026
51c28ff
Temp rename docs folder
polygeist111 Mar 30, 2026
5d54af0
another attempt at documentation folder transfer
polygeist111 Mar 30, 2026
245855e
Docs replacement
polygeist111 Mar 30, 2026
95a856d
Disable gradle build summary outputs
polygeist111 Mar 30, 2026
4fe7afe
Typo correction
polygeist111 Mar 30, 2026
c1ff9e9
Typo correction
polygeist111 Mar 30, 2026
eb230dc
Change summary settings
polygeist111 Mar 30, 2026
58a70b3
Test removal of build reports from commit
polygeist111 Apr 6, 2026
a649ab6
Merge branch 'feature/ras-cicd' of https://github.com/grey-box/Projec…
polygeist111 Apr 6, 2026
538c4c1
Add no-cache rule
polygeist111 Apr 6, 2026
61c6a30
Eliminate Gradle Linter Internationalization Warnings
polygeist111 Apr 6, 2026
e946c24
Eliminate Gradle Linter Version Catalog Warnings
polygeist111 Apr 6, 2026
3be8d8f
Test PR Handling of Report Orchestrator
polygeist111 Apr 6, 2026
97ee270
Test clean up Build_Reports
polygeist111 Apr 13, 2026
faebd87
Update reporting_orchestrator.yml
polygeist111 Apr 13, 2026
82edd62
Update reporting_orchestrator.yml
polygeist111 Apr 13, 2026
816845b
Update RequestPermissionScreen.kt
polygeist111 Apr 13, 2026
8cfd5f9
Update RequestPermissionScreen.kt
polygeist111 Apr 13, 2026
7952647
Suppress ObsoleteSdkInt linter checks
polygeist111 Apr 13, 2026
9b03f01
Address Autoboxing linter note
polygeist111 Apr 13, 2026
562a1a5
Disable UnusedResources linter checks
polygeist111 Apr 13, 2026
fe0b1a7
Update build.gradle.kts
polygeist111 Apr 13, 2026
9e37d21
Update colors.xml
polygeist111 Apr 13, 2026
0476d6d
Update MainActivity.kt
polygeist111 Apr 13, 2026
b5b7813
Update MainActivity.kt
polygeist111 Apr 13, 2026
dbc5b8f
Address InlinedAPI linter warning
polygeist111 Apr 13, 2026
ff4de7f
Update RequestPermissionScreen.kt
polygeist111 Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Mesh CI

---

## NOTES

- To run the orchestrator to test on branches outside of main, run ```gh workflow run reporting_orchestrator.yml --ref feature/ras-cicd```, replacing "feature/ras-cicd" whichever branch you wish to run the workflow against.
- Super-Linter summary can only be added on pushes and PRs, not manual runs. Super-Linter is still running, you just need to dig into the workflow details to view useful results.

---

## Pipeline Flow

The CI pipeline behaves as follows:

1. run Prettier on web-related filetypes, as well as XML
a. Do not use prettier-plugin-kotlin, it is not maintained and errors regularly
2. On push, run super-linter. For all possible cases, run autofix (this covers Kotlin)

- This Section Needs updating

---

## General TODO

### Ongoing

- For all workflows, add current build summary as commit/pr comments
- Add script to preview to change iFrame title and onscreen title + pass/fail indicator
- For orchestrator
- determine how to allow multiple reusable workflows to share build cache
- add setting on manual run whether to commit anything/deploy to pages


### Backlog

- Break workflows out into multiple intelligently-grouped jobs for improved execution visibility
- Add graceful error handling if specific preview reports cannot be generated
- Add graceful error handling to note that coverage reporting can only be generated on PRs and pushes, not workflow dispatches
- Research if it's possible to ask to run workflows on any push

### Integration

7 changes: 7 additions & 0 deletions .github/linters/.markdown-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
# MD013/line-length - Line length
MD013:
# Number of characters, default is 80
line_length: 9999
# check code blocks?
code_blocks: false
53 changes: 53 additions & 0 deletions .github/linters/.yaml-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
###########################################
# These are the rules used for #
# linting all the yaml files in the stack #
# NOTE: #
# You can disable line with: #
# # yamllint disable-line #
###########################################
rules:
braces:
level: warning
min-spaces-inside: 0
max-spaces-inside: 0
min-spaces-inside-empty: 1
max-spaces-inside-empty: 5
brackets:
level: warning
min-spaces-inside: 0
max-spaces-inside: 0
min-spaces-inside-empty: 1
max-spaces-inside-empty: 5
colons:
level: warning
max-spaces-before: 0
max-spaces-after: 1
commas:
level: warning
max-spaces-before: 0
min-spaces-after: 1
max-spaces-after: 1
comments: disable
comments-indentation: disable
document-end: disable
document-start: disable
empty-lines:
level: warning
max: 2
max-start: 0
max-end: 0
hyphens:
level: warning
max-spaces-after: 1
indentation:
level: warning
spaces: consistent
indent-sequences: true
check-multi-line-strings: false
key-duplicates: enable
line-length: disable
new-line-at-end-of-file: disable
new-lines:
type: unix
trailing-spaces: disable
77 changes: 77 additions & 0 deletions .github/workflows/build_artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: Build APKs
run-name: ${{ github.event.inputs.custom_run_name || github.workflow }}

on:
# run when called by another workflow
workflow_call:
inputs:
skip_commit:
description: "Skip committing reports"
required: false
type: boolean
default: false

# run on demand
workflow_dispatch:
inputs:
custom-run-name:
description: "Custom name for this Actions run"
required: false
type: string

# cancel any previously-started, yet still active runs of this workflow on the same branch
concurrency:
group: ${{ github.ref }}-Build APKs
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Notify User to Scroll
run: |
echo "## Scroll to the end of the page for artifacts :arrow_down:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

- name: Check Out Code
uses: actions/checkout@v6

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"

- name: Set Up Gradle
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: never

- name: Build with Gradle Wrapper
run: ./gradlew assemble # use assemble because build runs tests, even though a different part of the system handles that

- name: Upload App Debug APK
uses: actions/upload-artifact@v6
with:
name: app-debug-apk
path: app/build/outputs/apk/debug/app-debug.apk
retention-days: 1

- name: Upload App Release APK
uses: actions/upload-artifact@v6
with:
name: app-release-apk
path: app/build/outputs/apk/release/app-release-unsigned.apk
retention-days: 1
78 changes: 78 additions & 0 deletions .github/workflows/build_documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Build Dokka Docs
run-name: ${{ github.event.inputs.custom_run_name || github.workflow }}

on:
# run when called by another workflow
workflow_call:
inputs:
skip_commit:
description: "Skip committing reports"
required: false
type: boolean
default: false

# run on demand
workflow_dispatch:
inputs:
custom-run-name:
description: "Custom name for this Actions run"
required: false
type: string

# cancel any previously-started, yet still active runs of this workflow on the same branch
concurrency:
group: ${{ github.ref }}-Build Dokka Docs
cancel-in-progress: true

permissions: read-all

# adapted from https://mskelton.medium.com/auto-formatting-code-using-prettier-and-github-actions-ed458f58b7df
jobs:
call-dokka:
name: Call Dokka Html
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check Out Code
uses: actions/checkout@v6

- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"

- name: Set Up Gradle
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: never

- name: Generate Dokka Pages
run: ./gradlew dokkaGenerate
continue-on-error: true

- name: Configure Git Identity (if called individually)
if: ${{ inputs.skip_commit != true }}
run: |
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"

- name: Copy Documentation to Viewing Directory (if called individually)
if: ${{ inputs.skip_commit != true }}
run: |
mkdir ./build_reports/documentation
cp -r ./app/build/dokka/html/ ./build_reports/documentation
git add --force ./build_reports/
git commit -m "Relocate documentation for viewing"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Documentation Artifact (if called by orchestrator)
if: ${{ inputs.skip_commit == true }}
uses: actions/upload-artifact@v6
with:
name: dokka_documentation_artifact
path: ./app/build/dokka/html
retention-days: 1
101 changes: 101 additions & 0 deletions .github/workflows/call_gradle_lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Lint Kotlin Code (Gradle Linter)
run-name: ${{ github.event.inputs.custom_run_name || github.workflow }}

on:
# run when called by another workflow
workflow_call:
inputs:
skip_commit:
description: "Skip committing reports"
required: false
type: boolean
default: false

# run on demand
workflow_dispatch:
inputs:
custom-run-name:
description: "Custom name for this Actions run"
required: false
type: string

# cancel any previously-started, yet still active runs of this workflow on the same branch
concurrency:
group: ${{ github.ref }}-Lint Kotlin Code (Gradle Linter)
cancel-in-progress: true

permissions: read-all

# adapted from https://mskelton.medium.com/auto-formatting-code-using-prettier-and-github-actions-ed458f58b7df
jobs:
call-gradle-linter:
name: Call Gradle Linter
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check Out Code
uses: actions/checkout@v6

- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"

- name: Set Up Gradle
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: never

- name: Call Debug and Release Linters
# ostensibly, ./gradlew lint should run both, but in practice on my (Thalia Wood's), it only runs the Debug linter
run: |
set -o pipefail
output1=$(./gradlew lintDebug)
output2=$(./gradlew lintRelease)
echo "$output1"
echo "---"
echo "$output2"
if [[ (echo "$output1" | grep -Ezq " Task :app:compileDebugKotlin\nw: file:") || (echo "$output2" | grep -Ezq " Task :app:compileReleaseKotlin\nw: file:") ]]; then
echo "Linting warnings detected. View details at https://grey-box.github.io/Project-Mesh/ once the workflow is finished."
exit 1
else
echo "Linting returned clean"
fi
continue-on-error: true

- name: Configure Git Identity (if called individually)
if: ${{ inputs.skip_commit != true }}
run: |
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"

- name: Copy Linting Reports to Viewing Directory (if called individually)
if: ${{ inputs.skip_commit != true }}
run: |
mkdir ./build_reports/lint_results_debug
cp ./app/build/reports/lint-results-debug.html ./build_reports/lint_report_debug/lint_report_debug.html
mkdir ./build_reports/lint_results_release
cp ./app/build/reports/lint-results-release.html ./build_reports/lint_report_release/lint_report_release.html
git add --force ./build_reports/
git commit -m "Relocate linting report for viewing"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Lint Debug Artifact (if called by orchestrator)
if: ${{ inputs.skip_commit == true }}
uses: actions/upload-artifact@v6
with:
name: lint_report_debug_artifact
path: ./app/build/reports/lint-results-debug.html
retention-days: 1

- name: Upload Lint Release Artifact (if called by orchestrator)
if: ${{ inputs.skip_commit == true }}
uses: actions/upload-artifact@v6
with:
name: lint_report_release_artifact
path: ./app/build/reports/lint-results-release.html
retention-days: 1
Loading
Loading