diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d22381..3c6fe17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,51 +6,76 @@ on: - master pull_request: workflow_dispatch: + inputs: + PUSH_CLOJARS: + description: 'Push test-jar to clojars' + required: true + type: boolean jobs: job-build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: # Disabling shallow clone is recommended for improving relevancy of reporting for sonar fetch-depth: 0 - name: Cache local Maven repository - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-lein-${{ hashFiles('**/project.clj') }} restore-keys: | - ${{ runner.os }}-maven- - - name: Cache local Maven repository + ${{ runner.os }}-lein- + - name: Cache local M2 repository - - name: Set up JDK 11 - uses: actions/setup-java@v2 + - name: Set up JDK 21 + uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: '11' + distribution: 'temurin' + java-version: '21' + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@12.5 + with: + lein: 2.11.2 + + # Ubuntu Repos on Azure fail often. Attempt to install before other + # long-running operations. + # xmllinter for tests checks + # jq for SonarQube Quality Gate check + - name: Install xmllinter and jq (for "Fail on failed tests") + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y libxml2-utils jq - name: Setup Sonar Scanner - uses: warchant/setup-sonar-scanner@v3 + uses: warchant/setup-sonar-scanner@v7 with: - version: 4.6.2.2472 + version: 5.0.2.4997 - name: Run Sonar Scanner env: # provide GITHUB_TOKEN to get access to secrets.SONAR_TOKEN GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: sonar-scanner - -Dsonar.login=${{ secrets.SONAR_TOKEN }} + run: sonar-scanner -X + -Dsonar.token=${{ secrets.SONARQUBE_TOKEN}} -Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} + - name: List test reports + run: | + pwd + ls -lR test-reports + - name: Get list of tests if: always() id: tests uses: Rishabh510/Path-lister-action@master with: - path: "test-reports" + path: "test-reports/xml" type: ".xml" - name: Fail on failed tests @@ -82,7 +107,7 @@ jobs: with: scanMetadataReportFile: .scannerwork/report-task.txt env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} - uses: s4u/maven-settings-action@v2.2.0 @@ -102,16 +127,15 @@ jobs: id: extract_branch - name: Build - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: lein do clean, jar, install - - name: Deploy + - name: Deploy to clojars + run: lein deploy clojars + if: ${{ inputs.PUSH_CLOJARS }} + shell: bash env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - run: lein deploy + CLOJARS_USERNAME: ${{ secrets.CLOJARS_USERNAME }} + CLOJARS_PASSWORD: ${{ secrets.CLOJARS_PASSWORD }} - name: Publish Unit Test Results uses: EnricoMi/publish-unit-test-result-action@v1 diff --git a/project.clj b/project.clj index e45af43..de23c22 100644 --- a/project.clj +++ b/project.clj @@ -60,10 +60,13 @@ :profiles {:provided {:dependencies [[org.clojure/clojure] [org.clojure/clojurescript]] } - :test {:aot :all + :test { + ;:aot :all :source-paths ["test/clj" "test/cljc"] :resource-paths ["dev-resources"] - :plugins [[lein-test-report-junit-xml "0.2.0"]] + :plugins [[org.clojars.konstan/lein-test-report-sonar "0.0.4"]] + :test-report-sonar {:output-dir "test-reports" + :emit-junit-xml true} :test-report-junit-xml {:output-dir "test-reports"}} :dev {:dependencies [[com.fasterxml.jackson.core/jackson-databind "2.15.2"] [clj-kondo "RELEASE"]]}} diff --git a/sonar-project.properties b/sonar-project.properties index d261caa..4802a14 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,13 +2,15 @@ sonar.organization=nuvla sonar.projectKey=nuvla-clojure-library sonar.projectName=nuvla-clojure-library sonar.sources=src,project.clj +sonar.clojure.file.suffixes=.clj,.cljc +sonar.lang.patterns.clj=**/*.clj,**/*.cljc sonar.tests=test sonar.clojure.sensors.timeout=3600 -sonar.clojure.eastwood.enabled=true -sonar.clojure.kibit.enabled=true -sonar.clojure.kondo.enabled=true -sonar.clojure.ancient.enabled=true -sonar.clojure.nvd.enabled=true +sonar.clojure.eastwood.enabled=false +sonar.clojure.kibit.enabled=false +sonar.clojure.kondo.enabled=false +sonar.clojure.ancient.enabled=false +sonar.clojure.nvd.enabled=false sonar.clojure.nvd.reportPath=target/nvd/dependency-check-report.json sonar.clojure.cloverage.enabled=true sonar.clojure.cloverage.reportPath=target/coverage/codecov.json