만쥬의 개발일기
article thumbnail
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -3 (도커의 설치부터 자동배포까지)
♾️DevOps/♾️CI & CD 2023. 10. 22. 03:23

지난 포스팅들에서는 도커와 젠킨스의 기본 환경 설정을 했다면, 이번 포스팅에서는 실제 파이프라인을 구축해보겠다. docker start jenkins docker exec -it jenkins /bin/bash 혹시 젠킨스를 재실행할 상황이 온다면 위 스크립트를 실행하면 된다. (run 명령어는 재설치이므로 유의) 젠킨스와 깃허브 연동 젠킨스의 메인 페이지이다. 왼쪽 네비게이션에서 새로운 item을 클릭해준다. item name을 적고, Freestyle project를 선택해준다. 이제 상세 설정의 소스 코드 관리 탭에서 Repository URL을 적어주면 되는데, 여기서 한 가지 의문이 든다. 바로 우리 프로젝트의 Repository는 private 레포이기 때문이다. 따라서 gitHub와 Jenk..

article thumbnail
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -2 (도커의 설치부터 자동배포까지)
♾️DevOps/♾️CI & CD 2023. 10. 22. 02:16

2023.10.21 - [분류 전체보기] - [CI/CD] - 도커와 젠킨스를 사용한 CI/CD -1 (도커의 설치부터 자동배포까지) 도커의 설치와 기본 세팅은 위 포스팅에 정리되어있다. 젠킨스 이미지 다운 docker pull jenkins/jenkins:lts 먼저 docker 명령어를 이용해 jenkins 이미지를 다운받는다. docker images 를 통해 내가 다운받은 이미지 목록을 볼 수 있고, 이렇게 젠킨스가 잘 다운된 것을 확인할 수 있다. 젠킨스 이미지를 컨테이너화 docker run -d -p 8088:8080 -v /jenkins:/var/jenkins_home --name anna_jenkins -u root jenkins/jenkins:lts 이제 젠킨스 이미지를 컨테이너에 올려..

article thumbnail
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -1 (도커의 설치부터 자동배포까지)
♾️DevOps/♾️CI & CD 2023. 10. 21. 20:35

오늘은 window wsl2 ubuntu18.04환경에서 도커를 설치하고, 젠킨스를 이용해 자동 배포 파이프라인을 구축해 볼 예정이다. 자동 배포의 필요성 기존 팀 프로젝트의 work flow는 다음과 같았다. 각자 기능 구현 후 PR EC2 서버로 접속 github에 merge된 코드를 git pull gradle을 이용해 build jar파일을 java -jar 명령어를 통해 80번포트에 실행 이 1번~ 5번 과정이 서버 배포의 플로우이고, 서버 배포는 매번 기능이 추가 될 때마다 시행되어야 한다. 이 flow는 새로운 기능마다 바뀌는 것이 아니기에, 자동화 할 수 있는 대상이다. 이를 자동화하여 최신상태의 코드가 자동으로 배포되도록 하는 것을 Continuos Distribution, 지속적 배포라..

article thumbnail
[Linux] systemctl 명령 에러 System has not been booted with systemd as init system (PID 1).
🛠️TOOL/📄Linux 2023. 10. 21. 19:04

에러 원인 WSL을 사용하다보면, systemd 명령을 실행했을때 종종 systemd 환경이 아니라는 오류가 발생한다. 원인은 WSL은 루트 시스템 프로세스가 systemd가 아닌 init이기 때문이다. pstree 루트 시스템 프로세스는 pstree 명령을 통해 확인할 수 있다. pstree 명령어는 실행되고 있는 프로세스들간의 연결구조를 트리형식으로 보여준다. 최근 리눅스 진영은 init에서 systemd로 바뀌는 추세라고 하며, WSL은 아직 그것을 반영하지 못하고 있는 것이라고 한다.(잘 모름) 해결법 cd / cd etc sudo vim wsl.conf 우선 위 명령어로, WSL에서 init 시스템 프로세스를 systemd 체계로 바꿔주어야 한다. [boot] systemd=true 해당 파일에..

article thumbnail
[Java 기술 면접 대비] - 2. 제네릭 메서드(Generic Method)란?

제네릭 메서드(Generic Method)란? 자바(Java)에서 제네릭(Generic)은 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것을 의미한다. 객체의 타입을 컴파일 시점에 체크하기 때문에 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있다. 즉, 제네릭 메서드는 메서드의 선언 부에 적은 제네릭 타입으로 리턴 타입과 파라미터 타입이 모두 정해지는 메서드이다. 우선 제네릭에 대한 여러 예시를 보며 이해해보자. public class Student { static T name; } 위와 같이 작성할 경우, 제네릭을 사용할 수 없다. 왜냐면, static 변수는 Student 클래스가 인스턴스가 되기 이전에 메모리에 올라가는데, 이 때 name의 타입..

article thumbnail
[Java 기술 면접 대비] - 1. JDK vs JRE

자바의 실행 과정 자바를 실행하기 위한 머신 JVM 우선 JDK에 대해 알기 전에, 자바 코드가 컴파일되고 실행되는 과정을 먼저 알아보자. JAVA는 실행시키는 운영체제에 독립적이라는 장점을 가지고 있다. 그리고 JVM은, 이를 위해 필요한 머신이다. java의 경우 JVM,즉 컴퓨터가 이해할 수 있는 형태는 바이트 코드로 이루어진 .class 파일이다. 우리가 java로 작성한 코드는 .java 파일인데, 이를 java 컴파일러가 .java 파일을 .class 라는 자바 바이트 코드로 변환해 주는 것이다. 컴파일을 해주는 Java Compiler java compiler는 자바를 실행하기 위해 필수인 JDK를 설치할 때에, bin 하위의 javac.exe를 말한다. 즉, javac 명령을 통해 .jav..

article thumbnail
[Linux] - sudo apt update시 error: "Release file is not yet valid"
🛠️TOOL/📄Linux 2023. 10. 5. 01:44

window wsl2 환경에서 프로그래밍을 할 때, sudo apt-get update시 종종 볼수 있는 "release file is not valid yet" 이라는 에러가 있다. 예시) 이 때는 다음 명령어로 하드웨어 시계(RTC)값을 시스템 시계로 동기화하여 해결할 수 있다. sudo hwclock --hctosys

[BOJ] - 1013 : Contact
✏️PS 2023. 10. 1. 21:54

https://www.acmicpc.net/problem/1013 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 위 문제는 정규식에 관련된 문제인데, 분기를 나눠서 구현으로 풀다가 왠지 정규식과 관련된 헤더가 있을 것 같아서 찾아봤다. 역시나 regex 헤더를 사용하면 되는데, 사용법은 아래 코드를 참고하면 된다. 먼저 regex 변수를 선언하고, 사용하고 싶은 정규식을 입력해준다. 이후 regex_match 메서드를 통해 문자열이 해당 정규식을 만족하면 true, 아니면 false를 반환한다. ..