'jenkins'에 해당되는 글 3건

  1. 2020.03.19 [Docker] gitlab, redmine, jenkins 설치 하기
  2. 2020.03.17 [Shell] Ubuntu 에서 Reboot 시 자동 스크립트 실행.
  3. 2018.07.04 [Jenkins] Gradle 을 이용한 submodule update 이슈

[Docker] gitlab, redmine, jenkins 설치 하기

Cloud&Container/IaC 2020. 3. 19. 11:48

 

환경)

- AWS

- Ubuntu 18.04 LTS

- Python 3.8.2

- Pip 3

 

Step 1) docker 를 설치 합니다.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get install curl apt-transport-https ca-certificates software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce
$ sudo systemctl status docker
$ sudo docker run hello-world

$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/create?fromImage=gitlab%2Fgitlab-ee&tag=latest: dial unix /var/run/docker.sock: connect: permission denied

$ sudo usermod -a -G docker ubuntu
또는
$ sudo chmod 666 /var/run/docker.sock
$ sudo service docker restart

 

Step 2) docker compose 를 설치 합니다.

https://docs.docker.com/compose/compose-file/compose-versioning/#version-3

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version

# uninstall
$ sudo rm /usr/local/bin/docker-compose

 

# 도커 허브를 통해서 개별 컨테이너에 대한 정보를 확인해서 docker-compose.yml 파일을 만들면 됩니다.

https://hub.docker.com/

 

Step 3) gitlab 을 설치 합니다.

$ mkdir -p docker/gitlab
$ cd docker/gitlab
$ vi docker-compose.yml
version: '3.1'

services:
  web:
    image: 'gitlab/gitlab-ee:12.8.1-ee.0'
    restart: always
    hostname: 'xxxxx.compute.amazonaws.com'
    environment:
      TZ: "Asia/Seoul"
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://xxxxx.compute.amazonaws.com'
        letsencrypt['enable'] = false
        nginx['redirect_http_to_https'] = false
        nginx['listen_https'] = false
        nginx['listen_port'] = 8929
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      - '/home/ubuntu/docker/gitlab/config:/etc/gitlab'
      - '/home/ubuntu/docker/gitlab/logs:/var/log/gitlab'
      - '/home/ubuntu/docker/gitlab/data:/var/opt/gitlab'

$ docker-compse up -d

- port 정보는 환경에 맞게 수정 하면 됩니다.

- docker compose 의 version 에 따라 yml syntax 가 다를 수 있으니 아래 문서에서 확인 하시면 됩니다.

https://docs.docker.com/compose/compose-file/ 

 

Step 4) redmine 을 설치 합니다.

$ mkdir -p docker/redmine
$ cd docker/redmine
$ vi docker-compose.yml
version: '3.3'

services:
  redmine:
    depends_on:
      - mysql
    image: redmine:4.1.0
    restart: always
    container_name: redmine
    ports:
      - 9292:3000
    environment:
      TZ: "Asia/Seoul"
      REDMINE_DB_MYSQL: mysql
      REDMINE_DB_USERNAME: root
      REDMINE_DB_PASSWORD: ROOT-PASSWORD
      REDMINE_DB_DATABASE: redmine_default
      REDMINE_DB_ENCODING: utf8
      #REDMINE_NO_DB_MIGRATE: true
    volumes:
      - ./data:/usr/src/redmine/files
      - ./plugins:/usr/src/redmine/plugins
      - ./themes:/usr/src/redmine/public/themes
  mysql:
    image: mysql:5.7.29
    container_name: mysql
    ports:
      - 3306:3306
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      TZ: "Asia/Seoul"
      MYSQL_ROOT_PASSWORD: 'ROOT-PASSWORD'
      MYSQL_DATABASE: 'redmine_default'
    volumes:
      - ./data:/var/lib/mysql

# redmine 에서 사용할 DB 계정 정보는 mysql 을 먼저 구성 한 후 등록 하고 redmine 을 실행 시켜 줘야 정상적으로 동작 합니다.
# 이와 같이 하지 않을 경우 connection 이 안되거나 redmine 용 database 가 없다고 오류를 발생 시킵니다.

- redmine 설치 이전에 mysql 이 먼저 구성이 되어야 합니다.

- redmine 의 mysql 사용자를 별도로 만들어 주는 것이 좋기 때문에 필요 하다면 아래와 같이 수정 하면 됩니다.

services:
    mysql:
        image: mysql
...중략...
		volumes:
            - ./sql/init-redmine.sql:/docker-entrypoint-initdb.d/init-redmine.sql
...중략...


# init-redmine.sql
INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, 
`Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, 
`Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, 
`Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, 
`Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, 
`Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, 
`Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, 
`ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, 
`max_updates`, `max_connections`, `max_user_connections`, `plugin`, 
`authentication_string`, `password_expired`, `password_last_changed`, 
`password_lifetime`, `account_locked`) 
VALUES ('%','redmine','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',
0,0,0,0,'mysql_native_password',password('redmine'),'N',NOW(),NULL,'N')

FLUSH PRIVILEGES;

또는

CREATE USER 'redmine'@'%' IDENTIFIED BY 'redmine';
GRANT ALL PRIVILIEGS ON redmine_default.* TO 'redmine'@'%'

FLUSH PRIVILEGES;

- MySQL 문법 가볍게 한번 보고 넘어 가겠습니다.

CREATE USER '유저아이디'@'접속호스트' IDENTIFIED BY '유저암호';

# 로컬 호스트에서 접속을 허용
CREATE USER '유저아이디'@'localhost' IDENTIFIED BY '유저암호';

# 모든 호스트에서 접속을 허용
CREATE USER '유저아이디'@'%' IDENTIFIED BY '유저암호';

GRANT ALL ON 데이터베이스명.테이블명 TO '유저아이디'@'접속호스트';

# 모든 데이터베이스의 모든 테이블에 대해 로컬호스트로 접속한 유저에게 허용
GRANT ALL ON *.* TO '유저아이디'@'localhost';

# 모든 데이터베이스의 모든 테이블에 대해 모든 호스트로 접속한 유저에게 허용
GRANT ALL ON *.* TO '유저아이디'@'%';

 

Step 5) jenkins 를 설치 합니다.

# python 3.8 최신 버전을 설치 합니다.
# source 로 설치 하는 내용입니다.
$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
 
$ cd /opt
$ sudo wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
$ sudo tar xzf Python-3.8.2.tgz

$ cd Python-3.8.2
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
$ sudo apt-get install python3-pip 

# 패키지로 설치 하는 내용입니다.
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.8

# 기본에 3.6.9 와 같이 다른 python3.x 가 설치 되어 있는 경우 설치 하지 않습니다.
$ sudo apt-get install python3.8-dev
$ sudo apt-get install python3.8-distutils

$ sudo apt-get install python3-pip

# virtualenv 가 필요 하다면,
$ pip3 install virtualenv virtualenvwrapper

# Jenkins 설치
$ mkdir -p docker/jenkins
$ cd docker/jenkins
$ vi docker-compose.yml
version: '2'

services:
  jenkins:
    image: 'jenkins/jenkins:lts'
    container_name: 'jenkins'
    restart: always
    ports:
      - '8080:8080'
    volumes:
      - './jenkins_home:/var/jenkins_home'
      - '/home/ubuntu/.ssh:/var/jenkins_home/.ssh'
      - '/home/ubuntu/.aws:/var/jenkins_home/.aws'
    environment:
      TZ: "Asia/Seoul"

$ docker-compose up -d

# 에러 발생
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied

$ sudo chown -R 1000:1000 jenkins_home

# Jenkins 에서 awscli 와 boto3 를 사용하기 위한 설치
$ sudo apt install awscli
$ pip3 install boto3

# Jenkins 에서 aws sdk 사용 하기 위한 설정
# host 에 aws configure 설정을 하고 mount 시킵니다.
$ aws configure
$ sudo chmod 666 .aws/config
$ sudo chmod 666 .aws/credentials
$ docker restart jenkins

이제 기본적인 설치는 끝났습니다.

응용은 이제 각자 알아서 해보시기 바랍니다.

:

[Shell] Ubuntu 에서 Reboot 시 자동 스크립트 실행.

ITWeb/개발일반 2020. 3. 17. 11:30

급하게 필요한 것들을 구성 하다 보니 좀 엉성하게 구성이 되어서 챙겨야 할 게 많네요.

Jenkins 를 설치 해 두었는데 instance 가 재부팅 되면 매번 수동으로 실행을 해줘야 해서 자동으로 실행 되도록 서비스 등록을 했습니다.

 

환경)

- Ubuntu

- Jenkins war 설치

 

자동 스크립트 구성)

$ cd /etc/init.d

$ sudo vi jenkins

#! /bin/sh

JENKINS_HOME=/home/mzc/app/jenkins
JENKINS_BIN=$JENKINS_HOME/bin

sudo -u jenkins $JENKINS_BIN/stop.sh
sudo -u jenkins $JENKINS_BIN/start.sh

exit 0

 

$ sudo update-rc.d jenkins defaults

$ sudo reboot

$ service --status-all

 

이제 자동으로 잘 올라 오는지 확인해 보시면 되겠습니다.

:

[Jenkins] Gradle 을 이용한 submodule update 이슈

ITWeb/개발일반 2018. 7. 4. 07:53

Jenkins 에서 Gradle 을 이용한 multi project(submodule) build 시 참고사항

젠킨스 소스 관리영역에서 Additional Behaviours 설정을 추가 해줘야 합니다.


- Advanced sub-modules behaviours

여기서 총 세 가지 항목을 선택 하게 됩니다.


- Recursively update submodules

이 설정은 --recursive 옵션을 사용합니다.


- Update tracking submodules to tip of branch

이 설정은 --remote 옵션을 사용합니다.


- Use credentials from default remote of parent repository

이 설정은 parent project 의 credential 을 사용 한다는 의미 입니다. 


여기서 제가 경험한 문제는 submodule 이 업데이트 되지 않는 문제였습니다.

intellij 에서 Project Update 기능과 비슷하다고 보시면 될 것 같은데요.


이 와 같은 기능을 적용하기 위해서는 위 2번째 옵션을 선택해줘야 합니다.


- Update tracking submodules to tip of branch

이 옵션의 의미는 submodules 의 변경된 내용을 업데이트 하기 위한 것입니다.


참고문서)

https://git-scm.com/docs/git-submodule#git-submodule---remote



: