<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Taciano Morais Silva</title>
    <description>The latest articles on DEV Community by Taciano Morais Silva (@tacianosilva).</description>
    <link>https://dev.to/tacianosilva</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384882%2Fc4ff887d-41c7-4936-a248-06a2f0971c43.jpeg</url>
      <title>DEV Community: Taciano Morais Silva</title>
      <link>https://dev.to/tacianosilva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tacianosilva"/>
    <language>en</language>
    <item>
      <title>Running a SonarQube Server and Scanner Client with Docker</title>
      <dc:creator>Taciano Morais Silva</dc:creator>
      <pubDate>Thu, 17 Jun 2021 03:38:59 +0000</pubDate>
      <link>https://dev.to/tacianosilva/running-a-sonarqube-server-and-client-with-docker-7bk</link>
      <guid>https://dev.to/tacianosilva/running-a-sonarqube-server-and-client-with-docker-7bk</guid>
      <description>&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;p&gt;Running a SonarQube Server and Scanner Client using docker images &lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Docker&lt;/strong&gt; must be installed;&lt;/li&gt;
&lt;li&gt;To give &lt;code&gt;sudo&lt;/code&gt; or &lt;code&gt;root&lt;/code&gt; privileges to any user with Docker:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &amp;lt;yourusername&amp;gt;
&lt;span class="go"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Required knowledge
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;knowing how to use a command line in ubuntu linux;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 1: Check docker service status
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service docker status
&lt;span class="go"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Or&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status docker
&lt;span class="go"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The result should be similar to the one shown below, showing that the service is up and running:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

● docker.service - Docker Application Container Engine
     Loaded: loaded &lt;span class="o"&gt;(&lt;/span&gt;/lib/systemd/system/docker.service&lt;span class="p"&gt;;&lt;/span&gt; enabled&lt;span class="p"&gt;;&lt;/span&gt; vendor preset&amp;gt;
     Active: active &lt;span class="o"&gt;(&lt;/span&gt;running&lt;span class="o"&gt;)&lt;/span&gt; since Wed 2021-06-16 09:32:06 &lt;span class="nt"&gt;-03&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 12h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1242 &lt;span class="o"&gt;(&lt;/span&gt;dockerd&lt;span class="o"&gt;)&lt;/span&gt;
      Tasks: 15
     Memory: 79.0M
     CGroup: /system.slice/docker.service


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The &lt;em&gt;docker service status&lt;/em&gt; must be &lt;strong&gt;active (running)&lt;/strong&gt;. You can also use the command &lt;code&gt;docker --version&lt;/code&gt; for check docker installation:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="go"&gt;Docker version 20.10.7, build f0df350


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Step 2: Pull image and run sonarqube server
&lt;/h2&gt;

&lt;p&gt;Pull the latest image version of the sonarqube:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker pull sonarqube:latest
&lt;span class="go"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Start the server by running:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; sonarqube &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="go"&gt;-p 9000:9000 sonarqube:latest


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Wait a few moments and when your instance is up and running, Log in to &lt;a href="http://localhost:9000" rel="noopener noreferrer"&gt;http://localhost:9000&lt;/a&gt; using System Administrator credentials:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

    login: admin
    password: admin


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;By default, the image will use an embedded H2 database that is not suited for production. Set up a database by following the "Installing the Database" section of &lt;a href="https://docs.sonarqube.org/latest/setup/install-server/" rel="noopener noreferrer"&gt;Install SonarQube Server&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configuring your project
&lt;/h2&gt;

&lt;p&gt;Create a configuration file in your project's root directory called &lt;code&gt;sonar-project.properties&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;

&lt;span class="c"&gt;# must be unique in a given SonarQube instance
&lt;/span&gt;&lt;span class="py"&gt;sonar.projectKey&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;myproject&lt;/span&gt;

&lt;span class="c"&gt;# --- optional properties ---
&lt;/span&gt;
&lt;span class="c"&gt;# defaults to project key
&lt;/span&gt;&lt;span class="py"&gt;sonar.projectName&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;My project&lt;/span&gt;
&lt;span class="c"&gt;# defaults to 'not provided'
&lt;/span&gt;&lt;span class="py"&gt;sonar.projectVersion&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;1.0&lt;/span&gt;

&lt;span class="c"&gt;# Path is relative to the sonar-project.properties file. Defaults to .
&lt;/span&gt;&lt;span class="py"&gt;sonar.sources&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Encoding of the source code. Default is default system encoding
&lt;/span&gt;&lt;span class="py"&gt;sonar.sourceEncoding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;UTF-8&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;You can find more properties about testing, coverage, etc. on the website &lt;a href="https://docs.sonarqube.org/latest/analysis/analysis-parameters/" rel="noopener noreferrer"&gt;Analysis Parameters&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Analyzing a Project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Updated copy of &lt;a href="https://docs.sonarqube.org/latest/setup/get-started-2-minutes/" rel="noopener noreferrer"&gt;Get started in 2 minutes&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you're logged in to your local SonarQube instance, let's analyze a project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Add project&lt;/strong&gt; button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give your project a &lt;strong&gt;Project key&lt;/strong&gt; and a &lt;strong&gt;Display name&lt;/strong&gt; and click the &lt;strong&gt;Set Up&lt;/strong&gt; button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Provide a token&lt;/strong&gt;, select &lt;em&gt;Generate a token&lt;/em&gt;. Give your token a name, click the Generate button, and click &lt;strong&gt;Continue&lt;/strong&gt;. &lt;strong&gt;Write down your generated token, it will be used for login: d32ede54513ec7b92589139aaaa5781c121a9303&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select your project's main language under &lt;strong&gt;Run analysis on your project&lt;/strong&gt;, and follow the instructions to analyze your project. Here you'll &lt;strong&gt;download and execute a Scanner on your code&lt;/strong&gt; (if you're using Maven or Gradle, the Scanner is automatically downloaded).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sonar-scanner &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="go"&gt;  -Dsonar.projectKey=myproject \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=d32ede54513ec7b92589139aaaa5781c121a9303


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;You can add an organization: &lt;code&gt;-Dsonar.organization=myorganization&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Analyzing with Docker
&lt;/h3&gt;

&lt;p&gt;You don't need download sonar-scanner client, we will use the image to execute the command &lt;code&gt;sonar-scanner-cli&lt;/code&gt;, linking with the running &lt;strong&gt;sonarqube server&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;--link&lt;/span&gt; sonarqube &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="go"&gt;-e SONAR_HOST_URL="http://sonarqube:9000" \
-e SONAR_LOGIN="d32ede54513ec7b92589139aaaa5781c121a9303" \
&lt;/span&gt;&lt;span class="gp"&gt;-v "$&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;YOUR_REPO&lt;span class="o"&gt;}&lt;/span&gt;:/usr/src&lt;span class="s2"&gt;" &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="go"&gt;sonarsource/sonar-scanner-cli


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Replace the variable &lt;code&gt;${YOUR_REPO}&lt;/code&gt; with the full path of the project's root directory (e.g., &lt;code&gt;/home/user/myproject&lt;/code&gt;).&lt;/p&gt;
&lt;h2&gt;
  
  
  To know more
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.sonarqube.org/latest/setup/get-started-2-minutes/" rel="noopener noreferrer"&gt;https://docs.sonarqube.org/latest/setup/get-started-2-minutes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/_/sonarqube" rel="noopener noreferrer"&gt;https://hub.docker.com/_/sonarqube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.sonarqube.org/latest/setup/install-server/" rel="noopener noreferrer"&gt;https://docs.sonarqube.org/latest/setup/install-server/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://localhost:9000/documentation/analysis/scan/sonarscanner/" rel="noopener noreferrer"&gt;http://localhost:9000/documentation/analysis/scan/sonarscanner/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Me
&lt;/h2&gt;


&lt;div class="ltag__user ltag__user__id__384882"&gt;
    &lt;a href="/tacianosilva" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384882%2Fc4ff887d-41c7-4936-a248-06a2f0971c43.jpeg" alt="tacianosilva image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/tacianosilva"&gt;Taciano Morais Silva&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/tacianosilva"&gt;Assistant Professor in the  DCT/UFRN (Federal University of Rio Grande do Norte - Campus Caicó - RN).&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>sonarqube</category>
      <category>docker</category>
      <category>codesmells</category>
      <category>softwaremetrics</category>
    </item>
  </channel>
</rss>
