Skip to content

Commit f2f8393

Browse files
committed
2 parents b986b30 + 5c54ae8 commit f2f8393

File tree

63 files changed

+8904
-1318
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+8904
-1318
lines changed

.vscode/settings.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{
2+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
layout: post
3+
title: Jenkins 강의 01
4+
subtitle : CI/CD의 이해
5+
tags: [CI/CD, DevOps, Jenkins]
6+
author: Young
7+
comments : True
8+
---
9+
10+
## Agile vs Waterfall
11+
너무 잘 알고 있는 내용이고,
12+
13+
1980~1990
14+
Waterfall
15+
16+
2000
17+
Agile
18+
분산
19+
가상
20+
21+
2010
22+
DevOps
23+
Microservice
24+
Container
25+
Cloud
26+
27+
## 클라우드 네이티브 아키텍처
28+
- CI/CD
29+
- DevOps
30+
- 마이크로서비스
31+
- 컨테이너
32+
33+
필수 항목들임.
34+
35+
Inner Architecture : 실제 동작하는 로직이 있는 소스 코드들
36+
Outer Architecture : 프로그램 동작/운영을 원할하게 하는데 도움을 주는 서비스들
37+
38+
- Gateway
39+
- Router
40+
- Load Balancing
41+
- Service Discovery
42+
- Runtime Platform
43+
- CI/CD Automation (Build, 이미지 저장, 파이프라인)
44+
45+
도커 환경이 최적의 환경이다.
46+
47+
48+
## CI/CD
49+
50+
CI : 개발된 소스를 패키징하는 작업
51+
CD : 패키징된 애를 운영서버로 배포하는 작업
52+
53+
주기적으로 빈번하게 배포를 하겠다는 의미임.
54+
55+
코드 품질 보증 단위 TEST의 중요성
56+
57+
58+
### 순서별 정리
59+
60+
git, scm, vcs (형상관리 시스템)
61+
개발자가 커밋한다.
62+
63+
버전관리 트래킹 관리
64+
github, gitlab, bitbucket
65+
66+
commit
67+
68+
69+
=>
70+
71+
Jenkins
72+
빌드, 테스트, 패키지 작업을 해주는 도구
73+
74+
테스트를 통과하면 다시 알려줌.
75+
통과 못하면 Pass 해줌.
76+
77+
패키지된 결과물이 배포가 되는 것을 볼 수 있음.
78+
79+
80+
Jenkins로 빌드할 때 사용하는 도구 : Maven
81+
82+
빌드 된 애를 Docker로 패키징 => 쿠버네티스
83+
84+
앤서블, 테라폼
85+
IC 라고 불리는 것
86+
87+
Infrastructure as Code
88+
89+
스크립트로 프로그래밍해서
90+
91+
docker로 넘겨줄 수 있게 됨.
92+
93+
클라우드에 올리는 방법 : Google, Naver, AWS
94+
95+
WAR 파일 => WAS 에 배포
96+
docker 로 배포
97+
98+
sonar qube라는 테스트 할 때 사용하는 툴도 있음.
99+
100+
amazon에서도 컨테이너를 만들 수 있음.
101+
102+
103+
104+
## Jenkins Pipeline
105+
106+
Item
107+
Pipeline
108+
DSL
109+
JenkinsFile (선언형 방식, 스크립트 방식 2가지가 있음)
110+
111+
112+
Jenkins가 Java 기반으로 동작하기 때문에
113+
사전에 JDK가 있어야 Jenkins를 사용할 수 있다.
114+
115+
오라클 계정을 입력해줘야 함.
116+
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
layout: post
3+
title: Jenkins 강의 02
4+
subtitle : Jenkins를 이용한 CI/CD 자동화 도구의 사용
5+
tags: [CI/CD, DevOps, Jenkins]
6+
author: Young
7+
comments : True
8+
---
9+
10+
### Git과의 연동
11+
12+
플러그인 관리로 가서 확인 필요
13+
14+
github같은 경우는 이미 있음.
15+
16+
Global Tool Configuration 항목에 가서
17+
Git을 설정할 수 있음.
18+
19+
기본으로 설정해 주면 됨.
20+
21+
## Maven 설치
22+
23+
24+
## Tomcat 플러그인
25+
26+
## Maven 프로젝트 만듬
27+
28+
pom.xml 을 가지고 빌드 해서
29+
30+
빌드 후 조치에서
31+
32+
Deploy war/ear to a container
33+
war 파일을 배포해라
34+
35+
Containers
36+
Credential 필요함.
37+
38+
war 파일을 deploy 까지 성공했다고 나옴.
39+
40+
Tomcat 에서 실행시켜줄 수 있음.
41+
42+
## poll scm (빌드 유발)
43+
44+
주기적으로 build를 하는 방법
45+
46+
Build 속성에서
47+
- Build Periodically : 주기적으로 빌드(그냥 무조건 빌드함)
48+
- Poll SCM : 이 경우는 Commit여부를 가져와서 Build
49+
50+
Schedule 넣을 땐
51+
***** 이렇게 넣었다고 한다면
52+
매 순간 한다는 뜻.
53+
54+
이렇게 넣어주면
55+
소스코드가 변경되는 순간 Build => 서버에 배포 까지 해줌.
56+
57+
## SSH + Docker 파일에 배포
58+
59+
0. SSH 서버 만들어주기.(이것도 docker임, 서버1)
60+
1. war 파일을 SSH를 이용해서 복사 (서버2)
61+
2. (서버2) Dockerfile + *.war => Docker Image 빌드
62+
3. Docker Image -> 컨테이너 생성
63+
64+
## Dockerfile
65+
```dockerfile
66+
FROM tomcat:9.0
67+
68+
LABEL org.opencontainers.image.authors="edowon0623@gmail.com"
69+
70+
COPY ./hello-world.war /usr/local/tomcat/webapps
71+
```
72+
73+
## Jenkins에서 Dockerfile 사용하기
74+
75+
Exec Command
76+
```shell
77+
docker build --tag cicd-project -f Dockerfile .;
78+
docker run -d -p 8080:8080 --name my-docker-server cicd-project:latest
79+
```
80+
81+
이렇게하면,
82+
container 작동 되는 중에 한번더 빌드하면 실패한다.
83+
84+
왜냐면, 기존에 프로세스가 존재하면 run 이 제대로 되지 않음.
85+
그러므로 삭제하는 작업을 넣어줘야하는데
86+
이는 section 3번에서 제대로 다루기로 하였다.
87+

0 commit comments

Comments
 (0)