Compare commits
14 Commits
fix/re-bot
...
v2.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b0bfc149f | ||
|
|
9cc4f58b79 | ||
|
|
5829c57497 | ||
|
|
d57dba2a10 | ||
|
|
427bad7016 | ||
|
|
a6ba0aafc2 | ||
|
|
1db0a52e3c | ||
|
|
50d5d98163 | ||
|
|
26fe7d6b0e | ||
|
|
fd8151470c | ||
|
|
bdba66714e | ||
|
|
72def085d4 | ||
|
|
7295e71c95 | ||
|
|
b755ad2c7e |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -1 +1 @@
|
|||||||
* @sonarsource/sonarqube-team
|
.github/CODEOWNERS @sonarsource/sonarqube-team
|
||||||
|
|||||||
16
.github/dependabot.yml
vendored
Normal file
16
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
timezone: "CET"
|
||||||
|
open-pull-requests-limit: 100
|
||||||
|
commit-message:
|
||||||
|
prefix: "NO-JIRA "
|
||||||
4
.github/workflows/qa.yml
vendored
4
.github/workflows/qa.yml
vendored
@@ -1,12 +1,12 @@
|
|||||||
name: QA
|
name: QA
|
||||||
|
|
||||||
on: push
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run_qa:
|
run_qa:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- run: ./test/run-qa.sh
|
- run: ./test/run-qa.sh
|
||||||
|
|||||||
32
.github/workflows/update-tags.yml
vendored
Normal file
32
.github/workflows/update-tags.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Update Tags
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*.*.*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Parse semver
|
||||||
|
uses: madhead/semver-utils@latest
|
||||||
|
id: version
|
||||||
|
with:
|
||||||
|
version: ${{ github.ref_name }}
|
||||||
|
|
||||||
|
- name: Update tags
|
||||||
|
run: |
|
||||||
|
TAGS='v${{ steps.version.outputs.major }} v${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}'
|
||||||
|
|
||||||
|
for t in $TAGS; do
|
||||||
|
git tag -f "$t"
|
||||||
|
git push origin ":$t" 2>/dev/null || true
|
||||||
|
git push origin "$t"
|
||||||
|
done
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
FROM sonarsource/sonar-scanner-cli:4.6
|
FROM sonarsource/sonar-scanner-cli:5.0
|
||||||
|
|
||||||
LABEL version="1.0.0" \
|
LABEL version="2.0.0" \
|
||||||
repository="https://github.com/sonarsource/sonarqube-scan-action" \
|
repository="https://github.com/sonarsource/sonarqube-scan-action" \
|
||||||
homepage="https://github.com/sonarsource/sonarqube-scan-action" \
|
homepage="https://github.com/sonarsource/sonarqube-scan-action" \
|
||||||
maintainer="SonarSource" \
|
maintainer="SonarSource" \
|
||||||
@@ -9,9 +9,9 @@ LABEL version="1.0.0" \
|
|||||||
com.github.actions.icon="check" \
|
com.github.actions.icon="check" \
|
||||||
com.github.actions.color="green"
|
com.github.actions.color="green"
|
||||||
|
|
||||||
# https://help.github.com/en/actions/creating-actions/dockerfile-support-for-github-actions#user
|
|
||||||
USER root
|
|
||||||
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
|
COPY cleanup.sh /cleanup.sh
|
||||||
|
RUN chmod +x /cleanup.sh
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -28,11 +28,13 @@ The workflow YAML file will usually look something like this:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
on:
|
on:
|
||||||
# Trigger analysis when pushing in master or pull requests, and when creating
|
# Trigger analysis when pushing to your main branches, and when creating a pull request.
|
||||||
# a pull request.
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
|
- main
|
||||||
- master
|
- master
|
||||||
|
- develop
|
||||||
|
- 'releases/**'
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [opened, synchronize, reopened]
|
types: [opened, synchronize, reopened]
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@ jobs:
|
|||||||
sonarqube:
|
sonarqube:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
# Disabling shallow clone is recommended for improving relevancy of reporting
|
# Disabling shallow clone is recommended for improving relevancy of reporting
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@@ -63,6 +65,17 @@ If your source code file names contain special characters that are not covered b
|
|||||||
LC_ALL: "ru_RU.UTF-8"
|
LC_ALL: "ru_RU.UTF-8"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If your SonarQube server uses a self-signed certificate, you can pass a root certificate (in PEM format) to the java certificate store:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: SonarQube Scan
|
||||||
|
uses: sonarsource/sonarqube-scan-action@master
|
||||||
|
env:
|
||||||
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||||
|
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
|
||||||
|
SONAR_ROOT_CERT: ${{ secrets.SONAR_ROOT_CERT }}
|
||||||
|
```
|
||||||
|
|
||||||
You can change the analysis base directory by using the optional input `projectBaseDir` like this:
|
You can change the analysis base directory by using the optional input `projectBaseDir` like this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -91,6 +104,7 @@ More information about possible analysis parameters can be found in [the documen
|
|||||||
|
|
||||||
- `SONAR_TOKEN` – **Required** this is the token used to authenticate access to SonarQube. You can read more about security tokens [here](https://docs.sonarqube.org/latest/user-guide/user-token/). You can set the `SONAR_TOKEN` environment variable in the "Secrets" settings page of your repository, or you can add them at the level of your GitHub organization (recommended).
|
- `SONAR_TOKEN` – **Required** this is the token used to authenticate access to SonarQube. You can read more about security tokens [here](https://docs.sonarqube.org/latest/user-guide/user-token/). You can set the `SONAR_TOKEN` environment variable in the "Secrets" settings page of your repository, or you can add them at the level of your GitHub organization (recommended).
|
||||||
- `SONAR_HOST_URL` – **Required** this tells the scanner where SonarQube is hosted. You can set the `SONAR_HOST_URL` environment variable in the "Secrets" settings page of your repository, or you can add them at the level of your GitHub organization (recommended).
|
- `SONAR_HOST_URL` – **Required** this tells the scanner where SonarQube is hosted. You can set the `SONAR_HOST_URL` environment variable in the "Secrets" settings page of your repository, or you can add them at the level of your GitHub organization (recommended).
|
||||||
|
- `SONAR_ROOT_CERT` – Holds an additional root certificate (in PEM format) that is used to validate the SonarQube server certificate. You can set the `SONAR_ROOT_CERT` environment variable in the "Secrets" settings page of your repository, or you can add them at the level of your GitHub organization (recommended).
|
||||||
|
|
||||||
## Alternatives for Java, .NET, and C/C++ projects
|
## Alternatives for Java, .NET, and C/C++ projects
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ branding:
|
|||||||
runs:
|
runs:
|
||||||
using: docker
|
using: docker
|
||||||
image: Dockerfile
|
image: Dockerfile
|
||||||
|
entrypoint: "/entrypoint.sh"
|
||||||
|
post-entrypoint: "/cleanup.sh"
|
||||||
inputs:
|
inputs:
|
||||||
args:
|
args:
|
||||||
description: Additional arguments to the sonar-scanner
|
description: Additional arguments to the sonar-scanner
|
||||||
|
|||||||
8
cleanup.sh
Executable file
8
cleanup.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
_tmp_file=$(ls "${INPUT_PROJECTBASEDIR}/" | head -1)
|
||||||
|
PERM=$(stat -c "%u:%g" "${INPUT_PROJECTBASEDIR}/$_tmp_file")
|
||||||
|
|
||||||
|
chown -R $PERM "${INPUT_PROJECTBASEDIR}/"
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [[ -z "${SONAR_TOKEN}" ]]; then
|
if [[ -z "${SONAR_TOKEN}" ]]; then
|
||||||
echo "This GitHub Action requires the SONAR_TOKEN env variable."
|
echo "============================ WARNING ============================"
|
||||||
exit 1
|
echo "Running this GitHub Action without SONAR_TOKEN is not recommended"
|
||||||
|
echo "============================ WARNING ============================"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${SONAR_HOST_URL}" ]]; then
|
if [[ -z "${SONAR_HOST_URL}" ]]; then
|
||||||
@@ -12,6 +13,13 @@ if [[ -z "${SONAR_HOST_URL}" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${SONAR_ROOT_CERT}" ]]; then
|
||||||
|
echo "Adding custom root certificate to java certificate store"
|
||||||
|
rm -f /tmp/tmpcert.pem
|
||||||
|
echo "${SONAR_ROOT_CERT}" > /tmp/tmpcert.pem
|
||||||
|
keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias sonarqube -file /tmp/tmpcert.pem
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -f "${INPUT_PROJECTBASEDIR%/}pom.xml" ]]; then
|
if [[ -f "${INPUT_PROJECTBASEDIR%/}pom.xml" ]]; then
|
||||||
echo "Maven project detected. You should run the goal 'org.sonarsource.scanner.maven:sonar' during build rather than using this GitHub Action."
|
echo "Maven project detected. You should run the goal 'org.sonarsource.scanner.maven:sonar' during build rather than using this GitHub Action."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -25,3 +33,4 @@ fi
|
|||||||
unset JAVA_HOME
|
unset JAVA_HOME
|
||||||
|
|
||||||
sonar-scanner -Dsonar.projectBaseDir=${INPUT_PROJECTBASEDIR} ${INPUT_ARGS}
|
sonar-scanner -Dsonar.projectBaseDir=${INPUT_PROJECTBASEDIR} ${INPUT_ARGS}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ check_sq_is_up() {
|
|||||||
echo $status;
|
echo $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_current_perm=$(stat -c "%u:%g" $(pwd))
|
||||||
|
|
||||||
info "Build scanner action..."
|
info "Build scanner action..."
|
||||||
docker build --no-cache -t sonarsource/sonarqube-scan-action .
|
docker build --no-cache -t sonarsource/sonarqube-scan-action .
|
||||||
if [[ ! $? -eq 0 ]]; then
|
if [[ ! $? -eq 0 ]]; then
|
||||||
@@ -88,13 +90,19 @@ success "Correctly failed fast."
|
|||||||
|
|
||||||
info "Analyze project..."
|
info "Analyze project..."
|
||||||
cd test/example-project/
|
cd test/example-project/
|
||||||
docker run -v `pwd`:/github/workspace/ --workdir /github/workspace --network $network --env SONAR_TOKEN=$token --env SONAR_HOST_URL='http://sonarqube:9000' sonarsource/sonarqube-scan-action
|
docker run -v `pwd`:/github/workspace/ --workdir /github/workspace --network $network --env INPUT_PROJECTBASEDIR=/github/workspace --env SONAR_TOKEN=$token --env SONAR_HOST_URL='http://sonarqube:9000' sonarsource/sonarqube-scan-action
|
||||||
|
docker run -v `pwd`:/github/workspace/ --workdir /github/workspace --network $network --env INPUT_PROJECTBASEDIR=/github/workspace --entrypoint /cleanup.sh sonarsource/sonarqube-scan-action
|
||||||
if [[ ! $? -eq 0 ]]; then
|
if [[ ! $? -eq 0 ]]; then
|
||||||
error "Couldn't run the analysis."
|
error "Couldn't run the analysis."
|
||||||
exit 1
|
exit 1
|
||||||
elif [[ ! -f ".scannerwork/report-task.txt" ]]; then
|
elif [[ ! -f ".scannerwork/report-task.txt" ]]; then
|
||||||
error "Couldn't find the report task file. Analysis failed."
|
error "Couldn't find the report task file. Analysis failed."
|
||||||
exit 1
|
exit 1
|
||||||
|
elif [ ! "$(stat -c "%u:%g" ".scannerwork/report-task.txt")" == "$_current_perm" ]; then
|
||||||
|
error "File permissions differ from desired once"
|
||||||
|
error "desired: $_current_perm"
|
||||||
|
error "actual: $(stat -c "%u:%g" ".scannerwork/report-task.txt")"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
success "Analysis successful."
|
success "Analysis successful."
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user