작업 디렉토리로 이동 합니다.

 

git bash를 실행 합니다.

디렉토리 공간에서 오른쪽 마우스 클릭 Git Bash Here 선택

git bash 창이 뜨는지 확인

git bash here가 안보인다면 git 설치 부터 해야 한다.

git clone 대상을 복사해서 git bash 에서 clone 해 온다.

git clone https://git

hub.com/사용자id/레퍼지토리id

clone 해 온 디렉토리가 생성 되었는지 확인 한다.

ls -lrt

디렉토리로 이동 한다.

main 이라는 브런치로 clone 해 온걸 확인 할 수 있다.

git hub 에서 master 라는 브런치를 생성 한다.

이 master가 최상위 브런치가 된다.

없다면 master 브런치를 생성 한다.

git hub 들어가서  

branches 탭을 클릭 하면 branch 관리 탭으로 이동 하게 되고 new branch 누르게 되면 신규 브런치를 생성 하게 된다.

다시 git bash 에서 git switch master 를 입력 하면 브런치를 변경 하게 된다.

git pull 명령어를 이용하여 원격 저장소(git hub)의 데이터를 동기화 한다.

test 로 test.txt 파일을 만들어서 commit , push 를 진행 해 본다.

그전에 feature 브런치를 만들어서 휘발성 브런치를 이용해 본다.

git branch feature/feature_20230215

로컬에 feature/feature_20230215 브런치가 생성 되었다.

다시 feature/feature_20230215 로 브런치를 변경해 본다.

test.txt 파일을 생성 해 본다.

git bash 가 리눅스 기반이기에 vi 툴을 사용 할 수 있다.

"a" 를 클릭 하면 에디터를 할 수 있게 되고

"test git hub" 를 입력 하고 저장 해 본다.

저장은 esc 키를 누르고 :wq 를ㄹ 누르면 저장 된다.

파일 생성 된 것을 확인 한다.

git status로 git 의 상태를 확인 한다.

먼저 add 명령어로 변경된 파일을 로컬 레퍼지토리에 추가를 해야 하는데

git add [파일명] 

이렇게 하나씩 하는 방법이 있고

git add .

이렇게 변경된 파일 전부를 추가 하는 방법이 있다.

경고가 나왔다. 이 경고 내용은 줄바꿈 언어를 명확히 해달라고 하는건데

window는 

git config --global core.autocrlf true

 

mac, linux 는 

git config --global core.autocrlf input

 

설정 한다.

다시 git add . 명령어를 수행 하면 추가 된다.

git status 로 상태 확인 한다.

정상 으로 추가 된 것이 확인 된다.

커밋을 해본다.

git commit -m "테스트 커밋"

push 해 본다.

git push origin feature/feature_20230215

git hun 에 가보자

feature/feature_20230215 로 test.txt 파일이 신규 생성 된 것이 보인다.

Compare & pull request 버튼을 클릭 해서 master 와 병합 한다.

신규 pull requests 탭에 테스트 커밋 내용의 pr 이 생성 된 것이 확인 된다.

테스트 커밋을 누르면

하단에 "Merge pull request" 가 보인다.

누르면 Confirm merge 버튼이 생성이 되고 이걸 누르면

feature 브런치를 삭제 할지 선택 한다.

머지도 완료 되었고 삭제도 완료 되었다.

code 탭에서 반영 된 것을 확인 할 수 있다.

자 이제 vscode 에서 사용 하는 방법을 보자.

소스코딩을 위 디렉토리에서 했다고 하자.

이것 저것 소스들이 추가가 되었다.

vscode 로 open folder 로 작업 폴더를 열고 왼쪽 메뉴중 Source Control 메뉴에 가면 변경된 소스 대상들이 보이게 된다.

"..." 버튼 클릭 "Branch" -> "Create Branch" 를 클릭 한다.

브런치 이름을 입력 한다.

커밋 메시지 입력 후 commit & push 를 클릭 한다.

원격 저장소에 해당 브런치가 없다고 한다. "OK, Don't Ask Again" 클릭 한다.

알아서 생성 하고 사용 하게 된다.

pull request 를 생성 할거냐고 묻는다.

"Create Pull Request" 버튼클릭 한다.

왼쪽에 PR 내용이 출력이 된다.

create 누른다.

git hub 내용이 출력 된다.

"Merge Pull Request" 버튼 클릭 한다.

"Create Merge Commit" 클릭 한다.

delete branch 클릭 한다.

로컬과 원격 브런치 삭제 할지 확인 한다.

git hub 들어가서 머지 확인 하면 정상 적으로 된 것을 확인 할 수 있다.

Posted by 블로그하는프로그래머
,

git hub에 token을 생성 해 주자

https://github.com/settings/profile 에 접속 하면 왼쪽 하단에

Developer settings 메뉴가 있다.

새로 생성 해 보자.

Persnal access tokens -> Tokens(classic) -> Generate new token -> Generate new token (classic) 선택 한다.

note 적고

expiration 은 테스트 용 이니 No expiration 선택 한다.

scopes 들은 repo,  admin:repo_hook, delete_repo

Generate token 누른다.

토큰이 신규 생성 되었다. 어디다 적어 두자. 나중에 못 찾는다.

젠킨스에 접속 해 보자

시스템 설정으로 들어가 보자

git hub 부분을 찾는다.

git hub 서버 하나를 추가 한다.

 

이름 입력 후 Credentials 를 추가 한다.

kind - Secret text

secret 에 token 넣어준다.

add 하면 생성 한 대상이 보인다.

Test connetion 클릭 하면 테스트 정상 확인 된다.

저장 버튼 클릭 한다.

젠킨스 메인 에서 새로운 Item 선택 한다.

이름 입력 후 Freestyle project 클릭 한다.

소스코드 관리 메뉴중 "Git" 선택 해서 Repository URL에 git url을 입력 합니다.

오류가 나네?

Credentials 를 설정 해야 합니다.

add -> Jenkins 를 클릭 합니다.

Username, password를 입력 합니다.

깃허브 아이디와, 발급 받은 토큰 입력

 

생성한 Credentials 를 선택 합니다.

오류 안남

빌드유발 부분에서 GitHub hook trigger for GITScm polling 를 선택 한다.

생성 한다.

Posted by 블로그하는프로그래머
,

spring boot 에 그래들 설정을 추가해 준다. build.gradle


// 실행 Main 클래스
bootJar {
    mainClassName = 'com.favbrother.ssv.SchedulerApplication'
}

// profile 설정
bootRun{
    String activeProfile = System.properties['spring.profiles.active']
    systemProperty "spring.profiles.active", activeProfile
}

젠킨스에 툴 설치 한다.(gradle)

gradle 버전 확인 한다.

내 플젝 에서 확인 하는 방법은 "./gradlew -version" 명령어로 확인 할 수 있다.

내껀 7.6 으로 생성

 

젠킨스 플러그인 설치

그래들 플러그인은 이미 설치 되어 있음

Avaliable plugins -> pool build task 선택 하여 설치 진행 한다.

프로젝트 구성으로 이동 한다.

Build Steps를 찾아 Add build step -> Invoke Gradle script 를 선택 한다.

gradle version - gradle 선택

tasks - bootjar 입력

빌드 후 조치에 post build task 선택 한다.

 

아래와 같이 작성 한다.

log text 는 빌드 완료 후 나오는 메시지

 

gradle 빌드가 완료 되면 jar 파일이 생성이 되는데 아래 명령어로 실행 을 하게 된다.

그이전 스크립트는 실행중인 pid를 찾아 있으면 kill 하고 없으면 바로 실행 하는 로직의 스크립트 이다.

제일 앞의 nohup과 &은 백그라운드 실행을 위해 사용하는 명렁어

java -jar 를 실행 해라

-DSpring.profiles.active=prod            프로파일을 어떤걸 사용 할지 정하는 옵션

그리고 경로이다.

경로를 알아 보는 방법은 다음~ 

저장 한다.

지금 빌드를 눌러 본다.

4번이 빌드 중이다. #4를 클릭해 보면 

빌드 정보를 확인 할 수 있다.

Console Output 을 클릭 하면

로그를 확인 할 수 있는데 상단 부근의 workspace 옆에 있는게 지금 프로젝트의 빌드 경로 이다.

 

"지금 빌드" 클릭 하면 정상 빌드 확인 된다.

 

Posted by 블로그하는프로그래머
,

apt 패키지 인덱스 정보를 아래 명령어로 업데이트하여 자바 리스트를 갱신합니다.

sudo apt update

원하는 자바 버전을 설치합니다. 이 글에선 8버전과 16버전을 선택하였습니다.

sudo apt install openjdk-17-jdk

bashrc에 JAVA_HOME을 추가합니다.

  • export 명령어에 대한 설명은 이 글 맨 아래에 추가하였습니다.
  • 많은 application(Apache Hadoop 등)은 자바 위치를 찾기위해 JAVA_HOME 변수를 참조합니다. 이에 다른 어플리케이션에서 쉽게 사용할 수 있도록, JAVA_HOME을 설정합니다.
sudo vi ~/.bashrc

맨 아래 추가 한다.

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

바로 적용 방법

source ~/.bashrc
# 현재 자바 버전 확인
java -version

# 설치된 자바 버전 리스트 확인
update-alternatives --list java

자바 버전 변경 하고자 한다면 아래 명령어를 사용 합니다.

sudo update-alternatives --config java
sudo update-alternatives --config javac

bashrc에 export 명령어가 하는 일

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

1. readlink -f /usr/bin/java 는 해당 심볼릭 링크가 가르키는 최종 directory나 file의 경로를 가지고 옵니다(위 그림 참조)

2. sed "s:bin/java::" 는 문자열의 마지막 bin/java 를 제거해줍니다.

3. export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") 를 통해 JAVA_HOME이 update-alternatives가 관리하는 directory로 동적으로 변경하게 해줍니다.

 

update-alternatives에 대한 추가 설명

  • /usr/bin/java 는 우분투에서 자바 명령어를 실행하기 위해 자바 설치시 자동으로 추가된 심볼릭 링크이며, /etc/alternatives/java 를 가르키고 있습니다.
  • /etc/alternatives/java  update-alternatives 에서 관리 중이며, 실제로 설치된 자바 디렉토리를 가르킵니다. sudo update-alternatives --config java 명령어를 통해 자바 디렉토리를 변경 가능합니다.
  • 링크를 정리하자면 /usr/bin/java  /etc/alternatives/java  actual java directory 의 형태를 가지고 있습니다. 아래 readlink 명령어를 통해 보이는 link가 확인 가능합니다.
Posted by 블로그하는프로그래머
,

portainer 에서 왼쪽 메뉴 "App Templates" 선택 하여 "Jenkins"를 찾아서 클릭 합니다.

Name : 컨테이너의 이름을 입력 합니다.

host의 port 번호와 컨테이너의 8080, 50000 에 연결될 포트 번호를 입력 합니다.

valume : 2편에서 만든 볼륨의 대상을 입력 합니다.

 

"Deploy the container" 버튼을 눌러서 컨테이너를 생성 합니다.

 

8080 포트와 연동한 host port를 입력 하여 jenkins를 접속 해 봅니다.

ip:8080 -> 포트 번호는 입력 한 번호로....

docker logs jenkins 를통해서 패스워드를 확인 한다.

처음 설치할 플러그인들을 선택하는 화면이 나온다. 여기선 기본 권장 플러그인들을 선택하고 설치를 진행한다.

설치 중 ....

사용자 정보를 입력 합니다.

접속 정보를 확인 합니다.

젠킨스를 실행 합니다.

젠킨스가 잘 실행 되었습니다.

 

 

1편 Ubuntu 20.04 에 도커 설치 하기

2편 도커에 gradle, git, open jdk17, nodejs, react 추가 하기

3편 도커 마리아 db 설정 하기

Posted by 블로그하는프로그래머
,

2편에서 소개한 mariadb 컨테이너 생성한 대상은 삭제를 해주기 바란다.

그것 보다 더 편한 컨테이너 생성 하는 방법이 있다!

App Tmeplates라는 메뉴의 기능인데 아래와 같이 생성을 하게 되면 바로 사용이 가능 하다.

왼쪽 메뉴에서 "App Templates" 를 선택 해서 오른쪽에 나오는 MariaDB를 선택 한다.

1. 컨테이너 이름을 입력 한다.

2. Root Password를 입력 한다.

maria db 접속 시 사용 하는 "ROOT" 계정의 비밀번호 입력 부분 이다.

3. "Show advanced options" 버튼을 클릭 하면 더 많은 옵션기능을 활용 할 수 있다.

1. host 의 어떤 포트를 mariadb에서 사용 하는 3306 포트와 연결을 할지 설정 한다.

2. 2편에서 본 Volume 를 설정 할 수 있는 옵션 입니다.

3. "Deploy the container" 를 선택 하여 컨테이너를 생성 합니다.

 

컨테이너 생성이 완료 되었으니 mariadb 접속 정상 확인해 봅니다.

mariadb를 설치 하면 db접속 할수 있는 기본 툴중 "HeidiSQL" 로 접속을 해본다.

처음 접속후 왼쪽 하단의 신규 버튼을 클릭 하면 세션이 하나 생성이 된다.

여기서 네트워크 유형 mariadb를 선택

호스트명은 서버에 설정한 도메인이나 ip를 넣어 준다.

ip 확인은 서버에서 ifconfig로도 확인이 가능 하고 cafe24 호스트 관리 화면에서도 확인이 가능 하다.

사용자는 처음 root 만 있으니 "root"를 입력 한다.

암호는 위에서 설정한 루트 패스워드를 입력 하고

포트는 위에서 입력한 host의 포트를 입력 하고 연결 하면 연결이 정상 으로 확인 된다.

 

1편 Ubuntu 20.04 에 도커 설치 하기

2편 도커에 gradle, git, open jdk17, nodejs, react 추가 하기

 

Posted by 블로그하는프로그래머
,

현제 내가 작성하고 있는 포스팅 에서는 도커 유틸중 Portainer를 통해서 이미지를 다운받고 컨테이너를 돌려 보려고 한다.

컨테이너 생성 주기는 아래와 같이 이루어 진다.

1. 이미지 다운로드

2. 볼륨생성

3. 컨테이너 생성

 

1. 이미지 다운로드 방법

- 첫번째 왼쪽 메뉴중 "Images"를 클릭 한다.

- 두번째 이미지 테그를 넣어 준다.

- 이미지 테그를 모를 경우 세번째 도커 허브를 확인 해서 넣어 줘야 합니다.

저는 아래와 같이 테그들로 이미지 대상들을 따운로드 했습니다.

jenkins:2.60.3

mariadb:latest -> 마지막 버전은 latest 로 테그가 생성 됩니다.

node:lts-alpine3.17

openjdk:20-ea-17-jdk

 

2. 볼륨생성

볼륨을 생성 하는 이유는 컨테이너의 저장공간? 과 로컬 서버의 저장 공간의 데이터를 연결 하는 공간으로 이해 하면 될 것 같다.

컨테이너의 경우 바로 삭제가 가능 하기에 컨테이너 안의 데이터가 휘발성으로 삭제가 된다면 복구 하기 어려운 부분이 있다, 이런경우 볼륨을 생성 해서 연결을 하고 로컬에서 관리가 되는 데이터가 있다면 삭제가 안된 데이터를 바로 연결이 가능 한 편의성을 제공 한다.

왼쪽 메뉴중 "Volumes" 메뉴를 클릭 한다.

오른쪽 버튼 중 "Add volume" 클릭 하여 볼륨을 생성 합니다.

필수 값을 입력 하고 "Create the volume" 버튼을 클릭 한다.

생성 된 내용을 확인 한다.

3. 컨테이너 생성

자 이제 직접적으로 서비스가 실행이 되는 컨테이너를 생성 한다.

왼쪽 메뉴 중 "Containers" 클릭 후 "Add container" 버튼을 클릭 하여 컨테이너를 생성 한다.

 

1. 컨테이너 이름

2. 이미지 테그

3. "pulish a new network port" 버튼을 클릭 한다.

로컬 포트와 도커 포트를 연결 하는 기능으로 이해 한다.

4, 5. 포트 번호를 입력 한다. (mariadb 의 경우 기본 포트가 3306 이기에 둘다 3306을 입력 한다.)

 

- "Volumes" 탭을 클릭 한다.

volume 에 이전에 생성한 "mariadbVal - local" 대상을 선택 한다.

 

- "Restart policy" 탭을 클릭 하고 "Restart policy" - "Always" 를 선택 한다.

도커가 재시작 될때 컨테이너도 시작이 되도록 설정 하는 기능 이다.

- "Deploy the container" 버튼 클릭 하여 컨테이너를 생성 한다.

"Container list" 에서 "Quick Actions" 기능은 차례데로 아래와 같은 기능을 지원 한다.

  • Log: 컨테이너 로그
  • Inspect: 상세정보
  • Stats: 자원 사용량(메모리, CPU, 네트워크)
  • Exec Console: 해당 컨테이너 shell 연결

1편 Ubuntu 20.04 에 도커 설치 하기

Posted by 블로그하는프로그래머
,

1) docker pull (이미지이름):(태그)

이미지 가져오는 명령어 (태그 생략 시 latest로 자동 입력됩니다.)

(ex)

1
docker pull centos:7

2) docker images

로컬에 설치된 이미지 확인하는 명령어

(ex)

1
docker images

3) docker run (옵션) (이미지):(태그) (커맨드)

컨테이너 생성 및 실행 명령어(각종 파라미터로 컨테이너의 추가 기능을 설정 가능합니다.)

 

* 옵션

-i : 상호 입출력

-t : tty(터미널) 사용

-it : i, t 옵션 동시 사용

-d : detached mode(백그라운드 실행)

-e : 컨테이너 내에서 사용할 환경 변수 설정

-name : 컨테이너 이름 설정

-rm : 프로세스 종료 시 컨테이너 자동 제거

-p : host와 컨테이너의 포트포워딩 설정

 

* 커맨드

bin/bash : 컨테이너에 bash 쉘 명령어 설정

 

(ex)

1
docker run ----name example -80:80 ubuntu:latest bin/bash

4) docker start (컨테이너 id 또는 컨테이너 이름)

컨테이너 실행 명령어

(ex)

1
docker start example

5) docker restart (컨테이너 id 또는 컨테이너 이름)

컨테이너 재실행 명령어

(ex)

1
docker restart example

6) docker attach (컨테이너 id 또는 컨테이너 이름)

컨테이너 접속 명령어(접속할 컨테이너가 실행이 되어있어야 합니다).

(ex)

1
docker attach example

 

* 컨테이너 안에서 빠져나오는 명령어

(1) exit, Ctrl + d(c) : 컨테이너를 정지하고 빠져나옵니다.

(2) Ctrl + p + q : 컨테이너를 정지하지 않고 빠져나옵니다.


7) docker stop (컨테이너 id 또는 컨테이너 이름)

컨테이너 정지 명령어

(ex)

1
docker stop example

8) docker rm (컨테이너 id 또는 컨테이너 이름)

컨테이너 삭제 명령어

(ex)

1
docker rm example

9) docker ps (옵션)

컨테이너 조회 명령어 (기본 명령은 실행 중인 컨테이너만 조회됩니다.)

 

* 옵션

-a : 중지된 컨테이너까지 조회

--filter : key=vaule 형식으로 컨테이너 정보 필터링

(필터는 id, name, label, exited, status, ancestor 등등이 있습니다.)

--format : 조회 출력 형식을 Go 템플릿을 사용해 변경

(Go 템플릿은 "table {{.ID}}\t{{.Labels}}" 같은 형식으로 작성합니다.)

-l : 가장 최근에 생성한 컨테이너 조회 (중지된 컨테이너 포함)

-q : 컨테이너 ID만 조회

-s : 컨테이너의 파일 사이즈 추가 조회

 

(ex)

1
docker ps ----filter name=example

10) docker rename (기존 컨테이너 이름) (변경할 컨테이너 이름)

컨테이너 이름 변경 명령어

(ex)

1
docker rename example ex
Posted by 블로그하는프로그래머
,