# For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. name: "CodeQL" on: push: branches: [master, release-7.1] pull_request: # The branches below must be a subset of the branches above branches: [master] schedule: - cron: '0 7 * * 4' env: java: 17 # use temurin because of this one https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Hosted-Tool-Cache java_distribution: 'temurin' # to build cache key for maven per branch branch_name: ${{ github.ref_name }} jobs: analyze_java_sonar: if: github.event_name != 'pull_request' name: Analyze java by sonar runs-on: ubuntu-latest strategy: fail-fast: false steps: # Install Java - name: Setup Java uses: actions/setup-java@v3 with: java-version: '${{ env.java }}' distribution: ${{ env.java_distribution }} # on case PR it check out to commit is merger of PR to base (master) - name: Checkout repository uses: actions/checkout@v3 with: # fetch all commit so sornar can know who change a line, it's resolved Warning: Shallow clone detected, no blame information will be provided. You can convert to non-shallow with 'git fetch --unshallow'. fetch-depth: 0 - name: Cache sonar material restore id: cache-sonar-material-restore uses: actions/cache/restore@v3 with: path: | ~/.sonar/cache key: ${{ runner.os }}-sonar-${{ env.branch_name }} - name: Cache maven material restore id: cache-maven-material-restore uses: actions/cache/restore@v3 with: path: | ~/.m2 key: ${{ runner.os }}-maven-${{ env.branch_name }} # run sonar on master only because sonar for PR come from other repository isn't support at moment (already on develop) # https://stackoverflow.com/a/39720346 # https://docs.sonarqube.org/latest/analysis/pr-decoration/ - name: Build and sonar analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} run: | export MAVEN_OPTS="-Xmx7G -Dorg.slf4j.simpleLogger.defaultLogLevel=warn" sonarProject="-Dsonar.projectKey=${{ github.repository_owner }}_idempiere -Dsonar.organization=${{ github.repository_owner }}" sonar="-Dsonar.java.source=$java -Dsonar.java.target=$java -Dsonar.host.url=https://sonarcloud.io -Dsonar.log.level=WARN" sonarExclusions="-Dsonar.exclusions=**/I_*.java,**/X_*.java" codeql="-Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Denforcer.skip -Dmaven.javadoc.skip -DskipTests -Dmaven.test.skip.exec -Dlicense.skip=true -Drat.skip=true" mvn -B -V -e $codeql $sonar $sonarProject $sonarExclusions package org.sonarsource.scanner.maven:sonar-maven-plugin:sonar - name: Cache sonar material save uses: actions/cache/save@v3 with: path: | ~/.sonar/cache key: ${{ steps.cache-sonar-material-restore.outputs.cache-primary-key }} - name: Cache maven material save uses: actions/cache/save@v3 with: path: | ~/.m2 key: ${{ steps.cache-maven-material-restore.outputs.cache-primary-key }} analyze_java_codeQL: name: Analyze java by code QL runs-on: ubuntu-latest strategy: fail-fast: false steps: # Install Java - name: Setup Java uses: actions/setup-java@v3 with: java-version: '${{ env.java }}' distribution: ${{ env.java_distribution }} # on case PR it check out to commit is merger of PR to base (master) - name: Checkout repository uses: actions/checkout@v3 - name: Cache maven material restore id: cache-maven-material-restore uses: actions/cache/restore@v3 with: path: | ~/.m2 key: ${{ runner.os }}-maven-${{ env.branch_name }} # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: java # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main - name: Autobuild uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 - name: Cache maven material save uses: actions/cache/save@v3 with: path: | ~/.m2 key: ${{ steps.cache-maven-material-restore.outputs.cache-primary-key }} analyze_javascript_codeQL: name: Analyze javascript by code QL runs-on: ubuntu-latest strategy: fail-fast: false steps: # on case PR it check out to commit is merger of PR to base (master) - name: Checkout repository uses: actions/checkout@v3 - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: javascript - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2