-remote repository에서 브렌치를 복제
pipeline {
agent any
stages {
stage('Hello') {
steps {
git branch:’브렌치명’,credentialsId:’github-token’, url:’repository URL’
}
}
name/ email 설정
- git config --global user.name "값"
- git config --global user.email "값"

Git 초기화
branch 명 변경
- git branch –m 이전브랜치명 변경할 브랜치명

원격 저장소 추가
- git remote add origin “저장소명”

원격저장소와 동기화
- git pull origin 브랜치명

push
-
초기화
-
원격저장소가 추가되어있지 않으면 추가
- git remote add origin “Repository URL”

- 파일 추가
- git add .

- 커밋
- git commit -m “커밋메시지”

- push
- git push –u origin 브렌치명

젠킨스에서 빌드
jenkins > console output


pipeline {
agent any
tools {
maven 'Maven' // Jenkins에 설정한 Maven 이름
}
environment {
JAVA_HOME = 'C:\\dev\\java-17-openjdk-17.0.3.0.6-1'
PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
}
triggers {
pollSCM('H/6 * * * 1-5')
}
stages {
stage('clone repository') {
steps {
git branch: 'main', credentialsId: 'github-token', url: 'https://github.com/YeongKing/test_jenkins2.git'
}
}
stage('build WAR') {
steps {
script {
def mvnHome = tool name: 'Maven', type: 'hudson.tasks.Maven$MavenInstallation'
withEnv(["MAVEN_HOME=${mvnHome}"]) {
//pom.xml에 version노드의 war가 targit 디렉토리에 생성된다.
bat "\"${mvnHome}\\bin\\mvn\" clean package -DskipTests"
}
}
}
}
}
}

Docker
- 리눅스의 LXC(LinuX Container)기술을 기반으로 발전해온 컨테이너 가상화 플랫폼.
- 데이터 또는 프로그램을 각각 독립된 환경에 격리시키는 기능을 제공하는 소프트웨어.
- 2013년 3월 닷 클라우드의 솔로몬 하익스에 의해서 발표된 운영체제를 통째로 격리시키는 오픈소스 가상화 플랫폼
- 가상화 플랫폼(Virtualization Platform)은 물리적인 하드웨어 자원을 가상화하여 여러 가상머신이나 컨테이너에서 독립적으로 운영체제와 애플리케이션을 실행 할 수 있는 소포트웨어.
- 가상화 플랫폼은 서버 자원을 효율적으로 활용, 비용절감, 유연한 자원 관리 제공.
- 가상화 플랫폼
- Hypervisor
- 타입1 : 베어메탈 => 직접 하드웨어 위에 설치되며 VM관리(MS Hyper-V)
- 타입2 : 호스트형 => 기존 운영체제 위에 설치되며 VM관리(VirtualBox, VMWare)
- 가상머신(VM)
- Hypervisor에 의해 실행되는 독립적인 운영체제와 애플리케이션 환경
- 물리적인 서버의 H/W자원을 공유하면서도 독립적인 시스템 처럼 동작
- 컨테이너
- 운영체 수준에서 가상화된 환경을 제공하며, 애플리케이션과 종속성을 격리된 공간에서 실행.
- 가볍고 빠르게 실행된다.( Docker,Kubernetes(k8s) 대표적인 기술)

사용 기술
- chroot, 네임스페이스, Cgroup 3가지 기술을 사용한다.
- chroot : 특정 디렉토리를 최상위 디렉토리( root )로 설정하는 리눅스 명령.
- 네임스페이스 : 프로세스 자원 관리 기능( mnt, pid,,, 그룹화하여 할당기능 )
- Cgroup : CPU, 메모리, Disk IO, 네트워크 기능 등의 자원사용량을 제어하는 기능. => 특정 애플리케이션에서 과도한 자원사용을 방지할 수 있다.
도커와 가상머신의 차이

- VM : H/W를 Host OS가 제어하고 Hypervisor를 사용하여 Guest OS를 올려서 별도에 독립적인 기능을 제공.
- Container : H/W를 OS가 제어하고 Container를 사용하여 애플리케이션을 올려서 격리된 환경에서 독립적인 기능을 제공.
컨테이너 가상화의 장점
- Hypervisor와 Guest OS가 없으므로 가볍다.
- 경량의 이미지로 만들어지므로 복제, 이관, 배포가 용이하다.
- Guest OS 부팅시간이 필요없다.
- 가상머신보다 가볍기 때문에 동일한 H/W자원에서 더 많은 애플리케이션을 실행할 수 있다.
컨테이너
- 코드와 모든 종속성을 패키지화 하는 표준 소프트웨어의 단위
도커 컨테이너 이미지
- 애플리케이션 실행에 필요한 모든 것을 포함한 경량의 격리된 실행가능한 소프트웨어 패키지
주요기능
- LXC를 이용한 컨테이너 구동, 도커 CLI제공 (도커제어명령)
- LXC : Containerd의 데몬 프로세스로 이미지 전송, 컨테이너 실행 및 감독, 네트워커 연결 등 모든 컨테이너 라이프 사이클을 관리.
구성요소
- Docker Engine : 컨테이너 및 이미지 제어
- Docker Hub : 컨테이너 이미지를 배포하기 위한 공공 레지스트리 (공개 - 무료 , 비공개 - 유료)
- Docker compose : 연관된 컨테이너 구성정보를 YAML 코드로 관리
- Docker Swarm : 클러스터 기반의 도커 오케스트레이션 도구.