diff --git a/.github/workflows/review_pull_request.yml b/.github/workflows/review_pull_request.yml index 1b5f61fe3..31b3a4870 100644 --- a/.github/workflows/review_pull_request.yml +++ b/.github/workflows/review_pull_request.yml @@ -69,30 +69,7 @@ jobs: working-directory: ./template-compose run: ./gradlew koverMergedXmlReport - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '2.7' - - - name: Cache gems - uses: actions/cache@v2 - with: - path: vendor/bundle - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gems- - - - name: Install Bundle and check environment versions - run: | - echo 'Install Bundle' - bundle config path vendor/bundle - bundle install - echo 'Check environment setup versions' - ruby --version - gem --version - bundler --version - - name: Run Danger + uses: danger/kotlin@1.2.0 env: DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: bundle exec danger diff --git a/Dangerfile.df.kts b/Dangerfile.df.kts new file mode 100644 index 000000000..9b972b0e6 --- /dev/null +++ b/Dangerfile.df.kts @@ -0,0 +1,57 @@ +// Dangerfile.df.kts + +import io.gitlab.arturbosch.detekt.detekt +import systems.danger.kotlin.* + +// Set up the Danger Kotlin object +val danger = danger(args) + +// Make it more obvious that a PR is a work in progress and shouldn't be merged yet +if (github.prTitle.contains("WIP")) { + warn("PR is classed as Work in Progress") +} + +// Warn when there is a big PR +if (git.linesOfCode > 500) { + warn("Big PR") +} + +// Warn to encourage a PR description +if (github.prBody.isEmpty()) { + warn("Please provide a summary in the PR description to make it easier to review") +} + +// Warn to encourage that labels should have been used on the PR +if (github.prLabels.isEmpty()) { + warn("Please add labels to this PR") +} + +// Check commits lint and warn on all checks (instead of failing) +commitLint.check(warn = CheckSeverity.All, disable = listOf(CheckId.SubjectLength)) + +// Detekt output check +val detektDir = "**/build/reports/detekt/detekt-result.xml" +detektDir.listFiles().forEach { file -> + kotlinDetekt.skipGradleTask = true + kotlinDetekt.reportFile = file + kotlinDetekt.detekt(inlineMode = true) +} + +// Android Lint output check +val lintDir = "**/**/build/reports/lint/lint-result.xml" +lintDir.listFiles().forEach { file -> + androidLint.skipGradleTask = true + androidLint.reportFile = file + androidLint.lint(inlineMode = true) +} + +// Show Danger test coverage report from Kover for templates +// Report coverage of modified files, warn if total project coverage is under 80% +// or if any modified file's coverage is under 90% +val koverFileTemplateXml = "template-xml/build/reports/kover/merged/xml/report.xml" +markdown("## Kover report for template-xml:") +shroud.reportKover("Template - XML Unit Tests", koverFileTemplateXml, 80, 95, false) + +val koverFileTemplateCompose = "template-compose/build/reports/kover/merged/xml/report.xml" +markdown("## Kover report for template-compose:") +shroud.reportKover("Template - Compose Unit Tests", koverFileTemplateCompose, 80, 95, false)