GITLABにおける無セルフレームワークによるプレビュー展開
12395 ワード
あなたが使っているならばServerless Framework , それは既に組み込まれてプレビュー機能を内蔵してServerless CI . あなたは読むことができますA Guide to Preview Deployments with Serverless CI/CD を参照してください.
Serverless CI サポートGitHub and Bitbucket ボックスから、あなたはそれを管理することができますServerless Dashboard プロジェクトのCI/CD設定に進みます.
このポストでは、使用してプレビュー展開を実装する方法について説明しますGitLab CI/CD . セットアップは、この統合を達成する方法に関する簡単な例であるので、要件に応じて変更することがあります.私はあなたの基本的な理解を持っていると仮定しますGitLab's CI Jobs .
カスタムドメインマネージャープラグインを使用します
ドメイン名の種類には4つのターゲットがあります.
ドメインは、それらのステージに関するこれらの形式で作成されます.
ドメインターゲット
ステージ
ドメイン
ドメインターゲット
ステージ
ドメイン
ステージ
ドメイン
(
追加
今私たちは
私たちは
我々のマージ要求が閉じられるか、合併されたあと、我々は我々の仕事を呼びます
The
例として、
この小さなチュートリアルでは、GitLabのプレビュー展開についてのアイデアを提供します.より良い方法があるなら、知らせてください
Serverless CI サポートGitHub and Bitbucket ボックスから、あなたはそれを管理することができますServerless Dashboard プロジェクトのCI/CD設定に進みます.
このポストでは、使用してプレビュー展開を実装する方法について説明しますGitLab CI/CD . セットアップは、この統合を達成する方法に関する簡単な例であるので、要件に応じて変更することがあります.私はあなたの基本的な理解を持っていると仮定しますGitLab's CI Jobs .
無力。初期設定
カスタムドメインマネージャープラグインを使用します
serverless-domain-manager
プレビュードメインだけでなく、ステージングや生産ドメインを構築する.yarn add serverless-domain-manager
or 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'}
カスタムドメイン設定の追加
ドメイン名の種類には4つのターゲットがあります.
production
, staging
, preview
and local
. それぞれのプレビュー展開は別の段階になります.ドメインは、それらのステージに関するこれらの形式で作成されます.
ドメインターゲット
production
. ステージ
production
. ドメイン
production-api.myapp.org
.ドメインターゲット
staging
. ステージ
staging
. ドメイン
staging-api.myapp.org
ドメインターゲットpreview
. ステージ
preview-1
. ドメイン
preview-1-api.myapp.org
. (
1
あなたのマージ要求IDはGitLab's predefined variables )追加
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 setup
今私たちは
serverless.yml
準備ができて(関数のようなあなたのニーズのための残りの設定を完了したと仮定して)、私たちはgitlab ci/cdファイルを構築し始めることができます.私たちは
.gitlab-ci
ファイルを追加deploy
ステージ.マージ要求が作成されると、自動的にプレビュー展開を展開しますeu_preview_deployment
2つのメインコマンドでDOMAIN_TARGET_TYPE=preview serverless create_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
andDOMAIN_TARGET_TYPE=preview serverless deploy --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
ドメインターゲット型は、環境変数から取得できます.最初のドメインを作成し、2番目のアプリケーションを配備します.ここでは、あなたのステージに任意の名前を与えることができます.それは起動する必要はありませんpreview
. 我々のマージ要求が閉じられるか、合併されたあと、我々は我々の仕事を呼びます
stop_eu_preview_deployment
これはeu_preview_deployment
インenvironment.on_stop: stop_eu_preview_deployment
. 両方のジョブは同じ環境でなければなりません.The
stopping
ジョブは2つのコマンドを呼び出します.DOMAIN_TARGET_TYPE=preview serverless delete_domain --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
andDOMAIN_TARGET_TYPE=preview serverless remove --stage preview-${CI_MERGE_REQUEST_IID} --region eu-central-1
最初のカスタムドメインを削除し、2つ目のプレビュー展開を削除します.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
and 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