Thursday, 23 April 2020

Jenkins service reinstall

I have not investigated more but it seems Jenkins does not like Java update. Sometimes the windows service fails to start. The simplest seems to remove it and install again...

sc delete jenkinsslave-D__Jenkins

Monday, 24 February 2020

Images used in web project

I am doing little clean-up in the project. Need to identify what images are still used and the rest I would like to remove. This PowerShell script helps to identify images which are used in any page, user control or c# code.

For each in the application is executed command which tries to find its name in all files matching given pattern.


@(Get-ChildItem 'D:\WebApp\images') | 
    ForEach-Object { 
        $_.name | Write-Host -NoNewline
        Write-Host ' ' -NoNewline
        
        dir 'D:\WebApp' -I *.aspx,*.ascx,*.cs,*.master -R | 
            Select-String $_.name -Quiet | where  {$_ -eq $true} | Write-Host -NoNewline
        
        Write-Host #writes a new line
    }

Friday, 20 July 2018

Moving SonarQube to other server

At first I had SonarQube installed together with Jenkins on the same server. SonarQube is quite resource demanding and it was causing slowness of the other jobs / tasks running on Jenkins.

Moving to other instance was simple as installing SonarQube on other server and configuring Jenkins to use new SonarQube instance.

Steps required

  • Java runtime environment
  • SonarQube binaries
  • MSSQL JDBC driver (make sure you get sqljdbc_auth.dll available on PATH)
  • SonarQube configuration was copied from old server to new (sonarqube/conf/*)
  • SonarQube instance was registered as service and started. 
  • Once the service is running then try to access it in browser, if it is not accessible then check logs (sonarqube/logs) and resolve.
  • Once the web is up and running there had to be installed language plugins again. 
  • Jenkins configuration have to be updated with new SonarQube url (Manage Jenkins > Configure System)

Thursday, 3 May 2018

SonarQube AD authentication setup

User in SonarQube can be validated against ActiveDirectory, once the user is validated it will be automatically created which is useful if there are a lot users who are required to use the tool.

  1. LDAP plugin needs to be installed in SonarQube marketplace
  2. sonar.properties needs to be updated with LDAP configuration details
  3. SonarQube service needs to be restarted. 
  4. Go to SonarQube web. 
    • If there are issues with the configuration check the logs (SonarQube\logs\web.log)
# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
sonar.authenticator.createUsers=true
ldap.url=ldap://ldapserver:389
ldap.bindDn=CN=username,CN=Users,DC=domain,DC=company,DC=com
ldap.bindPassword=password

# User Configuration
ldap.user.baseDn=DC=domain,DC=company,DC=com
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

ADExplorer is useful to confirm AD object properties and validate the server address and credentials.
In case it is not clear what are AD server details then use guidance on SO.
More details can be found in SonarQube LDAP plugin documentation.

Wednesday, 2 May 2018

SonarQube MSSQL backend setup


  1. Create Database
    • CREATE DATABASE "sonar" COLLATE Latin1_General_CS_AS 
      • It needs to be case and accent sensitive
    • Create user and add permissions to user so tables can be created with SonarQube start
  2. Modify SonarQube configuration to point out to database created
    • Go to SonarQube\conf\sonar.properties and follow instructions in the file
      • Uncomment and change connection string e.g. sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true
      • In case there is not used integrated also specify sonar.jdbc.username and sonar.jdbc.password
  3. In case there is used integrated connection to database used then download Microsoft JDBC driver, unzip and somewhere to the system PATH place sqljdbc_auth.dll (either 32 or 64 bit based on your operating system)
  4. Restart SonarQube instance.

Monday, 28 August 2017

Retrieving binary data from base64 node in xml variable

In case there is xml document with base64 encoded binary data e.g. PDF (below example has the binary data shortened)

declare @doc xml
set @doc = '<doc><PdfData>JVBERi0xLjQN</PdfData></doc>'
then there is very simple to get the binary data decoded as binary again
select CAST (@doc.value('(//PdfData/text())[1]', 'varbinary(max)') AS varchar(max))

https://stackoverflow.com/questions/5082345/base64-encoding-in-sql-server-2005-t-sql

Friday, 5 May 2017

How to find size of databases and last time they got accessed

Sometimes you may need to free some space on MSSQL server and idetify databases which are not used long time back. This is especially useful on development servers where people may restore database just for troubleshooting of some issues and then the database is not needed anymore!

with fs
as
(
    select database_id, type, size * 8.0 / 1024 size
    from sys.master_files
)

select db.*, last_user_seek = MAX(last_user_seek),
 last_user_scan = MAX(last_user_scan),
 last_user_lookup = MAX(last_user_lookup),
 last_user_update = MAX(last_user_update)
from (
 select 
  name,
  (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB,
  (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB 
 from sys.databases db
) as db
left join sys.dm_db_index_usage_stats stats on stats.database_id = db_id(db.name)
group by db.name, db.DataFileSizeMB, db.LogFileSizeMB
order by db.DataFileSizeMB desc

References:
Sql server 2008 howto query all databases sizes
How do you find the last time a database was accessed