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

지속적인 배포는 조직이 짧은 주기와 빈번한 주기 내에 소프트웨어 변경을 생성하고 발표하는 능력을 가리킨다.
통증과 빈도의 관계 – https://www.martinfowler.com/bliki/FrequencyReducesDifficulty.html
지속적인 배치 배후의 생각은 제품 변경의 배치 빈도를 늘리면 이와 관련된 마찰을 줄일 수 있다는 것이다.반대로 배치는 종종 마지막 순간까지 무시되는 활동이다. 소프트웨어 엔지니어가 일하는 고유한 부분이 아니라 필요한 사악함으로 여겨진다.그러나 개발 생명주기에 가능한 한 빨리 배치를 왼쪽으로 옮기면 문제, 의존 관계와 의외의 제약이 발생하는 데 도움이 될 것이다.
예를 들어 지속적인 배치는 어떤 변경이 문제를 초래했는지 이해하기 쉽고 복구하기 쉽다.버전 제어 시스템 기록에 있는 수백 개의 제출 메시지를 스캔해야만 이 문제의 변경 사항을 찾을 수 있다고 상상해 보세요.
자동화는 연속적인 배치를 실현하는 관건이다.

프로젝트


본고에서 우리는 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:
  • 용기가 루트 권한으로 실행되지 않음
  • 수신할 포트는 Heroku에서 컨테이너로 전송되며 환경 변수
  • 에서 사용해야 합니다.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_imagerelease


    Buildah 건물 build\u 이미지


    이 작업은 Docker 이미지를 만드는 방법을 지정합니다.만약 네가 자세히 관찰한다면, 너는 내가 특별히 Docker를 사용하지 않고 minor configuration 라는 것을 발견할 수 있을 것이다.Buildah는 OCI에 맞는 컨테이너 구축 도구로 일부 를 사용하여 Docker 이미지를 생성할 수 있습니다


    풀어주다


    이 작업은 당신의 Heroku 응용 프로그램으로 미루어 실제 발표를 실행합니다


    추가 구성


    파이프를 시도하기 전에 HEROKU_API_KEY 파이프 정의에서 사용할 수 있도록 heroku cli를 설정하십시오


    GitLab 파이프 변수 설정


    GitLab으로 전송


    현재 우리는 이미 모든 것을 설치했고, 코드를 배치 파이프로 보낼 준비를 하고 있습니다


    GitLab 파이프가 실행 중


    GitLab이 성공적으로 수행한 구축 절차를 살펴보겠습니다


    GitLab이 Heroku 레지스트리로 전송


    첫 번째 줄에서 buildah 이미지를 구축합니다.그것의 작업 원리는 매우 비슷하다 docker. 나는 --iidfile 를 사용하여 이미지 ID를 파일로 내보내고 후속 호출에서 명령줄에서 이 파일을 읽는다


    두 번째 줄은 Heroku 등록표로 보내는 것뿐입니다.실행--creds=_:$(heroku auth:token)을 통해 로그인하는 것이 얼마나 쉬운지 주의하십시오. 이것은 buildah Heroku가 제공한 영패 로그인 등록표를 사용합니다


    마지막으로, 배포 작업은 매우 간단합니다.


    $ heroku container:release -a cd-alediaferia web
    

    결론


    내 응용 프로그램이 마침내 배치되었는데, 내가 master까지 밀어붙인 후에 모든 것이 자동으로 발생했다.이것은 정말 훌륭하다. 왜냐하면 나는 지금 무통의 방식으로 끊임없이 나의 변경을 생산에 맡길 수 있기 때문이다


    This post
    내가 성공적으로 배치한 응용 프로그램


    나는 네가 이 게시물을 좋아하길 바란다.DevOps와 소프트웨어 공학 실천에 대한 최신 정보를 알고 싶으시면 댓글로 알려주시고




    Ale's main thread에 먼저 나타난다

    좋은 웹페이지 즐겨찾기