목록전체 (156)
Dazzling 개발 노트
Jenkins - GitHub - Docker 연동을 위한 기본적인 설정은 끝났다. 여기서 한가지 문제가 있는데 GitHub에서 Webhooks를 날릴 때, 특정 branch 가 아닌 모든 branch에 push가 일어난 경우에 webhooks가 발생된다. 이게 문제가 되는 이유는 필자는 main branch를 기준으로 배포하도록 설정해 두었는데,다른 개발 branch에서 push가 되는 경우, webhook이 발생되어 배포가 진행된다.근데 main 기준에서는 변경 사항이 없으니 의미없는 과정이 진행된다는 것이다.개발을 하다보면 개발 branch 간의 push가 일어나는 경우가 많기 때문에 이 문제는 반드시 조치가 필요하다. GitLab에서는 해당 기능을 제공하지만, GitHub에서는 지원하지 않는 듯 ..
지난 게시글에서는 간단한 pipeline을 작성해 Jenkins와 GitHub를 연결해 보았다. Jenkins - GitHub - Docker 연동을 위해 Jenkins Pipeline Script를 작성해보도록 하겠다. 이 Script를 통해 Jenkins에서 Docker(WAS)로 배포가 진행된다. 일단 지난 번에 설정한 Pipeline을 Jenkins 서버에서가 아닌 프로젝트 내 파일로 관리하도록 Jenkins 프로젝트의 설정을 변경한다. Jenkins 사이트 > 프로젝트 > 구성 > Pipeline에서 다음과 같이 설정한다. - Definition을 Pipeline script from SCM으로 변경한다. - SCM을 Git으로 지정하고 Repository URL을 입력한다. - Credenti..
Jenkins - GitHub - Docker 연동을 위해 Jenkins 프로젝트를 생성한다. Jenkins 프로젝트 생성 및 설정하기 새로운 item을 클릭하여 다음과 같은 페이지로 이동, 프로젝트 이름을 작성 후 pipeline을 선택, OK를 클릭한다. GitHub project 옵션 선택 GitHub project를 체크하고 repository url을 입력한다. 이 옵션을 통해 Jenkins와 GitHub 프로젝트가 연동된다. GitHub hook trigger for GITScm polling 옵션 선택 github hook trigger for GITScm polling을 체크한다. 이 옵션을 통해 GitHub에서 push 이벤트가 발생되면 Webhook을 날려 Jenkins가 받아 요청을 ..
Jenkins - GitHub - Docker 연동을 위해 필요한 AccessKey를 생성하고, Jenkins Credential에 등록한다. 총 4개의 AccessKey, 혹은 token을 발급하여 Jenkins Credential에 등록했다. 1. GitHub Access Token 2. Docker Access Token 3. Slack Access Token 4. ec2-ssh 시작하기 전에 먼저 강조하자면, 모든 토큰은 생성 후 다시 볼 수 없기 때문에 발급된 화면에서 바로 메모장이나 노션에 잘 저장하도록 한다. 1. GitHub Access Token 발급하기 GitHub 접속 후 프로필 아이콘 클릭 -> Settings > Developer settings > Personal access t..
Jenkins - GitHub - Docker 연동을 위해 필요한 플러그인을 설치한다. 사용된 플러그인은 다음과 같다. - Docker : docer 사용을 위해 설치 - Docker Pipeline : docker 사용을 위해 설치 - GitHub plugin : GitHub 사용을 위해 설치 - Generic Webhook Trigger Plugin (선택) : GitHub에서 특정 branch에서 push가 일어나는 경우에만 배포되도록 설정하기 위해 설치 - SSH Agent Plugin (선택) : CI/CD 중에 ssh 접속을 위해 설치 - Slack Notification Plugin (선택) : Slack으로 알림을 받기 위해 설치 선택을 제외한 나머지 플러그인은 최소한으로 반드시 설치해야 ..
CI/CD 구현하는 과정을 직접 해보며 정리했다. 각 과정마다 게시글을 나누어 작성했으니 만약 이해가 가지 않을땐 앞, 뒤 게시글을 참고하기 바란다. CI/CD를 구현하는 도구는 다양하지만, 필자는 Jenkins와 GitHub, Docker를 사용했다. Jenkins - GitHub - Docker(WAS-SpringBoot) 여기서 Jenkins는 서버에 바로 배포하고 WAS는 docker를 통해 컨테이너로 배포한다. 사용한 서비스와 기술은 다음과 같다. AWS Ec2 (2개) Jenkins GitHub Docker Slack SpringBoot Gradle Java 인스턴스 생성하기 AWS에 접속하여 로그인한다. EC2 > 인스턴스 > 인스턴스 시작 인스턴스의 이름 입력, OS 선택, 인스턴스 유형 ..
노드의 정의 배열의 시간복잡도는 중간 삽입과 삭제의 시간 복잡도가 O(N)이다. 삽입과 삭제를 매우 자주 해야 하는 상황에서 배열은 비효율적이다. 이 문제를 해결하기 위해 삽입과 삭제가 잦은 상황에서는 연결 리스트 자료구조를 사용한다. 탐색은 O(N)으로 느리지만 삽입과 삭제 연산은 O(1)로 굉장히 빠르다. 연결 리스트에서는 노드라는 개념에 대한 이해가 필요하다. 노드란 '정보를 담는 하나의 창구'라고 이해하면 쉽다. 일반적으로 연결 리스트에서 하나의 노드는 데이터와 다른 노드로 이동하는 경로를 갖고 있다. 연결 리스트는 여러개의 노드가 모여서 형성되는 구조라고 생각하면 된다. 요약하자면 연결 리스트에서 노드란 정보를 담는 하나의 창구로, 연결 리스트는 노드 간의 연속적인 연결로 구성되어 있다. 정의하..
[코드트리] 정수 명령 처리 5 (Java) 문제 https://www.codetree.ai/missions/6/problems/process-numeric-commands-5?&utm_source=clipboard&utm_medium=text 풀이/후기 입력을 StringTokenizer로 받아서 token이 1개인지 2개인지 구별했다. 그 안에서 명령이 어떤 것인지, 수행할 값이 무엇인지 확인해 배열에 넣거나 값을 출력한다. 직접 코드를 보는 것이 이해가 더 빠를 것 같다. 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Buffere..