# woodpecker VS Other CI System
Woodpecker은 매우 간단한 UI를 가지고 있습니다. 정말 쉽게 진행상황을 빌드하고 보여줍니다.
Build pipeline은 도커 기반으로 하여 거의 모든 종류의 소프트웨어나 도구를 로컬에서 테스트할 수 있는 장점이 있습니다. 또한 AWS CLI 이미지를 사용해 모든 API를 사용할 수 있습니다.
그리고 ram 소비 공간 또한 Jenkins 보다 훨씬 작습니다.
중요한 이점을 정리해보자면 다음과 같습니다.
1. Open-Source 입니다. 언제든지 빌드 테스트를 비용 걱정없이 할 수 있습니다
2. 맞춤형 빌드 하드웨어 입니다. 필요에 따라 파이프라인을 구축할 하드웨어를 선택할 수 있습
니다. 필요한 만큼 빌드 에이전트를 실행하고 빌드를 병렬화할 수 있습니다.
3. 자체 호스팅 되기 떄문에 완전한 자율성과 호환성을 갖추고 있습니다. Github와 조금 다른데 외
부 서비스와 절대 공유되지 않는 코드 베이스를 갖추고 있습니다.
# VPS 서버에 Woodpecker 설치하기
Woodpecker CI를 호스트 하려면 SSH 액세스 및 공용 IP가 있는 VPS를 사용해야 합니다. 빌드 서버를 프로비저닝 하기 위한 필요한 모든 소프트웨어를 빠르게 설정 가능하고 모든 소프트웨어로 서버 상태를 빠르게 복구할 수 있는 기능을 제공하는 Docker를 사용합니다.
AWS EC2는 t2.micro 인스턴스를 사용합니다. AWS EC2 말고 다른 인스턴스를 사용해도 괜찮습니다.
1. AWS 접속해서 본인의 Region을 선택합니다. 저는 ap-northeast2를 사용했습니다.
2. EC2 -> 인스턴스 시작을 클릭
3. 퀵 스타트에서 Ubuntu를 선택
4. 인스턴스 유형은 t2.micro 선택 후 key pair 단계에서 새로운 키 페어를 생성해 줍니다
5. 키 페어 생성 버튼을 눌러 줍니다
저는 putty를 사용하여 연결 할 것이기 때문에 ppk키로 발급 받았습니다.
6. HTTPS, HTTP 트래픽 허용도 눌러줍니다.
인스턴스 시작을 눌러 인스턴스를 시작해 줍니다.
7. Putty 연결을 위해 putty configuration
SSH – AUTH – Credential 로들어가 발급받은 ppk키를 넣어줍니다.
로그인 id는 ubuntu 입니다. (별도의 설정을 했으면 설정한 id를 사용해줍니다.)
1. 편집기에서 nano.env를 열어 변수를 채워넣어줍니다
** 두번째 WOODPECKER_LETS_ENCRYPT 부분은 HTTPS를 사용할 수 있으면 true 그렇지 못한다면 false로 지정해주세요.
** 세번째 ORGS는 비워 주셔야됩니다.
2. WOODPECKER_GITHUB_CLIENT_ID 및 WOODPECKER_GITHUB_CLIENT_SECRET을 얻으려면 GITHUB APPLICATION을 만들어야 됩니다. https://github.com/settings/applications/new
3. URL 로 이동해서 새 애플리케이션 등록 클릭
4. Drone이 호스팅 될 도메인으로 홈페이지 url을 설정합니다. 도메인이 있으면 본인의 도메인으로,aws공개도메인으로사용하는경우ec2-13-125-247-75.ap-northeast-2.compute.amazonaws.com 다음과 같은 주소 형태입니다
5. Callback URL은 ec2-13-125-247-75.ap-northeast-2.compute.amazonaws.com/authorize 과 같은 형태로 설정해주세요
# Docker 설치
sudo apt update -y && sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker-compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
# Woodpecker CI Docker compose 템플릿 복제
git clone https://github.com/devforth/woodpecker-compose-template.git
cd woodpecker-compose-template/
cp .env.sample .env
1. 편집기에서 nano.env를 열어 변수를 채워넣어줍니다
** 두번째 WOODPECKER_LETS_ENCRYPT 부분은 HTTPS를 사용할 수 있으면 true 그렇지 못한다면 false로 지정해주세요.
** 세번째 ORGS는 비워 주셔야됩니다.
2. WOODPECKER_GITHUB_CLIENT_ID 및 WOODPECKER_GITHUB_CLIENT_SECRET을 얻으려면 GITHUB APPLICATION을 만들어야 됩니다. https://github.com/settings/applications/new
3. URL 로 이동해서 새 애플리케이션 등록 클릭
4. Drone이 호스팅 될 도메인으로 홈페이지 url을 설정합니다. 도메인이 있으면 본인의 도메인으로,aws공개도메인으로사용하는경우ec2-13-125-247-75.ap-northeast-2.compute.amazonaws.com 다음과 같은 주소 형태입니다
5. Callback URL은 ec2-13-125-247-75.ap-northeast-2.compute.amazonaws.com/authorize 과 같은 형태로 설정해주세요
6. 다음과 같은 client 키 발급 및 시크릿 생성하여 .env 파일에 복사해줍니다
7. 이제 docker compose-up을 실행시킵니다.
완료되면 본인의 주소로 woodpeckr의 첫모습(?)을 볼 수 있습니다.
# Woodpecker CI/CD 프로젝트 구성
간단하게 echo 를 수행하는 하나의 shell script로 구성된 프로젝트를 빌드해보겠습니다.
Woodpecker로 이동하여 저장소 추가를 클릭 후 저장소를 enable을 클릭하여 저장소를 활성화 시켜보세요.
톱니 바퀴를 누릅니다.
Save Setting을 해서 repo setting을 완료해줍니다.
다음으로 repo에 다음과 같은 내용으로 .woodpecker.yaml을 만듭니다.
https://woodpecker-ci.org/docs/usage/pipeline-syntax
woodpecker document를 참조하셔도 좋습니다.
https://github.com/MachDn/woodpecker-cicd/blob/master/.woodpecker.yml
저는 다음의 링크에 있는 소스 코드와 같이 작성해줬습니다.
다음의 파이프라인은 mysql 서비스 컨테이너를 실행합니다, 빌드 단계에서는 mysql 이미지의 컨테이너를 사용하여 mysql 서비스에 대한 연결을 테스트하고 연결이 설정이 될 때 까지 시도하다가 종료되는 파이프라인입니다.
# 소스코드 참조
https://github.com/MachDn/woodpecker-cicd
CICD 도구인 WOODPECKER를 사용해서 쉽게 애플리케이션을 Production 환경에 쉽고 간편하고 빠르게 구축 할 수 있습니다. 진행상황을 부분별로 나누어 손쉽게 확인 및 관리 할 수 있는 장점이 있습니다.자체 호스팅 되는 이점으로 데이터 취약점 부분을 생각할떄도 안전하고 개발 프로세스를 간소화하고 생산성을 높이는 도구가 될 것 같습니다.
'프로젝트 (Project)' 카테고리의 다른 글
[CI/CD] SSH into my VM - Using git action & docker-compose 시연 영상 (1) | 2023.05.01 |
---|---|
[CI/CD] SSH into my VM - Using git action & docker-compose (0) | 2023.05.01 |
[네이버쇼핑] 전동킥보드DB 만들기 (크롤링, 텍스트 마이닝) (0) | 2022.11.23 |
BMI 지수를 간단하게 도출해보는 페이지 만들어보기 (with java script) (0) | 2022.10.23 |
SQLD (SQL개발자) 자격시험 도전! (4) | 2022.10.07 |
댓글