GitLab에서 서버리스 프레임워크로 배포 미리 보기
12628 단어 devopsserverlesstutorialgitlab
Serverless CI은 GitHub 및 Bitbucket을 즉시 지원하며 프로젝트의 CI/CD 설정으로 이동하여 Serverless Dashboard에서 관리할 수 있습니다.
이 게시물에서는 GitLab CI/CD을 사용하여 미리 보기 배포를 구현하는 방법에 대해 읽게 됩니다. 요구 사항에 따라 설정이 변경될 수 있으므로 이 통합을 달성하는 방법에 관한 간단한 예일 뿐입니다. GitLab's CI Jobs 에 대한 기본적인 이해가 있다고 가정하겠습니다.
serverless.yml 초기 설정
사용자 지정 도메인 관리자 플러그인
serverless-domain-manager
을 사용하여 미리 보기 도메인과 스테이징 및 프로덕션 도메인을 구축할 것입니다.yarn add serverless-domain-manager
또는 npm i serverless-domain-manager
# serverless.yml
org: myorg
service: my-service
app: my-service
plugins:
- serverless-domain-manager
provider:
name: aws
stage: ${opt:stage, 'local'}
region: ${opt:region, 'eu-central-1'}
endpointType: REGIONAL
environment:
STAGE: ${sls:stage, 'local'}
사용자 지정 도메인 설정 추가
도메인 이름 유형에 대한 네 가지 대상이 있습니다.
production
, staging
, preview
및 local
. 각 미리 보기 배포는 다른 단계이며 서버리스 대시보드에서 다음과 같이 표시됩니다.도메인은 단계와 관련하여 다음 형식으로 생성됩니다.
도메인 대상:
production
.무대:
production
.도메인:
production-api.myapp.org
.도메인 대상:
staging
.스테이지
staging
.도메인:
staging-api.myapp.org
도메인 대상:
preview
.스테이지
preview-1
.도메인
preview-1-api.myapp.org
.(
1
는 GitLab's predefined variables에서 오는 병합 요청 ID입니다.)덧셈:
custom:
domains:
production: production-api.myapp.org
staging: staging-api.myapp.org
preview: "preview-${env:CI_MERGE_REQUEST_IID, ''}-api.myapp.org"
local: localhost
customDomain:
domainName: ${self:custom.domains.${env:DOMAIN_TARGET_TYPE, 'local'}}
basePath: ""
stage: ${sls:stage, 'local'}
createRoute53Record: true
다중 리전을 사용하려는 경우 다음 옵션을 사용하여 확장
customDomain
할 수 있습니다. customDomain:
# ...
endpointType: "regional"
certificateRegion: ${opt:region, 'eu-central-1'}
route53Params:
routingPolicy: latency
.gitlab-ci 설정
이제
serverless.yml
가 준비되었으므로(기능 등과 같은 요구 사항에 대한 나머지 설정을 완료했다고 가정) GitLab CI/CD 파일 빌드를 시작할 수 있습니다..gitlab-ci
파일을 생성하고 deploy
단계를 추가합니다. 병합 요청이 생성되면 두 가지 기본 명령을 사용하여 미리 보기 배포eu_preview_deployment
를 자동으로 배포합니다.DOMAIN_TARGET_TYPE=preview serverless create_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
그리고
DOMAIN_TARGET_TYPE=preview serverless deploy --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
보시다시피 도메인 대상 유형은 환경 변수에서 검색됩니다. 첫 번째는 도메인을 만들고 두 번째는 애플리케이션을 배포합니다. 여기에서 단계에 이름을 지정할 수 있습니다.
preview
로 시작할 필요는 없습니다.병합 요청이 닫히거나 병합된 후
stop_eu_preview_deployment
에서 eu_preview_deployment
가 참조하는 작업environment.on_stop: stop_eu_preview_deployment
을 호출합니다. 두 작업 모두 동일한 환경에 있어야 합니다.stopping
작업은 두 개의 명령을 호출합니다.DOMAIN_TARGET_TYPE=preview serverless delete_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
그리고
DOMAIN_TARGET_TYPE=preview serverless remove --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
첫 번째는 사용자 지정 도메인을 제거하고 두 번째는 미리 보기 배포를 제거합니다.
image: node:14-alpine
.install_serverless: &install-serverless
before_script:
- yarn global add serverless --prefix /usr/local
stages:
- deploy
eu_preview_deployment:
<<: *install-serverless
stage: deploy
script:
- DOMAIN_TARGET_TYPE=preview serverless create_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
- DOMAIN_TARGET_TYPE=preview serverless deploy --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
environment:
on_stop: stop_eu_preview_deployment
name: development
url: https://preview-${CI_MERGE_REQUEST_IID}-api.myapp.org
only:
- merge_requests
stop_eu_preview_deployment:
<<: *install-serverless
stage: deploy
variables:
GIT_STRATEGY: none
when: manual
script:
- DOMAIN_TARGET_TYPE=preview serverless delete_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
- DOMAIN_TARGET_TYPE=preview serverless remove --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
environment:
name: development
action: stop
only:
- merge_requests
그게 다입니다... 이제
preview
배포 설정이 있습니다.예를 들어
staging
및 production
배포 설정을 .gitlab-ci.yml
에 추가합니다.deploy_to_staging_eu:
<<: *install-serverless
only:
- staging
stage: deploy
script:
- DOMAIN_TARGET_TYPE=staging serverless create_domain --stage staging --region us-east-1
- DOMAIN_TARGET_TYPE=staging serverless deploy --stage staging --region us-east-1
environment:
name: development
url: https://staging-api.myapp.org
only:
- branches
- merge_requests
deploy_to_production_eu:
<<: *install-serverless
only:
- master
stage: deploy
script:
- DOMAIN_TARGET_TYPE=production serverless create_domain --stage production --region eu-central-1
- DOMAIN_TARGET_TYPE=production serverless deploy --stage production --region eu-central-1
environment:
name: production
url: https://production-api.myapp.org
필요에 따라 설정 규칙을 변경할 수 있습니다.
.gitlab-ci.yml
키워드 참조here에 대해 자세히 알아볼 수 있습니다. 원하는대로 단계와 모든 것을 변경할 수도 있습니다.이 작은 자습서가 GitLab의 미리 보기 배포에 대한 아이디어를 제공하기를 바랍니다. 더 나은 접근 방식이 있으면 알려주세요. :)
Reference
이 문제에 관하여(GitLab에서 서버리스 프레임워크로 배포 미리 보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/finnauto/preview-deployments-with-serverless-framework-on-gitlab-5496텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)