DigitalOcean 애플리케이션 플랫폼에 빛나는 애플리케이션 변경 사항 자동 배포

9732 단어 rstatsshinydockercicd
받는 사람: Peter Solymos
DigitalOcean 애플리케이션 플랫폼을 GitHub과 통합하여 번쩍이는 애플리케이션을 자동으로 배포합니다.
이전 기사에서는 Digital Ocean 애플리케이션 플랫폼을 소개하고 제어판이나 명령행deploy Shiny apps from existing Docker images을 사용하는 방법을 설명했습니다.
본고는 응용 프로그램 플랫폼을 GitHub와 어떻게 통합하고 지속적인 통합과 배치(CICD)를 구축하는지를 연구함으로써 응용 프로그램 플랫폼에 대한 토론을 계속하고자 한다.

선결 조건


이전에 이렇게 하지 않았으면 App Platform 로그인 페이지로 이동하여 DigitalOcean 계정을 등록하십시오.계정에 로그인하고 대시보드로 이동합니다.왼쪽 서랍에서 응용 프로그램을 클릭합니다.
리콜 계약에 액세스할 수 있는 권한을 부여해야 하기 때문에 analythium/app-platform-shiny 저장소에 사용됩니다.
다음은 재구매 협의의 내용입니다.
.
├── .do
│   ├── app.yaml
│   └── deploy.template.yaml
├── app
│   ├── global.R
│   ├── server.R
│   └── ui.R
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
└── renv.lock
.do 폴더는 템플릿 파일을 포함하고 README 파일의 단추에서 반짝이는 응용 프로그램 템플릿을 배치하려면 템플릿 파일이 필요합니다.이전에 도입된 app specificationapp.yaml는 어느 정도 간소화되었다.
name: app-platform-shiny
services:
- dockerfile_path: Dockerfile
  github:
    branch: main
    deploy_on_push: true
    repo: analythium/app-platform-shiny
  name: app-platform-shiny
app 폴더는 multiple files for the Shiny app를 포함합니다.Dockerfile 파일에 지정된 renv package to handle the dependencies를 사용합니다.
보시다시피 응용 프로그램 자체는 상대적으로 간단한 예시이며, 일부 범위 슬라이더를 가지고 있으며, 이것은 원본 코드로부터 구축할 필요가 없는 의존 관계입니다.그것은 또 하나의 파일 업로드 단추를 가지고 있다. 나는 업로드 기능을 사용하여 언제 큰 파일을 업로드해야 하는지 테스트한다.대용량 파일 업로드는 일반적으로 제한됩니다Shiny itself has a 5 Mb file size limit.

GitHub 통합


GitHub 통합을 설정합니다.제어판의 DigitalOcean 제어판으로 이동합니다.왼쪽 메뉴에서 '적용' 항목의 '새 응용 프로그램 시작' 을 누르십시오.

소스를 선택해야 하는 경우 GitHub 아이콘을 클릭합니다.

알림에 따라 개인 계정 또는 선택한 조직에 GitHub 애플리케이션을 설치합니다.필요한 경우 모든 저장소 또는 저장소만 선택 을 선택합니다.마지막으로 저장을 클릭합니다.

GitHub 저장소에서 배포


이제 응용 프로그램 제어판으로 돌아갑니다.드롭다운 메뉴에서 저장소를 선택하여 배치할 분기를 지정합니다.같은 메모리 라이브러리의 개발 버전과 생산 버전을 동시에 배치하려면 같은 리포로 여러 응용 프로그램을 만들 수 있지만, 다른 지점을 사용할 수 있습니다.
코드 변경 시 새 배포를 트리거하려면 자동 배포를 선택하고 다음을 클릭합니다.
renv.lock에서 추정되는 HTTP 포트 등의 응용 프로그램 설정을 보려면 다음과 같이 하십시오.

서비스 이름을 입력하고 데이터 영역을 선택한 다음 다음을 클릭합니다.

마지막 단계는 응용 프로그램의 성능과 상응하는 가격을 정의하는 것이다.여기서, 나는 '기본' 계획 아래의 최소 사이즈를 사용하여 매달 5달러를 사용한다.

몇 분 뒤에는 로그 항목을 구축하고 배치하는 것 외에 녹색 검사도 보아야 한다.애플리케이션의 종속성 수에 따라 이미지를 구축하는 데 시간이 좀 걸릴 수 있습니다.

HTTPS에서 사용할 수 있는 온라인 응용 프로그램을 제어판의 응용 프로그램 URL로 보려면 다음과 같이 하십시오.

사용자 지정 도메인 추가


제어판을 통해 사용자 정의 영역을 추가합니다.도메인 추가를 클릭합니다.

프롬프트에 따라 응용 프로그램 URL을 복사하려면 다음과 같이 하십시오.

DNS 공급자 페이지의 DNS 설정에 CNAME 레코드를 추가하여 도메인 또는 하위 도메인을 가리킵니다.

응용 프로그램 설정에 나열된 사용자 정의 도메인이 표시됩니다.

새 사용자 정의 영역 링크를 클릭하고 확인하십시오.레코드가 이름 서버를 통해 전파되지 않는 경우 잠시 기다려야 할 수도 있습니다.

업데이트 자동 배포


다음에, 우리는 빛나는 프로그램에 대해 약간의 변경을 하고git를 통해 이 프로그램이 신기하게 업데이트되는 것을 볼 것이다.네가 위조한 환매 협의에서 이렇게 해라.내가 한 작은 변경 사항은 프로그램 제목을 편집하는 것이다.변경 사항은 다음과 같습니다.

변경 사항을 제출하고 GitHub로 전송하면 웹 파이프를 터치합니다.그리고 새로운 배치는 응용 프로그램의 배치 기록에 열거될 것이다.

사용자 정의 URL에 액세스하여 배포된 새 버전을 보려면 다음과 같이 하십시오.

만약 응용 프로그램과 CNAME 기록이 누적된 위탁 관리 비용을 피하기 위해 더 이상 필요하지 않다면, 그것들을 삭제하는 것을 잊지 마십시오.Digital Ocean의 동적 응용 프로그램 위탁 관리는 무료가 아니다.

배포 전 테스트


이런 GitHub 통합의 잠재적인 문제는 itdoes not depend on passing tests before deployment이다.배포 전에 변경 사항을 테스트하려면 다음 절차를 따르십시오.
  • 발전 부문의 변혁 추진
  • GitHub 작업
  • 과 같은 개발 분기 실행을 위한 자동 테스트
  • 운영 분기를 보호 분기로 설정merging pull requests require passing tests합니다.
  • 결론


    종료 중인 Docker 이미지를 배치할 때, 이 이미지는 Docker Hub에서 응용 프로그램 플랫폼으로 끌어옵니다.이 경우 변경 불가능한 이미지가 밀려 당겨집니다.
    여기에 설명된 GitHub 통합은 여러 가지 방법을 사용합니다.변경 사항을 GitHub 저장소에 미리 정의된 분기로 밀어넣으면 Docker 이미지가 만들어집니다.이미지가 구축되어 DigitalOcean Container Registry에 저장됩니다.
    이 방법을 통해 모든git 전송 이벤트에 새로운 배치를 얻을 수 있습니다.이러한 자동 배포(CD)가 CI 섹션이 없는 CI(Continuity Integration and Development)로 간주될 수 있는 방법에 대해 논의할 수 있습니다.
    배치하기 전에 응용 프로그램을 테스트하는 데는 추가 절차가 필요합니다. 이것은git 작업 절차의 일부분입니다.완전한 CICD 경험을 얻으려면 GitHub 운영Dockerfilecommand-line utility에서 사용할 수 있습니다.사실은 이 노선이 좀 복잡하기 때문에 몇 가지 문제를 해결해야 한다는 것을 증명한다.따라서 후속 게시물에서 이에 대해 설명하겠습니다.

    한층 더 읽다

  • App Platform documentation
  • Deploy app from a monorepo
  • Troubleshoot your app
  • 좋은 웹페이지 즐겨찾기