diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a41cfa2..6f56546 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,36 +1,141 @@ +name: QA + on: push: branches: - - main + - master pull_request: - branches: - - main + types: [opened, synchronize, reopened] + jobs: - sonarqube-analysis: + argsInputTest: + name: > + 'args' input runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 with: - node-version: '16' - - - name: Set up Java 17 - uses: actions/setup-java@v3 + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run action with args + uses: ./ with: - distribution: 'temurin' # Distribution de Java (par ex: 'temurin') - java-version: '17' - - - name: Install dependencies - run: npm install - - - name: Run SonarQube scan + args: -Dsonar.someArg=aValue -Dsonar.scanner.internal.dumpToFile=./output.properties + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - name: Assert run: | - npx sonar-scanner \ - -Dsonar.projectKey=your_project_key \ - -Dsonar.sources=. \ - -Dsonar.host.url=http://localhost:9000 \ - -Dsonar.login=admin \ - -Dsonar.password=admin + ./test/assertFileContains ./output.properties "sonar.someArg=aValue" + projectBaseDirInputTest: + name: > + 'projectBaseDir' input + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - run: | + mkdir -p ./baseDir + - name: Run action with projectBaseDir + uses: ./ + with: + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + projectBaseDir: ./baseDir + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - name: Assert + run: | + ./test/assertFileContains ./output.properties "sonar.projectBaseDir=.*/baseDir" + sonarTokenRequiredTest: + name: > + 'SONAR_TOKEN' env var required + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run action without SONAR_TOKEN + uses: ./ + with: + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + continue-on-error: true + - name: Previous should have failed + if: ${{ steps.runTest.outcome == 'success'}} + run: | + echo "Expected previous step to fail" + exit 1 + dontFailGradleTest: + name: > + Don't fail on Gradle project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run action on Gradle project + id: runTest + uses: ./ + continue-on-error: true + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + projectBaseDir: ./test/gradle-project + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + - name: Assert + run: | + ./test/assertFileExists ./output.properties + dontFailGradleKotlinTest: + name: > + Don't fail on Kotlin Gradle project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run action on Kotlin Gradle project + id: runTest + uses: ./ + continue-on-error: true + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + projectBaseDir: ./test/gradle-project-kotlin + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + - name: Assert + run: | + ./test/assertFileExists ./output.properties + dontFailMavenTest: + name: > + Don't fail on Maven project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run action on Maven project + id: runTest + uses: ./ + continue-on-error: true + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + projectBaseDir: ./test/maven-project + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + - name: Assert + run: | + ./test/assertFileExists ./output.properties + runnerDebugUsedTest: + name: > + 'RUNNER_DEBUG' is used + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run action with debug mode + uses: ./ + with: + args: -Dsonar.scanner.internal.dumpToFile=./output.properties + env: + RUNNER_DEBUG: 1 + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - name: Assert + run: | + ./test/assertFileContains ./output.properties "sonar.verbose=true"