# DevOps

DevOps

# ALM(Application Lifecycle Management)

ALM(Application Lifecycle Management)

[![DevOps all picture.jpeg](http://218.39.181.171:6875/uploads/images/gallery/2023-05/scaled-1680-/devops-all-picture.jpeg)](http://218.39.181.171:6875/uploads/images/gallery/2023-05/devops-all-picture.jpeg)

# Sonar

- [http://www.sonarsource.org/](http://www.sonarsource.org/)<span class="anchor" id="bkmrk-"></span><span class="anchor" id="bkmrk--1"></span>
- [![archi.png](http://218.39.181.171:6875/uploads/images/gallery/2023-05/scaled-1680-/archi.png)](http://218.39.181.171:6875/uploads/images/gallery/2023-05/archi.png)
- What is Sonar ?<span class="anchor" id="bkmrk--2"></span>
    - Sonar는 Codehaus에서 개발한 코드 품질 관리 플랫폼으로, 오픈소스<span class="anchor" id="bkmrk--3"></span>
    - PMD, [CheckStyle](http://web.joang.com:9000/jcook/CheckStyle), Findbugs, Cobertura등을 이용해서 코드검사, 코드커버리지, 중복도, 복잡도 등의 데이터를 추출해주고,그 외 품질관련 데이터도 뽑아주기 때문에 수월하게 좋은 데이터를 얻을 수 있다.<span class="anchor" id="bkmrk--4"></span>
        
        
        - [PMD](http://web.joang.com:9000/jcook/PMD) : source quality assurence<span class="anchor" id="bkmrk--5"></span><span class="anchor" id="bkmrk--6"></span>
    - 프로젝트 내의 규칙을 추가로 적용하여 반영할 수 있다.<span class="anchor" id="bkmrk--7"></span><span class="anchor" id="bkmrk--8"></span><span class="anchor" id="bkmrk--9"></span>
- Download Sonar<span class="anchor" id="bkmrk--10"></span>
    - [http://www.sonarsource.org/downloads/](http://www.sonarsource.org/downloads/)<span class="anchor" id="bkmrk--11"></span><span class="anchor" id="bkmrk--12"></span>
- [MySql](http://web.joang.com:9000/jcook/MySql)<span class="anchor" id="bkmrk--13"></span>
    
    
    - show databases;<span class="anchor" id="bkmrk--14"></span><span class="anchor" id="bkmrk--15"></span><span class="anchor" id="bkmrk--16"></span><span class="anchor" id="bkmrk--17"></span><span class="anchor" id="bkmrk--18"></span><span class="anchor" id="bkmrk--19"></span><span class="anchor" id="bkmrk--20"></span><span class="anchor" id="bkmrk--21"></span><span class="anchor" id="bkmrk--22"></span><span class="anchor" id="bkmrk--23"></span><span class="anchor" id="bkmrk--24"></span>```
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema | 
        | mysql              | 
        | redmine            | 
        | test               | 
        +--------------------+
        4 rows in set (0.13 sec)
        ```
        
        <span class="anchor" id="bkmrk--25"></span><span class="anchor" id="bkmrk--26"></span><span class="anchor" id="bkmrk--27"></span><span class="anchor" id="bkmrk--28"></span><span class="anchor" id="bkmrk--29"></span><span class="anchor" id="bkmrk--30"></span><span class="anchor" id="bkmrk--31"></span><span class="anchor" id="bkmrk--32"></span><span class="anchor" id="bkmrk--33"></span>```
        mysql> create user 'sonar_usr'@'localhost' identified by 'sonar_usr';
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> grant all privileges on sonar_db.* to 'sonar_usr'@'localhost' with grant  option;
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> 
        ```
        
        <span class="anchor" id="bkmrk--34"></span><span class="anchor" id="bkmrk--35"></span>
- Sonar config<span class="anchor" id="bkmrk--36"></span>
    - <span class="anchor" id="bkmrk--37"></span><span class="anchor" id="bkmrk--38"></span><span class="anchor" id="bkmrk--39"></span><span class="anchor" id="bkmrk--40"></span><span class="anchor" id="bkmrk--41"></span><span class="anchor" id="bkmrk--42"></span><span class="anchor" id="bkmrk--43"></span><span class="anchor" id="bkmrk--44"></span><span class="anchor" id="bkmrk--45"></span><span class="anchor" id="bkmrk--46"></span><span class="anchor" id="bkmrk--47"></span><span class="anchor" id="bkmrk--48"></span><span class="anchor" id="bkmrk--49"></span><span class="anchor" id="bkmrk--50"></span><span class="anchor" id="bkmrk--51"></span><span class="anchor" id="bkmrk--52"></span><span class="anchor" id="bkmrk--53"></span>```
        #----- MySQL 5.x/6.x
        # Comment the embedded database and uncomment the following lines to use MySQL
        sonar.jdbc.url:                            jdbc:mysql://localhost:3306/sonar_db?useUnicode=true&characterEncoding=utf8
        sonar.jdbc.driverClassName:                com.mysql.jdbc.Driver
        sonar.jdbc.validationQuery:                select 1
        
        
        #----- Global database settings
        sonar.jdbc.username:                       sonar_usr
        sonar.jdbc.password:                       sonar_usr
        sonar.jdbc.maxActive:                      10
        sonar.jdbc.maxIdle:                        5
        sonar.jdbc.minIdle:                        2
        sonar.jdbc.maxWait:                        5000
        sonar.jdbc.minEvictableIdleTimeMillis:     600000
        sonar.jdbc.timeBetweenEvictionRunsMillis:  30000
        ```
        
        <span class="anchor" id="bkmrk--54"></span><span class="anchor" id="bkmrk--55"></span><span class="anchor" id="bkmrk--56"></span>
- Start<span class="anchor" id="bkmrk--57"></span>
    - /apps/sonar-2.7/bin/linux-x86-32/sonar.sh start<span class="anchor" id="bkmrk--58"></span><span class="anchor" id="bkmrk--59"></span>
- Stop<span class="anchor" id="bkmrk--60"></span>
    - /apps/sonar-2.7/bin/linux-x86-32/sonar.sh stop<span class="anchor" id="bkmrk--61"></span><span class="anchor" id="bkmrk--62"></span><span class="anchor" id="bkmrk--63"></span><span class="anchor" id="bkmrk--64"></span><span class="anchor" id="bkmrk--65"></span><span class="anchor" id="bkmrk--66"></span>

---

<span class="anchor" id="bkmrk--69"></span>

- 가이드 문서 : [http://www.sonarsource.org/support/documentation/](http://www.sonarsource.org/support/documentation/)

# Git

git

- How To Install Git on Ubuntu 18.04 : [https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04)<span class="anchor" id="bkmrk-"></span>
- Install<span class="anchor" id="bkmrk--1"></span>
    - \# apt-get install git<span class="anchor" id="bkmrk--2"></span>
- Add User<span class="anchor" id="bkmrk--3"></span>
    - $ sudo adduser gitolite<span class="anchor" id="bkmrk--4"></span>
    - $ sudo adduser git-repo

# GitLab

- GitLab 연동 : [http://ratseno.tistory.com/4](http://ratseno.tistory.com/4)<span class="anchor" id="bkmrk-"></span>
- Ubuntu GitLab 설치 : [http://html5around.com/wordpress/tutorials/ubuntu-gitlab-install-use-1/](http://html5around.com/wordpress/tutorials/ubuntu-gitlab-install-use-1/)<span class="anchor" id="bkmrk--1"></span>
- <span class="anchor" id="bkmrk--2"></span><span class="anchor" id="bkmrk--3"></span><span class="anchor" id="bkmrk--4"></span><span class="anchor" id="bkmrk--5"></span><span class="anchor" id="bkmrk--6"></span><span class="anchor" id="bkmrk--7"></span><span class="anchor" id="bkmrk--8"></span><span class="anchor" id="bkmrk--9"></span><span class="anchor" id="bkmrk--10"></span><span class="anchor" id="bkmrk--11"></span><span class="anchor" id="bkmrk--12"></span><span class="anchor" id="bkmrk--13"></span><span class="anchor" id="bkmrk--14"></span><span class="anchor" id="bkmrk--15"></span><span class="anchor" id="bkmrk--16"></span><span class="anchor" id="bkmrk--17"></span><span class="anchor" id="bkmrk--18"></span>```
    $ sudo apt-get install curl openssh-server ca-certificates postfix
    ## postfix는 일단 그냥 No Configuration으로 선택합니다. 
    ## sudo dpkg-reconfigure postfix 명령으로 언제든지 설정 가능합니다.
    $ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    ## Running apt-get update... 메세지 ...약간 시간 걸림
    ## 메세지 The repository is setup! You can now install packages. 가 보임
    $ sudo apt-get install gitlab-ce
    ## 화면에 노란 별로 그린 마크와 빨간색으로 쓴 GitLab 글자 밑에 
    ## 메세지로 sudo gitlab-ctl reconfigure 를 실행하라고 알려줌 
    $ sudo gitlab-ctl reconfigure
    ## 화면에 글자들이 올라가면서 잠시 시간 걸림 
    ## 설정파일 수정 후에는 항상 이 명령을 해주어야 함
    $ gitlab-ctl -help 
    ## gitlab-ctl 명령뒤에 사용할 수 있는 옵션(start..stop..upgrade 등등) 확인
    $ sudo gitlab-ctl upgrade
    ## 그냥 한번 해 보았습니다. 이상하게 동작하면 restart하라는 메세지가 보입니다.
    ```
    
    <span class="anchor" id="bkmrk--19"></span>
- 설정 : [https://docs.gitlab.com/omnibus/settings/smtp.html#smtp-settings](https://docs.gitlab.com/omnibus/settings/smtp.html#smtp-settings)<span class="anchor" id="bkmrk--20"></span>
- [http://web.joang.com:8088](http://web.joang.com:8088/)<span class="anchor" id="bkmrk--21"></span>
- install the Runner<span class="anchor" id="bkmrk--22"></span>
    - <span class="anchor" id="bkmrk--23"></span><span class="anchor" id="bkmrk--24"></span><span class="anchor" id="bkmrk--25"></span><span class="anchor" id="bkmrk--26"></span><span class="anchor" id="bkmrk--27"></span><span class="anchor" id="bkmrk--28"></span>```
         # For Debian/Ubuntu/Mint
         curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
        
         # For Debian/Ubuntu/Mint
         sudo apt-get install gitlab-runner
        ```

# DevOps Shell script

Web Server

```
#!/bin/sh

# /data/scm/homeplus-club-admin/homeplus-club-admin-web
echo
echo '##### START DEPLOY #####'
echo


echo '##### Set Env #####'
##### JAVA #####
WEBROOT=/data/homeplus/padm
export JAVA_HOME=/app/java/java8
export PATH=$PATH:$JAVA_HOME/bin/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
export Finalbackupfiles=5
export DeleteDate=3
PATH=$PATH:$HOME/bin
export PATH
echo " > JAVA_HOME=" $JAVA_HOME
echo " > Final Backup File count=" $Finalbackupfiles
echo " > DeleteDate=" $DeleteDate "day before"
echo " > WEBROOT=" $WEBROOT
echo
echo '1. Backup & Stop'
export NOW=`date +%Y%m%d`
export OLDDAY=$((NOW -$DeleteDate))
export NOWTIME=`date +%H%M`
echo ' > Today = ' $NOW$NOWTIME

cd $WEBROOT
find $WEBROOT -xdev | grep -v 'nas' > $WEBROOT/achiving.list
tar -cf /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/$NOW$NOWTIME.tar -T $WEBROOT/achiving.list
echo ' > Backup file : ' /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/$NOW$NOWTIME.tar
echo '2. Delete ' $DeleteDate ' day ago = ' $OLDDAY ', but must remain ' $Finalbackupfiles ' files on the backup folder'
Totalbackupfiles=`find /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/ -name "*.tar" | wc -l`
echo ' > Total backupfiles(all files) = ' $Totalbackupfiles
echo ' > Final backup files count = ' $Finalbackupfiles
Targetdeletebackupfiles=`expr $Totalbackupfiles - $Finalbackupfiles`
echo ' > Total backup files - Final backup files =' $Targetdeletebackupfiles
BackupAllFiles=(`find /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/ -name "*.tar" -mtime +$DeleteDate -printf "%f\n" | sort -n`)
cnt=1
echo ' > ' $DeleteDate ' day before delete target file list'
for i in "${BackupAllFiles[@]}"
do
        if [ $Targetdeletebackupfiles -ge $cnt ]
        then
                echo "  " $i " , " $cnt " DELETEed !"
                rm /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/$i
        else
                echo "  " $i " , " $cnt " SKIPed !"
        fi
        let cnt=cnt+1
done

echo '3. Delete Web ROOT'
cd $WEBROOT
ls $WEBROOT | grep -v nas | grep -v export | grep -v achiving.list | grep -v somethingspecial | xargs rm -rf
echo ' > Check Web ROOT = '$WEBROOT
echo ' > list ' `ls $WEBROOT`

echo '4. Copy tar to '$WEBROOT
echo ' > cp OOT-jar.tar.gz to '$WEBROOT
cp /data/scm/homeplus-club-admin/homeplus-club-admin-web/target/ROOT-jar.tar.gz $WEBROOT

echo '5. Decompress TAR.GZ'
echo ' > tar -zxvf '$WEBROOT'/ROOT-jar.tar.gz'
cd $WEBROOT
tar -zxf $WEBROOT/ROOT-jar.tar.gz -C $WEBROOT/ --strip-components=1

echo '6. Clear '
echo ' > Delete ROOT-jar.tar.gz and achiving.list in Web ROOT'
cd $WEBROOT
rm -rf $WEBROOT/ROOT-jar.tar.gz
rm -rf $WEBROOT/achiving.list
echo

echo '##### FINISH DEPLOY #####'
echo 'Bye'
```