kopia lustrzana https://github.com/onthegomap/planetiler
81 wiersze
3.2 KiB
YAML
81 wiersze
3.2 KiB
YAML
# This workflow will build a Java project with Maven
|
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
|
|
|
|
name: Analyze
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
sonar:
|
|
name: Analyze with Sonar
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# Disabling shallow clone is recommended for improving relevancy of reporting
|
|
fetch-depth: 0
|
|
submodules: true
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: 21
|
|
distribution: 'temurin'
|
|
cache: 'maven'
|
|
- name: Cache SonarCloud packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.sonar/cache
|
|
key: ${{ runner.os }}-sonar
|
|
restore-keys: ${{ runner.os }}-sonar
|
|
- name: Analyze with SonarCloud
|
|
run: |
|
|
mvn -Dspotless.check.skip -Pcoverage -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
|
|
env:
|
|
# Needed to get some information about the pull request, if any
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# Read-only user, use this token to link SonarLint to SonarCloud as well
|
|
SONAR_TOKEN: c2cfe8bd7368ced07e84a620b7c2487846e220eb
|
|
- name: Wait for SonarCloud API to update...
|
|
run: "sleep 10"
|
|
- name: Upload annotations on PRs
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
uses: actions/github-script@v7
|
|
with:
|
|
github-token: ${{ github.token }}
|
|
script: |
|
|
const pr = context.payload.pull_request.number;
|
|
const url = `https://sonarcloud.io/api/issues/search?pullRequest=${pr}&s=FILE_LINE&resolved=false&sinceLeakPeriod=true&ps=100&facets=severities%2Ctypes&componentKeys=onthegomap_planetiler&organization=onthegomap&additionalFields=_all`;
|
|
console.log("Fetching " + url);
|
|
const response = await github.request(url);
|
|
console.log("Got " + JSON.stringify(response.data));
|
|
response.data.issues.forEach(issue => {
|
|
try {
|
|
if (issue.severity === 'INFO') return;
|
|
const textRange = issue.textRange;
|
|
const rule = encodeURIComponent(issue.rule);
|
|
const message = [
|
|
issue.message,
|
|
'',
|
|
`rule: ${issue.rule} (https://sonarcloud.io/organizations/onthegomap/rules?open=${rule}&rule_key=${rule})`,
|
|
`issue url: https://sonarcloud.io/project/issues?pullRequest=${pr}&open=${encodeURIComponent(issue.key)}&id=onthegomap_planetiler`
|
|
].join('\n');
|
|
const args = {
|
|
title: `${issue.severity} ${issue.type}`,
|
|
file: issue.component.replace(/^[^:]*:/, ''),
|
|
startLine: textRange.startLine,
|
|
endLine: textRange.endLine,
|
|
startColumn: textRange.startOffset,
|
|
endColumn: textRange.endOffset
|
|
};
|
|
core.warning(message, args);
|
|
console.log(args);
|
|
} catch (e) {
|
|
core.error(`Unable to parse sonar issue: ${JSON.stringify(issue)}`);
|
|
}
|
|
});
|