From f4e2d47bdd6139344353a4e5b7bb8af4f369c48b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B9=AF=E6=9C=AC=20=E9=96=8B?= Date: Mon, 6 Nov 2023 08:44:24 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20553:=20Staging=E3=83=91=E3=82=A4?= =?UTF-8?q?=E3=83=97=E3=83=A9=E3=82=A4=E3=83=B3=E3=82=92=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E3=81=99=E3=82=8B=EF=BC=88=E3=83=87=E3=83=97=E3=83=AD=E3=82=A4?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task2843: Stagingパイプラインを作成する(デプロイ)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2843) - StagingビルドだけしていたPipelineにデプロイ処理を追加 - adminによるmigrationが反映されていなかったので反映 ## レビューポイント - 情報共有 ## 動作確認状況 - なし --- azure-pipelines-production.yml | 19 ++++--- azure-pipelines-staging.yml | 96 +++++++++++++++++++++++++++++++--- 2 files changed, 98 insertions(+), 17 deletions(-) diff --git a/azure-pipelines-production.yml b/azure-pipelines-production.yml index e34e28f..ff18972 100644 --- a/azure-pipelines-production.yml +++ b/azure-pipelines-production.yml @@ -42,7 +42,6 @@ jobs: resourceGroupName: 'odms-prod-rg' slotName: 'staging' containers: 'crodmsregistrymaintenance.azurecr.io/odmscloud/staging/dictation:$(Build.SourceVersion)' - # TODO: stagingパイプライン実装時、staging用のイメージに変更する - job: frontend_deploy dependsOn: backend_deploy condition: succeeded('backend_deploy') @@ -134,12 +133,12 @@ jobs: inputs: script: >2 # DB接続情報書き換え - sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml - sed -i -e "s/DB_PASS/$(db-pass)/g" ./dictation_server/db/dbconfig.yml - sed -i -e "s/DB_USERNAME/$(db-user)/g" ./dictation_server/db/dbconfig.yml - sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml - sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml - sql-migrate --version - cat ./dictation_server/db/dbconfig.yml - # migration実行 - sql-migrate up -config=./dictation_server/db/dbconfig.yml -env=ci \ No newline at end of file + sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_PASS/$(admin-db-pass)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_USERNAME/$(admin-db-user)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml + sql-migrate --version + cat ./dictation_server/db/dbconfig.yml + # migration実行 + sql-migrate up -config=./dictation_server/db/dbconfig.yml -env=ci \ No newline at end of file diff --git a/azure-pipelines-staging.yml b/azure-pipelines-staging.yml index a0e46a5..128a441 100644 --- a/azure-pipelines-staging.yml +++ b/azure-pipelines-staging.yml @@ -198,29 +198,93 @@ jobs: condition: succeeded('frontend_build_production') displayName: Backend Deploy pool: - name: odms-deploy-pipeline + vmImage: ubuntu-latest steps: - checkout: self clean: true fetchDepth: 1 - # TODO: Productionと同様にデプロイを行う + - task: AzureWebAppContainer@1 + inputs: + azureSubscription: 'omds-service-connection-stg' + appName: 'app-odms-dictation-stg' + deployToSlotOrASE: true + resourceGroupName: 'stg-application-rg' + slotName: 'staging' + containers: 'crodmsregistrymaintenance.azurecr.io/odmscloud/staging/dictation:$(Build.SourceVersion)' - job: frontend_deploy dependsOn: backend_deploy condition: succeeded('backend_deploy') displayName: Deploy Frontend Files variables: storageAccountName: saomdspipeline - containerName: staging + environment: staging + pool: + vmImage: ubuntu-latest + steps: + - checkout: self + clean: true + fetchDepth: 1 + - task: AzureCLI@2 + inputs: + azureSubscription: 'omds-service-connection-stg' + scriptType: 'bash' + scriptLocation: 'inlineScript' + inlineScript: | + az storage blob download \ + --auth-mode login \ + --account-name $(storageAccountName) \ + --container-name $(environment) \ + --name $(Build.SourceVersion).zip \ + --file $(Build.SourcesDirectory)/$(Build.SourceVersion).zip + - task: Bash@3 + displayName: Bash Script + inputs: + targetType: inline + script: unzip $(Build.SourcesDirectory)/$(Build.SourceVersion).zip -d $(Build.SourcesDirectory)/$(Build.SourceVersion) + - task: AzureStaticWebApp@0 + displayName: 'Static Web App: ' + inputs: + workingDirectory: '$(Build.SourcesDirectory)' + app_location: '/$(Build.SourceVersion)' + config_file_location: /dictation_client + skip_app_build: true + skip_api_build: true + is_static_export: false + verbose: false + azure_static_web_apps_api_token: $(STATIC_DICTATION_DEPLOYMENT_TOKEN) +- job: smoke_test + dependsOn: frontend_deploy + condition: succeeded('frontend_deploy') + displayName: 'smoke test' pool: name: odms-deploy-pipeline steps: - checkout: self clean: true fetchDepth: 1 - # TODO: Productionと同様にデプロイを行う + # スモークテスト用にjobを確保 +- job: swap_slot + dependsOn: smoke_test + condition: succeeded('smoke_test') + displayName: 'Swap Staging and Production' + pool: + name: odms-deploy-pipeline + steps: + - checkout: self + clean: true + fetchDepth: 1 + - task: AzureAppServiceManage@0 + displayName: 'Azure App Service Manage: app-odms-dictation-stg' + inputs: + azureSubscription: 'omds-service-connection-stg' + action: 'Swap Slots' + WebAppName: 'app-odms-dictation-stg' + ResourceGroupName: 'stg-application-rg' + SourceSlot: 'staging' + SwapWithProduction: true - job: migration - dependsOn: frontend_deploy - condition: succeeded('frontend_deploy') + dependsOn: swap_slot + condition: succeeded('swap_slot') displayName: DB migration pool: name: odms-deploy-pipeline @@ -228,4 +292,22 @@ jobs: - checkout: self clean: true fetchDepth: 1 - # TODO: Productionと同様にマイグレーションを行う \ No newline at end of file + - task: AzureKeyVault@2 + displayName: 'Azure Key Vault: kv-odms-secret-prod' + inputs: + ConnectedServiceName: 'omds-service-connection-prod' + KeyVaultName: kv-odms-secret-prod + - task: CmdLine@2 + displayName: migration + inputs: + script: >2 + # DB接続情報書き換え + sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_PASS/$(admin-db-pass)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_USERNAME/$(admin-db-user)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml + sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml + sql-migrate --version + cat ./dictation_server/db/dbconfig.yml + # migration実行 + sql-migrate up -config=./dictation_server/db/dbconfig.yml -env=ci \ No newline at end of file