Giter VIP home page Giter VIP logo

sonarqube-action's Introduction

SonarQube GitHub Action

Using this GitHub Action, scan your code with SonarQube scanner to detects bugs, vulnerabilities and code smells in more than 20 programming languages!

SonarQube is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities on 20+ programming languages.

Requirements

Usage

The workflow, usually declared in .github/workflows/build.yaml, looks like:

on:
  # Trigger analysis when pushing in master or pull requests, and when creating
  # a pull request. 
  push:
    branches:
      - master
  pull_request:
      types: [opened, synchronize, reopened]

name: SonarQube Scan
jobs:
  sonarqube:
    name: SonarQube Trigger
    runs-on: ubuntu-latest
    steps:
    - name: Checking out
      uses: actions/checkout@master
      with:
        # Disabling shallow clone is recommended for improving relevancy of reporting
        fetch-depth: 0
    - name: SonarQube Scan
      uses: kitabisa/[email protected]
      with:
        host: ${{ secrets.SONARQUBE_HOST }}
        login: ${{ secrets.SONARQUBE_TOKEN }}

You can change the analysis base directory and/or project key by using the optional input like this:

uses: kitabisa/sonarqube-action@master
with:
  host: ${{ secrets.SONARQUBE_HOST }}
  login: ${{ secrets.SONARQUBE_TOKEN }}
  projectBaseDir: "src/"
  projectKey: "my-custom-project"

Inputs

These are some of the supported input parameters of action.

Parameter Description Required? Default Note
host SonarQube server URL ๐ŸŸข
login Login or authentication token of a SonarQube user ๐ŸŸข Execute Analysis permission required.
password The password that goes with the login username ๐Ÿ”ด This should be left blank if an login are authentication token.
projectBaseDir Set custom project base directory analysis ๐Ÿ”ด .
projectKey The project's unique key ๐Ÿ”ด Allowed characters are: letters, numbers, -, _, . and :, with at least one non-digit.
projectName Name of the project ๐Ÿ”ด It will be displayed on the SonarQube web interface.
projectVersion The project version ๐Ÿ”ด
encoding Encoding of the source code ๐Ÿ”ด UTF-8

Note

If you opt to configure the project metadata and other related settings in a sonar-project.properties file (must be placed within the base directory, projectBaseDir) instead of using input parameters, this action is compatible with that approach!

License

The Dockerfile and associated scripts and documentation in this project are released under the MIT License.

Container images built with this project include third party materials.

sonarqube-action's People

Contributors

dwisiswant0 avatar erdem-mn avatar jankal avatar leonardomerlin avatar olofvndrhr avatar tdi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sonarqube-action's Issues

project key not read from SonarQube

Issue and Steps to Reproduce

I run this action for a repository where I have defined a sonar-project.properties, in which I have defined:

sonar.projectKey=onboarding

however during Action execution I can see the project key is always set to 'workspace' (overwriting results for any existing project with that key name):

INFO: Project key: workspace

Other settings in sonar-project.properties seem to be read fine.
Is there a workaround for this behavior?

Thanks!

Versions

Screenshots

Screenshot 2020-07-21 at 4 39 46 PM

Screenshot 2020-07-21 at 4 40 22 PM

Expected

Actual

Run kitabisa/sonarqube-action@master
/usr/bin/docker run --name c3f261e9bc3863a51240618c86830b84fa2fe6_0c0f1d --label c3f261 --workdir /github/workspace --rm -e INPUT_HOST -e INPUT_LOGIN -e INPUT_PROJECTKEY -e INPUT_PROJECTNAME -e INPUT_PROJECTVERSION -e INPUT_PROJECTBASEDIR -e INPUT_PASSWORD -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/actions-runner/_work/_temp/_github_home":"/github/home" -v "/actions-runner/_work/_temp/_github_workflow":"/github/workflow" -v "/actions-runner/_work/onboarding/onboarding":"/github/workspace" c3f261:e9bc3863a51240618c86830b84fa2fe6
INFO: Scanner configuration file: /usr/lib/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /github/workspace/sonar-project.properties
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_181 Oracle Corporation (64-bit)
INFO: Linux 4.4.0-1109-aws amd64
INFO: User cache: /root/.sonar/cache
INFO: SonarQube server 7.7.0
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Load global settings
INFO: Load global settings (done) | time=172ms
INFO: User cache: /root/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=70ms
INFO: Load/download plugins (done) | time=4030ms
INFO: Process project properties
INFO: Execute project builders
INFO: Execute project builders (done) | time=4ms
INFO: Project key: workspace
INFO: Base dir: /github/workspace
INFO: Working dir: /github/workspace/.scannerwork
INFO: Load project settings for component key: 'workspace'
INFO: Load project settings for component key: 'workspace' (done) | time=36ms
INFO: Load project repositories
INFO: Load project repositories (done) | time=115ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=61ms
INFO: Load active rules
INFO: Load active rules (done) | time=1562ms
INFO: Indexing files...
INFO: Project configuration:
INFO: Excluded sources: test/, scripts/, rpc/, proto/, docs/** configs/, cmd/, build/, bin/, **/*_test.go, **/*mock.go, */coverage, coverage/
INFO: 64 files indexed
INFO: 0 files ignored because of inclusion/exclusion patterns
INFO: 0 files ignored because of scm ignore settings
INFO: Quality profile for go: Sonar way
INFO: ------------- Run sensors on module workspace
INFO: Load metrics repository
INFO: Load metrics repository (done) | time=21ms
INFO: Sensor JaCoCo XML Report Importer [jacoco]
INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=4ms
INFO: Sensor SonarGo [go]
WARN: Metric 'comment_lines_data' is deprecated. Provided value is ignored.
ERROR: Coverage report can't be loaded, report file not found, ignoring this file /tmp/cov.out.
INFO: Sensor SonarGo [go] (done) | time=968ms
INFO: Sensor JavaXmlSensor [java]
INFO: Sensor JavaXmlSensor [java] (done) | time=2ms
INFO: Sensor HTML [web]
INFO: Sensor HTML [web] (done) | time=18ms
INFO: ------------- Run sensors on project
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=31ms
INFO: SCM provider for this project is: git
INFO: 47 files to be analyzed
WARN: Shallow clone detected, no blame information will be provided. You can convert to non-shallow with 'git fetch --unshallow'.
INFO: 0/47 files analyzed
WARN: Missing blame information for the following files:


WARN: This may lead to missing/broken features in SonarQube
INFO: 5 files had no CPD blocks
INFO: Calculating CPD for 42 files
INFO: CPD calculation finished
INFO: Analysis report generated in 147ms, dir size=251 KB
INFO: Analysis report compressed in 83ms, zip size=117 KB
INFO: Analysis report uploaded in 73ms
INFO: ANALYSIS SUCCESSFUL, you can browse ***/dashboard?id=workspace
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at ***/api/ce/task?id=AXNw80hubxlVWrCEzHs4
INFO: Analysis total time: 6.020 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 12.124s
INFO: Final Memory: 28M/488M
INFO: ------------------------------------------------------------------------

Specifications

  • Version:
  • Platform:
  • Subsystem:

@ryanriatno

MacOS native support - GitHub

It's possible to add native support for MacOS, Azure Dev Ops works fine, could you add support also for this action for MacOS without a strange workaround?

thanks

Unrecognized option: &&

Thanks for lot for making this action! Was already looking for one and I am really glad I found this repo.

Unfortunately I get the following error when using it within my project and I was hoping you could help a bit.

/usr/bin/docker run --name e87b526e0ce064b30443eca3607f3a7ced93c8_8feaae --label e87b52 --workdir /github/workspace --rm -e INPUT_HOST -e INPUT_LOGIN -e INPUT_PROJECTBASEDIR -e INPUT_PASSWORD -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/my_repo/my_repo":"/github/workspace" e87b52:6e0ce064b30443eca3607f3a7ced93c8
ERROR: Unrecognized option: &&
INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output

my yml file is:

on: push
name: SonarQube
jobs:
  sonarQubeTrigger:
    name: SonarQube Trigger
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: SonarQube Scan
      uses: kitabisa/sonarqube-action@master
      with:
        host: ${{ secrets.SONARQUBE_HOST }}
        login: ${{ secrets.SONARQUBE_TOKEN }}

Error during SonarQube Scanner execution

Issue and Steps to Reproduce

I am using the following step in my actions

    steps:
    - name: sonarqube reporting
      uses: kitabisa/[email protected]
      with:
        host: ${{ env.SONARQUBE_HOST }}
        login: ${{ secrets.SQ_TOKEN }}
        projectKey: "foo"
        projectName: "foo"

The step fails as follows:

ERROR: Error during SonarQube Scanner execution
org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:85)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:74)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:70)
	at org.sonarsource.scanner.api.EmbeddedScanner.doStart(EmbeddedScanner.java:181)
	at org.sonarsource.scanner.api.EmbeddedScanner.start(EmbeddedScanner.java:122)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:73)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.IllegalStateException: Fail to parse entry in bootstrap index: <!DOCTYPE html>
	at org.sonarsource.scanner.api.internal.BootstrapIndexDownloader.parse(BootstrapIndexDownloader.java:59)
	at org.sonarsource.scanner.api.internal.BootstrapIndexDownloader.getIndex(BootstrapIndexDownloader.java:44)
	at org.sonarsource.scanner.api.internal.JarDownloader.getScannerEngineFiles(JarDownloader.java:58)
	at org.sonarsource.scanner.api.internal.JarDownloader.download(JarDownloader.java:53)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:76)
	... 7 more

Versions

Screenshots

Expected

Actual

Specifications

  • Version:
  • Platform:
  • Subsystem:

Workflow fails with `Could not find 'java' executable in JAVA_HOME or PATH.`

Issue and Steps to Reproduce

Everytime I'm trying to push my code to the sonarcloud with your workflow I get the following error:

Could not find 'java' executable in JAVA_HOME or PATH.

Just create a workflow file like stated under "Workflow file" and run the workflow. I get this error on multiple repositories.

Workflow file

That's my workflow yml file which I'm using:

name: Maven CI

on: [push]

jobs:
  sonarQubeTrigger:
    name: SonarQube Trigger
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Build with Maven
        run: mvn -B package --file pom.xml
      - name: SonarQube Scan
        uses: kitabisa/sonarqube-action@master
        with:
          host: ${{ secrets.SONARQUBE_HOST }}
          login: ${{ secrets.SONARQUBE_TOKEN }}
          projectKey: "diary"

Specifications

  • Version: v1.1.0 (latest)
  • Platform: ubuntu-latest
  • Java Version: JDK 11

Sonar action fails with errors

Issue and Steps to Reproduce

Sonarscanner is failing with error saying that "not inside a Git work tree: /github/workspace". After seeing this added projectbase dir attribute with the path where the code has been checkout and it fails with "Project home must be an existing directory: /github/workspace"

Versions

Screenshots

Expected

Actual

Specifications

  • Version:
  • Platform:
  • Subsystem:

Property sonar.sources ignored

Issue and Steps to Reproduce

The property sonar.sources is overrided by the action script preventing any attempt to filter sources files.
Steps to reproduce :

  • set up the property in a file sonar-project.properties
  • run the action
  • check that the filter did not work

Specifications

  • Version: v1.2.1

Java Runtime error

I've been using version 1.2.1 since a week and it was working perfectly using a container image owasp/dependency-check-action:latest (last version is a month old). But since this morning I have an error regarding Java.

  sonarqube:
    runs-on: ubuntu-latest
    needs: [check_framework_version, checks_tests]
    container:
      image: owasp/dependency-check-action:latest
    steps:

      - name: Checkout Code
        uses: actions/checkout@v4

      - name: dependency check run
        run:
          /usr/share/dependency-check/bin/dependency-check.sh  --project "${{ env.PROJECT_NAME }}" --out "test-results/" --format "HTML" --format "XML" --format "JSON" --scan "${{ env.MY_DIR }}" --scan "${{ env.MY_TESTS_DIR }}"

      - name: SonarQube Scan
        uses: kitabisa/[email protected]
        with:
          host: "https://xxxxxxxxxxxxxxx.io"
          login: ${{ secrets.SONARQUBE_TOKEN }}
          projectBaseDir: "/home/runner/work/${{ env.MY_DIR }}/"
          projectKey: ${{ ENV.PROJECT_KEY}}
          projectVersion: ${{ env.PROJECT_VERSION }}

Here is the error I have.

INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /github/workspace/sonar-project.properties
INFO: SonarScanner 4.8.1.3023
INFO: Java 11.0.20 Alpine (64-bit)
INFO: Linux 6.5.0-10[15](https://github.com/XXXXXXXXX/actions/runs/8093791154/job/22117205565#step:8:16)-azure amd64
INFO: User cache: /opt/sonar-scanner/.sonar/cache
INFO: Analyzing on SonarQube server 10.4.0.87286
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 6.765s
ERROR: Error during SonarScanner execution
java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
INFO: Final Memory: 4M/[17](https://github.com/XXXXXXXXX/actions/runs/8093791154/job/22117205565#step:8:18)M
INFO: ------------------------------------------------------------------------
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
	at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
	at org.sonarsource.scanner.api.internal.IsolatedClassloader.loadClass(IsolatedClassloader.java:82)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
	at org.sonarsource.scanner.api.internal.batch.DefaultBatchFactory.createBatch(DefaultBatchFactory.java:32)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:[18](https://XXXXXXXXX/actions/runs/8093791154/job/22117205565#step:8:19)9)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:1[26](https://XXXXXXXXX/actions/runs/8093791154/job/22117205565#step:8:27))
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
ERROR: 
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.

Since the container image did not change, the java runtime did not change. So I don't know what happened between yesterday and today.

AnalysisException: Your project contains .java files

Issue and Steps to Reproduce

I added this action to one of my projects and I got this error. What is confusing is that it works without issues one of my projects.

- name: SonarQube Scan
        uses: kitabisa/[email protected]
        with:
          host: ${{ env.SONAR_URL }}
          login: ${{ secrets.SONARQUBE_AUTH_TOKEN }}
          projectKey: ${{ env.PROJECT_KEY }}

Versions

1.2.0

Screenshots

Expected

A way to set other properties or successful scan

Actual

Exception thrown

RROR: Error during SonarScanner execution
org.sonar.java.AnalysisException: Your project contains .java files, please provide compiled classes with sonar.java.binaries property, or exclude them from the analysis with sonar.exclusions property.

Specifications

  • Version:
  • Platform:
  • Subsystem:

SonarQube entry.sh failing in self hosted runner

#7 [3/3] RUN chmod +x /entrypoint.sh
#7 sha256:4fc5ae7183ca7c187de162ee61abb078b327aa023cc8c54d7cfb44c76cc7e51b
#7 0.368 chmod: /entrypoint.sh: Operation not permitted
#7 ERROR: process "/bin/sh -c chmod +x /entrypoint.sh" did not complete successfully: exit code: 1

[3/3] RUN chmod +x /entrypoint.sh:


process "/bin/sh -c chmod +x /entrypoint.sh" did not complete successfully: exit code: 1
Warning: Docker build failed with exit code 1, back off 4.859 seconds before retry.
/usr/local/bin/docker build -t 60e226:822eaa34038a4151921b151d6434bbc6 -f "/runner/_work/_actions/kitabisa/sonarqube-action/v1.2.0/Dockerfile" "/runner/_work/_actions/kitabisa/sonarqube-action/v1.2.0"
#2 [internal] load build definition from Dockerfile
#2 sha256:ecae1da9603d1f1425c79078e0f9164ae74ec92e88e11adc287c837d3be34d6d
#2 DONE 0.0s

#1 [internal] load .dockerignore
#1 sha256:7e40fce1107fdc884646fd5ec999758d28d7ef302099f80d961e1937cc437fa6
#1 transferring context: 2B done
#1 DONE 0.0s

#2 [internal] load build definition from Dockerfile
#2 sha256:ecae1da9603d1f1425c79078e0f9164ae74ec92e88e11adc287c837d3be34d6d
#2 transferring dockerfile: 634B done
#2 DONE 0.1s

any suggestions on this ?

Question: Pass custom headers to request

Apologies for posting a question as an issue, let me know if this is inappropriate so as to close it.

My SQ instance is behind a CloudFlare protected domain therefore currently my GH Action runs fail to communicate with it.

Is there a way to pass a custom header, as in:

Cf-Access-Client-Id: XXXXXXXXXX

to the action?

Thanks in advance

Scan is failing

My sonar scan is failing

Screen Shot 2021-06-04 at 8 42 05 AM
my configuration is here

on: push name: Main Workflow jobs: sonarQubeTrigger: name: SonarQube Trigger runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: SonarQube Scan uses: kitabisa/[email protected] with: host: https://jobs.mydomain.com/sonar login: "2375523idsbsusjdshhhsd", projectKey: "my-poc-ui" projectName: "my-poc-ui"

Iam not really sure is this a bug but with solution (Could not find 'java' executable in JAVA_HOME or PATH.)

Issue and Steps to Reproduce

use actions/setup-java@v2
use kitabisa/[email protected]
then this happens:

Could not find 'java' executable in JAVA_HOME or PATH.

Why this happens: It is overwriting the environment variables set in the docker container from sonar-scanner

How to fix it: Set environment variable for this action back to the env variable from the original docker container from sonar-scan ner

  - name: SonarQube Scan
    uses: kitabisa/[email protected]
    env:
      JAVA_HOME: /usr/lib/jvm/java-11-openjdk
    with:
      host: ${{ secrets.SONARQUBE_HOST }}
      login: ${{ secrets.SONARQUBE_TOKEN }}

Have a nice day :-)

Latest version fails with "NumberFormatException" parsing the Java version

Issue and Steps to Reproduce

Using the latest version now fails with a NumberFormatException as seen in the trace below. It looks like its trying to parse the Java version (Java 12-ea)
Switching back to kitabisa/[email protected] works as intended.

INFO: Scanner configuration file: /usr/lib/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /github/workspace/sonar-project.properties
INFO: SonarScanner 4.5.0.2216
INFO: Java 12-ea Oracle Corporation (64-bit)
INFO: Linux 4.14.225-168.357.amzn2.x86_64 amd64
INFO: User cache: /root/.sonar/cache
INFO: Scanner configuration file: /usr/lib/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /github/workspace/sonar-project.properties
INFO: Analyzing on SonarQube server 7.9.1
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Load global settings
INFO: Load global settings (done) | time=630ms
INFO: Server id: 86CC00A2-AW2mftxOzKH_-PCGUWJS
INFO: User cache: /root/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load/download plugins (done) | time=93ms
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 4.272s
INFO: Final Memory: 5M/27M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
java.lang.ExceptionInInitializerError
	at com.google.gson.internal.reflect.ReflectionAccessor.<clinit>(ReflectionAccessor.java:36)
	at com.google.gson.internal.ConstructorConstructor.<init>(ConstructorConstructor.java:51)
	at com.google.gson.Gson.<init>(Gson.java:205)
	at com.google.gson.Gson.<init>(Gson.java:185)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.listInstalledPlugins(ScannerPluginInstaller.java:104)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.loadPlugins(ScannerPluginInstaller.java:76)
	at org.sonar.scanner.bootstrap.ScannerPluginInstaller.installRemotes(ScannerPluginInstaller.java:60)
	at org.sonar.scanner.bootstrap.ScannerPluginRepository.start(ScannerPluginRepository.java:59)
	at org.sonar.core.platform.StartableCloseableSafeLifecyleStrategy.start(StartableCloseableSafeLifecyleStrategy.java:40)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
	at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)
	at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.NumberFormatException: For input string: "12-ea"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
	at java.base/java.lang.Integer.parseInt(Integer.java:658)
	at java.base/java.lang.Integer.parseInt(Integer.java:776)
	at com.google.gson.util.VersionUtils.determineMajorJavaVersion(VersionUtils.java:28)
	at com.google.gson.util.VersionUtils.<clinit>(VersionUtils.java:24)
	... 32 more
ERROR: 
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.

Versions

kitabisa/sonarqube-action@master

Workflow Step

- name: SonarQube
  uses: kitabisa/sonarqube-action@master
  with:
    host: <redacted>
    login: ${{ secrets.SONAR_TOKEN }}

Not working with the latest SonarQube versions

Issue and Steps to Reproduce

If you try to run with the latest version (ie 9.1), then you will face the following error:

java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

Proposed solution

The issue seems to be with the Java version from the docker image used. Class file version 52 is for Java 8. And Class file version 55 needs Java 11.

Drop the unofficial docker image and use to official one: https://hub.docker.com/r/sonarsource/sonar-scanner-cli

Specifications

INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_181 Oracle Corporation (64-bit)
INFO: Linux 5.8.0-1042-azure amd64
INFO: User cache: /root/.sonar/cache
INFO: SonarQube server 9.1.0

java.lang.IllegalStateException: The plugin [icode] does not support Java 1.8.0_181

Issue and Steps to Reproduce

I was able to get report using this action and below code.

on: push
name: Main Workflow
jobs:
sonarQubeTrigger:
name: SonarQube Trigger
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: SonarQube Scan
uses: kitabisa/sonarqube-action@master
with:
host: ${{ secrets.SONARQUBE_HOST }}
login: ${{ secrets.SONARQUBE_TOKEN }}
projectKey: "project_key"
projectName: "project"

Now, all of sudden, it has started showing below error. How to overcome this error ?

INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_181 Oracle Corporation (64-bit)
INFO: Linux 5.4.0-1031-azure amd64
INFO: User cache: /root/.sonar/cache
SonarQube server 8.4.2
SonarScanner will require Java 11 to run starting in SonarQube 8.x

java.lang.IllegalStateException: The plugin [icode] does not support Java 1.8.0_181
Caused by: ja_va.lang.UnsupportedClassVersionError: fr/cnes/sonar/plugins/icode/ICodePlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0**

ERROR: SonarQube server [http://sonarqube:9000] can not be reached when githubrunner is inside a different docker network

I can't see a way to set the docker network for launch sonarqube:
if i run inside the github runner i can see:

root@0df2578fb0d5:/home/github# curl http://sonarqube:9000

<!DOCTYPE html>
<html lang="en">

but when i run the action:

Run kitabisa/[email protected]
  with:
    host: http://sonarqube:9000/
    login: ****
    password: ****
    projectBaseDir: .
  env:
    REPO_FULL_NAME: my-private-org/myprivate-repo
/usr/bin/docker run --name cbb281ede1d1ae291448eb806e9edc08c169ac_51194c --label cbb281 --workdir /github/workspace --rm -e REPO_FULL_NAME -e INPUT_HOST -e INPUT_LOGIN -e INPUT_PASSWORD -e INPUT_PROJECTKEY -e INPUT_PROJECTNAME -e INPUT_PROJECTVERSION -e INPUT_PROJECTBASEDIR -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/github/_work/_temp/_github_home":"/github/home" -v "/home/github/_work/_temp/_github_workflow":"/github/workflow" -v "/home/github/_work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/github/_work/data-api/data-api":"/github/workspace" cbb281:ede1d1ae291448eb806e9edc08c169ac
 INFO: Scanner configuration file: /usr/lib/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_181 Oracle Corporation (64-bit)
INFO: Linux 5.4.0-96-generic amd64
INFO: User cache: /root/.sonar/cache
ERROR: SonarQube server [http://sonarqube:9000] can not be reached
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 0.692s
ERROR: Error during SonarQube Scanner execution
INFO: Final Memory: 8M/964M
INFO: ------------------------------------------------------------------------
org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube

The github runner is inside docker with a separate network how i can say to pass to docker cmd the nwtwork?

workflow failure

ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.bootstrap.ScannerPluginInstaller
at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:65)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1034)
at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1026)
at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1003)
at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)

Error jq command not found

I'm getting error while running action

My yml file

name: Scala CI

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:

Scala-Job:
name: Sbt Task
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Compile
run: sbt clean
sonarQubeTrigger:
name: SonarQube Trigger
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: SonarQube Scan
uses: kitabisa/sonarqube-action@master
with:
host: ${{ secrets.SONARQUBE_HOST }}
login: ${{ secrets.SONARQUBE_TOKEN }}

and logs

/entrypoint.sh: line 6: jq: command not found
Run kitabisa/[email protected]
/usr/bin/docker run --name e87b5244dac4d8d3ab4cd69f6a762e7998b878_26fb3d --label e87b52 --workdir /github/workspace --rm -e INPUT_HOST -e INPUT_PROJECTBASEDIR -e INPUT_LOGIN -e INPUT_PASSWORD -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/Grafy/Grafy":"/github/workspace" e87b52:44dac4d8d3ab4cd69f6a762e7998b878
/entrypoint.sh: line 6: jq: command not found

Consider reopen activity on pull_request event

Issue and Steps to Reproduce

I would like to run the action on a pull request event.
When the pull request is created the action runs fine and can fail if the quality gate of the project fails. However if you have a pull request job that fails because of sonar, you can close the pull request and reopen it again, the job will pass successfully without scanning saying "No need to run analysis. It is already triggered by the push event" because the reopen activity for the pull request event is not considered in the entrypoint.sh

if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
   EVENT_ACTION=$(jq -r ".action" "${GITHUB_EVENT_PATH}")
   if [[ "${EVENT_ACTION}" != "opened" ]]; then
   	echo "No need to run analysis. It is already triggered by the push event."
   	exit
   fi
fi

Versions

v1.1.0

entrypoint.sh assumes "on: push"

Hi there,

If I want to run the action only "on: pull_request", I get the message generated in this line:

echo "No need to run analysis. It is already triggered by the push event."

However, nothing has been triggered. Looking at the surrounding conditional

if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
	EVENT_ACTION=$(jq -r ".action" "${GITHUB_EVENT_PATH}")
	if [[ "${EVENT_ACTION}" != "opened" ]]; then
		echo "No need to run analysis. It is already triggered by the push event."
		exit
	fi
fi

it seems that it is silently assumed that everybody uses "on: push".

It would be great to have an option to override this IF condition so that an analysis is triggered on pull requests with "on: pull_request"

Action broken because base image removed NPM

Hi,

(this is a "duplicate" of #33, but #33 is not really a issue-report ...)

Issue and Steps to Reproduce

It looks like the action is broken.

While our last builds still worked, we now get:

Build container for action use: '/home/runner/work/_actions/kitabisa/sonarqube-action/master/Dockerfile'.
Error: Docker build failed with exit code 127

It looks like this is because the action uses npm to install some stuff, while the action's base image removed NPM 22 days ago ...

Versions

d7e1e2b

Screenshots

see log below

Expected

action runs

Actual

action fails (see log below)

Specifications

  • Version: latest (d7e1e2b)
  • Platform: ubuntu-latest on github actions

Log

/usr/bin/docker build -t 6f1554:0a4c99409cb84fd1b450c404efc3e518 -f "/home/runner/work/_actions/kitabisa/sonarqube-action/master/Dockerfile" "/home/runner/work/_actions/kitabisa/sonarqube-action/master"
  Sending build context to Docker daemon  17.41kB
  
  Step 1/14 : FROM sonarsource/sonar-scanner-cli:4
  4: Pulling from sonarsource/sonar-scanner-cli
  8663204ce13b: Already exists
  65f45fbf9394: Pulling fs layer
  42ee3d49ed38: Pulling fs layer
  42ee3d49ed38: Verifying Checksum
  42ee3d49ed38: Download complete
  65f45fbf9394: Verifying Checksum
  65f45fbf9394: Download complete
  65f45fbf9394: Pull complete
  42ee3d49ed38: Pull complete
  Digest: sha256:b2277a01cc4cdcc4c867cf4663f40efac18241a8554518bdb530cf712c0df412
  Status: Downloaded newer image for sonarsource/sonar-scanner-cli:4
   ---> 3953ff8e072d
  Step 2/14 : LABEL "com.github.actions.name"="SonarQube Scan"
   ---> Running in 20da87cab00f
  Removing intermediate container 20da87cab00f
   ---> 4f0d4a87021d
  Step 3/14 : LABEL "com.github.actions.description"="Scan your code with SonarQube Scanner to detect bugs, vulnerabilities and code smells in more than 25 programming languages."
   ---> Running in 33504c62c413
  Removing intermediate container 33504c62c413
   ---> 61e7c1f3175e
  Step 4/14 : LABEL "com.github.actions.icon"="check"
   ---> Running in 661aee567b6d
  Removing intermediate container 661aee567b6d
   ---> 4848517dc198
  Step 5/14 : LABEL "com.github.actions.color"="green"
   ---> Running in 218092ab284f
  Removing intermediate container 218092ab284f
   ---> b1efd8472089
  Step 6/14 : LABEL version="0.0.2"
   ---> Running in 9bf9c7ac56e4
  Removing intermediate container 9bf9c7ac56e4
   ---> 79be5737c8b5
  Step 7/14 : LABEL repository="https://github.com/kitabisa/sonarqube-action"
   ---> Running in 2302110cf9f5
  Removing intermediate container 2302110cf9f5
   ---> 693ba42e1690
  Step 8/14 : LABEL homepage="https://kitabisa.github.io/"
   ---> Running in 5777c8932ec0
  Removing intermediate container 5777c8932ec0
   ---> 5e6b5598cd43
  Step 9/14 : LABEL maintainer="dwisiswant0"
   ---> Running in 30d68b0c86e4
  Removing intermediate container 30d68b0c86e4
   ---> 366989e0621e
  Step 10/14 : RUN npm config set unsafe-perm true &&   npm install --silent --save-dev -g [email protected] &&   npm config set unsafe-perm false &&   apk add --no-cache ca-certificates jq
   ---> Running in fcefa0ec64bb
  /bin/sh: npm: not found
  The command '/bin/sh -c npm config set unsafe-perm true &&   npm install --silent --save-dev -g [email protected] &&   npm config set unsafe-perm false &&   apk add --no-cache ca-certificates jq' returned a non-zero code: 127
  
  Warning: Docker build failed with exit code 127

Error: Docker build failed with exit code 127

projectKey not read from sonar-project.properties

I run this action for a repository where I have defined a sonar-project.properties, in which I have defined:

sonar.projectKey=my-project

however during Action execution I can see the project key is always set to 'workspace' (overwriting results for any existing project with that key name):

INFO: Project key: workspace

Other settings in sonar-project.properties seem to be read fine.
Is there a workaround for this behavior?

Thanks!

[Question] Its possible set binary java?

org.sonar.java.AnalysisException: Your project contains .java files, please provide compiled classes with sonar.java.binaries property, or exclude them from the analysis with sonar.exclusions property.

is there any way to set these property? sonar.java.binaries and sonar.exclusions property

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.