GitLab, Docker 및 Heroku를 사용하여 연속 배포

지속적인 배치 배후의 생각은 제품 변경의 배치 빈도를 늘리면 이와 관련된 마찰을 줄일 수 있다는 것이다.반대로 배치는 종종 마지막 순간까지 무시되는 활동이다. 소프트웨어 엔지니어가 일하는 고유한 부분이 아니라 필요한 사악함으로 여겨진다.그러나 개발 생명주기에 가능한 한 빨리 배치를 왼쪽으로 옮기면 문제, 의존 관계와 의외의 제약이 발생하는 데 도움이 될 것이다.
예를 들어 지속적인 배치는 어떤 변경이 문제를 초래했는지 이해하기 쉽고 복구하기 쉽다.버전 제어 시스템 기록에 있는 수백 개의 제출 메시지를 스캔해야만 이 문제의 변경 사항을 찾을 수 있다고 상상해 보세요.
자동화는 연속적인 배치를 실현하는 관건이다.
프로젝트
본고에서 우리는 GitLab Pipeline, Heroku, Docker, Create React App 등 도구를 어떻게 이용하여 간단한 연속 배치 파이프를 실현하는지 탐색할 것이다.
간단한 Hello World 응용 프로그램을 만드는 것부터 시작하겠습니다.본문에서 나는 사용 :
$ npx create-react-app continuous-deployment
$ cd continuous-deployment
$ npm start
이제 Heroku에 배치할 수 있도록 Docker 이미지를 구축하는 프로그램이 실행되고 있습니다.Dockerfile 파일 컨테이너 이미지
우리는 간단한 two things to keep in mind when building images for Heroku 을 작성하여 우리의 응용 프로그램을 구축할 것이다.
FROM node:10.17-alpine
COPY . .
RUN sh -c 'yarn global add serve && yarn && yarn build'
CMD serve -l $PORT -s build
먼저 http://localhost:4444:Dockerfile
정의에서 알 수 있듯이 우리는 PORT
환경 변수를 전달함으로써 응용 프로그램을 시작합니다.우리는 지금 로컬에서 이미지를 테스트할 수 있다.$ docker build . -t continuous-deployment:latest
$ docker run -e PORT=4444 -p4444:4444
-e PORT=4444
우리가 탐지할 포트를 지정합니다.현재
을 통해 응용 프로그램을 시험적으로 사용할 수 있습니다.또한 Dockerfile의 끝에 루트가 아닌 사용자에게 모든 것이 정상적인지 확인하기 위해
myuser
사용자를 추가했습니다.cdalediaferia회사 Heroku에 배포
연속적인 배치 파이프라인을 구축하기 전에 수동으로 배치하여 우리의 이미지가 양호함을 확보합시다.Heroku에 새 응용 프로그램을 만들고 이름을 지정합니다.제 경우

이제 로그인한 후 Heroku 등록표로 그림을 표시합니다.
$ heroku container:login
$ docker tag <image> registry.heroku.com/<app-name>/web
$ docker push registry.heroku.com/<app-name>/web
그리고 바로 Heroku에게 발표:$ heroku container:release -a web
이제 Heroku에 프로그램을 설치하고 실행하는 데 성공했을 것입니다.저장소 GitLab 파이프
이 섹션에서는 GitLab에 파이핑 섹션을 구성하여 애플리케이션을 지속적으로 배포할 수 있도록 합니다.다음은 내 를 위한
.gitlab-ci.yml
파일입니다.위의 코드 세션에서 우리는 두 가지 작업을 정의했다. build_image
와release
Buildah 건물 build\u 이미지
이 작업은 Docker 이미지를 만드는 방법을 지정합니다.만약 네가 자세히 관찰한다면, 너는 내가 특별히 Docker를 사용하지 않고 minor configuration 라는 것을 발견할 수 있을 것이다.Buildah
는 OCI에 맞는 컨테이너 구축 도구로 일부
를 사용하여 Docker 이미지를 생성할 수 있습니다
풀어주다
이 작업은 당신의 Heroku 응용 프로그램으로 미루어 실제 발표를 실행합니다
추가 구성
파이프를 시도하기 전에 HEROKU_API_KEY
파이프 정의에서 사용할 수 있도록 heroku
cli를 설정하십시오
GitLab으로 전송
현재 우리는 이미 모든 것을 설치했고, 코드를 배치 파이프로 보낼 준비를 하고 있습니다

GitLab이 성공적으로 수행한 구축 절차를 살펴보겠습니다
첫 번째 줄에서 buildah
이미지를 구축합니다.그것의 작업 원리는 매우 비슷하다 docker
. 나는 --iidfile
를 사용하여 이미지 ID를 파일로 내보내고 후속 호출에서 명령줄에서 이 파일을 읽는다
두 번째 줄은 Heroku 등록표로 보내는 것뿐입니다.실행--creds=_:$(heroku auth:token)
을 통해 로그인하는 것이 얼마나 쉬운지 주의하십시오. 이것은 buildah
Heroku가 제공한 영패 로그인 등록표를 사용합니다
마지막으로, 배포 작업은 매우 간단합니다.
$ heroku container:release -a cd-alediaferia web
결론
내 응용 프로그램이 마침내 배치되었는데, 내가 master
까지 밀어붙인 후에 모든 것이 자동으로 발생했다.이것은 정말 훌륭하다. 왜냐하면 나는 지금 무통의 방식으로 끊임없이 나의 변경을 생산에 맡길 수 있기 때문이다
나는 네가 이 게시물을 좋아하길 바란다.DevOps와 소프트웨어 공학 실천에 대한 최신 정보를 알고 싶으시면 댓글로 알려주시고
Ale's main thread에 먼저 나타난다
Reference
이 문제에 관하여(GitLab, Docker 및 Heroku를 사용하여 연속 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alediaferia/continuous-deployment-with-gitlab-docker-and-heroku-324j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)