자체 호스팅 CI, 내 경험

Drone CI 및 Docker를 사용하여 내 CI/CD가 거실에서 매일 어떻게 실행되는지에 대한 빠른 피드백입니다. 🛋

그런데 왜?!



다른 많은 사람들과 마찬가지로 웹 개발자로서 저는 회사에서, 독립적으로, 심지어 개인 프로젝트에서도 지속적인 배포 및 통합을 자주 사용합니다. 먼저 설정하고 실행하는 데 시간이 걸릴 수 있습니다. 속도가 빠르다는 것은 강력하고 비용이 많이 드는 솔루션을 사용하고 있음을 의미합니다.

그래서 상황이 통제 불능 상태가 되는 것을 좋아하지 않기 때문에 새로운 것을 시도하고 싶었습니다. 개인 하드웨어에서 CI를 실행하는 것이었습니다. 이런 종류의 경험을 하기 위해 방금 새로운 Dell R240 서버를 구입했습니다.

설정 🔧



내 서버를 쉽게 유지 관리할 수 있는 가장 좋은 방법은 docker를 사용하는 것이었고, 아마도 꽤 큰 docker-compose 파일이었을 것입니다. 그래서 내가 실행하는 모든 새 서비스를 저장하고 버전을 지정할 수 있습니다.

내 CI 시스템을 호스팅할 하드웨어가 있지만 소프트웨어는 어떻습니까? 약간의 연구 끝에 아주 좋은Drone CI 오픈 소스 소프트웨어를 찾았습니다.



설명서 덕분에 CI를 실행하는 데 필요한 두 가지 서비스, 예를 들어 로그에 액세스할 수 있는 훌륭한 UI가 있는 웹 서비스와 구성한 단계를 실제로 실행하는 러너를 설치하기가 정말 쉬워졌습니다. docker-compose 파일의 약 20줄 !

하지만, 정말 효과가 있을까? 🤔



예! 🥳 웹 UI에 도착하면 Github 계정을 연결해야 하고 프로젝트가 나열되어야 하며 몇 번의 클릭으로 repo 설정이 완료됩니다! 이제 마지막 단계는 현재 프로젝트에 대한 CI를 구성하는 것입니다. yaml 파일로 수행되며 예를 들어 CircleCI에 익숙하다면 거의 동일합니다.

Docker의 Docker, 두통 보장! 🤯



과거에 Docker에서 Docker를 실행하거나 dind를 실행했던 기억이 있습니다. 하지만 이 경우에는 결국 Docker 소켓 포워딩 솔루션을 사용했습니다. 이는 CI 단계에서 일부 도커 작업이 있을 때마다 CI 자체 내에서 사용할 수 있도록 호스트 도커 소켓에 대한 액세스 권한을 부여한다는 것을 의미합니다. docker-compose 파일 내에서 다음 코드를 사용하여 이를 수행할 수 있습니다.

volumes:
      - /var/run/docker.sock:/var/run/docker.sock


예를 들어 Docker 이미지를 빌드하려는 경우 이 볼륨을 단계에 전달하면 Docker 기본 데몬을 사용하여 명령을 실행할 수 있습니다. 이를 사용하여 서버 자체에 프로젝트를 배포할 수도 있습니다. 대부분의 프로젝트가 집에서 호스팅되기 때문에 배포 단계에서 이것을 사용합니다! 🏠

그리고 오늘? ☀️



나는 내가 시작하는 거의 모든 새 프로젝트에 이 솔루션을 사용합니다!

예를 들어 개발 머신에서 주저하지 말고 시도해 보세요. 🙂

좋은 웹페이지 즐겨찾기