Skip to content
Merged
68 changes: 46 additions & 22 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
7 changes: 5 additions & 2 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -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"]]}}
Expand Down
12 changes: 7 additions & 5 deletions sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading