Universe 2020 ã§çºè¡¨ãããæ©è½ã®ä¸ã§ä¸çªæ¥½ãã¿ã ã£ãã®ã GitHub Actions ã® Environments ã§ãããããã¤å ãã¨ã«ç°å¢å¤æ°ã¨ Protection rule ãè¨å®åºæ¥ãããã«ãªãã¾ãã
Azure Pipelines ã§ã¯ Approvals and checks 㨠Environments ã¨ããåçã®æ©è½ãããã¾ããããã®ã¾ã¾ GitHub ã«ãã£ã¦ãã£ãã¨ããæãã§ããäºæ³éã便å©ã§ããã
Using environments for deployment - GitHub Docs
ããã¾ã§ Azure Pipelines ã使ã£ã¦ãã¦ããããã¤ã«ç¹åããæ©è½ãããã®ã¯ããªã便å©ã ã¨å®æãã¦ããã®ã§ãAzure Pipelines ãã GitHub Actions ã¸ã®ç§»è¡ã¯ãã®è¾ºããå®è£ ãããã¾ã§ã¯é£ããã¨æã£ã¦ãã¾ããã
ä¸éã試ãã¦ã¿ã¾ããããå®å ¨ã« Azure Pipelines ãã使ãåæãè¯ãã£ãã®ã§ãAzure Pipelines ã使ãçç±ã Azure AD ã§ãã°ã¤ã³ããæãã¨ããç¹ä»¥å¤ç¡ããªã£ãæãããã¾ãã
Environment ã使ãã
è¨å®ã« Environments ã¨ããé ç®ãå¢ãã¦ãã¾ããä»ã¯ Public ãªãã¸ããªã ãã§ãã使ããªãã®ã§ãPrivate ã®å ´åã¯ä¸æ¦è«¦ãã¾ãããã
Environment ã¯æåã«æ¸ããããã« Environment åä½ã§ã®ç°å¢å¤æ°ã¨ Protection rule ã®çµã¿åãããªã®ã§ãè¨å®å 容ã¯é常ã«åãããããã§ããã¨ããããããæãã®ååãä»ããã¨ããããå§ãã¾ãã
Azure Pipelines ã® Environment 㯠Kubernetes 㨠Virtual Machine ã¸ã®å¯¾å¿ã§ããããã¨è¨å®ãå¿ è¦ã§ããããGitHub ã® Environment ã§ã¯ç°å¢å¤æ°ã追å ããã ãã¨ããåãããããã§ãã
Azure App Service ã¸ã®ãããã¤ãè¡ãããã®ã§ãPublish Profile ã追å ãã¦ãã¾ãã
ã¡ãªã¿ã« Repository secrets 㨠Environment secrets ã¯åãååã§ç»é²ãåºæ¥ã¾ãããåºæ¬ã¯ Environment secrets ãåªå ãããã®ã§ä¸æ¸ããããããã§ããå®éã®åãã¨ãã¦ã¯äºæ³éããå®è¡æã«ã¯ããããã® Secrets ããã¼ã¸ãããã®ã§åãããããã§ãã
GitHub ã®ãµã¼ãã¹ã¯å¤§ä½åããäºæ³éããªã®ã§åãããããã§ããã
使ãã Environment 㯠Workflow ããåç §ããªãã¨æå³ããªãã®ã§ãç°å¢ã使ããå¾ã¯ Job ã®å®ç¾©ã«åç §ã追å ãã¾ããJob åä½ã§ 1 ã¤ã ã Environment ãåç §ã§ãã¾ãã
åç §ã追å ãã Job ã§ã¯ Environment secrets ãåç §ã§ããããã«ãªãã¾ããåãããããã§ããã
Environment åãæå®ããå¿ è¦ãããã®ã§ãã·ã³ãã«ãªååã«ãã¦ãããæ¹ãè¯ãã§ããURL ãä¸ç·ã«æå®ãã¦ããã¨å¾ã§ä¾¿å©ã«ä½¿ããããã«ãªãã¾ãã
Pull Request ã§ã¹ãã¼ã¸ã³ã°ã¸ãããã¤
æè¿ã¯ Pull Request ã使ããã¨èªåçã«ã¹ãã¼ã¸ã³ã°ç¨ã®ãµã¤ããä½ã£ã¦ããããµã¼ãã¹ãå¢ãã¦ãã¾ãããããã¾ãã«ã¹ã¿ãã¤ãºããä½å°ãç¡ãã®ã§ã·ã³ãã«ãªã¢ããªã±ã¼ã·ã§ã³ä»¥å¤ã§ã¯å®ç¾ãé£ããå°è±¡ã§ãã
Environments ã¯ç°å¢æ¯ã«èªè¨¼æ å ±ãæ¥ç¶å ãªã©ã®æ å ±ãå®ç¾©åºæ¥ãã®ã§ã䏿ãçµã¿åãããã° PR åä½ã§ã®ã¹ãã¼ã¸ã³ã°åããããã¤ãè¡ãã¾ããã¨ããããåºå®ã® App Service ã®ã¹ãããã¸ãããã¤ãã Workflow ãæ¸ãã¦è©¦ãã¾ããã
deploy: runs-on: ubuntu-latest environment: name: staging url: https://webapp-deploytest-1-staging.azurewebsites.net needs: build steps: - name: Download artifact uses: actions/download-artifact@v2 with: name: webapp - name: Deploy staging uses: azure/webapps-deploy@v2 with: app-name: webapp-deploytest-1 slot-name: staging publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} package: ./WebApplication1.zip
ãã®ä¾ã§ã¯ staging
ã¨ããååã§ Environment ã使ãã¦ãã¾ããWorkflow èªä½ã¯ Pull Request ããªã¬ã¼ã§åããã°ããã®ã§ç¹ã«èª¬æãè¦ããªãã§ãããã
App Service ã¯ãããã¤æã« Publish Profile ã Service Principal ãå¿ è¦ã«ãªãã¾ãããPublish Profile 㯠App Serivce åä½ã®èªè¨¼æ å ±ãªã®ã§ãEnvironment ã¨ã¯ç¸æ§ãé常ã«è¯ãã§ããService Principal ã使ãå ´åã¯ç°å¢æ¯ã«ä½æãã¦ãããããå¿ è¦ãªãªã½ã¼ã¹ã ãæä½åºæ¥ãããã« RBAC ã§æ¨©éãçµãã¾ãããã
Pull Request ã使ããã¨ä»¥ä¸ã®ããã« Workflow ãå®è¡ããã¦ããããã¤ã¾ã§å®äºãã¾ãã
ãã®æã« environment
ã§ url
ãè¨å®ãã¦ããã¨ã確èªç¨ã¨ãã¦ãªã³ã¯ã表示ãããããã«ãªãã¾ãã
å®è¡çµæã ãã§ã¯ãªããPull Request èªä½ã«ããããã¤çµæã表示ãããããã«ãªãã®ã§ãéçºä¸ãã¬ãã¥ã¼ã®éã« Pull Request ããç´æ¥ãããã¤ãããç°å¢ã«ã¢ã¯ã»ã¹åºæ¥ãããã«ãªãã¾ãã
ä»åã¯åºå®ã®ç°å¢ã ã£ãã®ã§ãã¾ãã¡ãªããã«æããªãããããã¾ããããå®è¡æã«ç°å¢ã使ãããããªå ´å*1㯠URL ãåçã«çæãããã¯ããªã®ã§ããã® URL ãã³ã¡ã³ããªã©ã§æ®ãããã«ãã¦ããã¨æãã¾ãã
ããããå ´åã«ã¯ Environment ã使ãã¨ãããæãã«ç¢ºèªç¨ã®ç°å¢ãã»ããã§ç®¡çã§ãã¾ãã
æ¬çªãããã¤ã§ã¯ã¬ãã¥ã¼ãå¿ é ã«
Universe ã§ãçºè¡¨ããã£ãã®ã¯ã¬ãã¥ã¼æ©è½ã§ãããAzure Pipelines ã«ã¯æããå®è£ ããã¦ãã¦ä¾¿å©ã«ä½¿ã£ã¦ããæ©è½ãªã®ã§ããããå®è£ ãããªã㨠GitHub Actions ã¸ã®ç§»è¡ã¯é£ããã¨æãã¦ãã¾ããã
Environment åä½ã§ã¦ã¼ã¶ã¼ããã¼ã ãã¬ãã¥ã¢ã¼ã¨ãã¦è¿½å åºæ¥ã¾ããè¨å®ã¯ã·ã³ãã«ã§ãã
Azure Pipelines ã«ã¯ãã£ã¨æ©è½ããã£ãã®ã§ããã® Protection rule ã¯ä»å¾è¿½å ãããæ°ããã¾ããAPI 飿ºã§ç¬èªã®ã«ã¼ã«ãå®ç¾©ãããããªæ©è½ãæ¥ãäºæã§ãã
ããã§æå®ãã Protection rule 㯠Environment ãåç §ãã¦ãã Job ãèµ°ãåã«è©ä¾¡ããã¾ãã
åã Environment ãåç §ãã¦ããã¨ãã¦ãã1 åæ¿èªããã°å ¨ã¦éããããªæåã«ã¯ãªãã¾ãããæ°ãã Job ãèµ°ãå ´åã¯é½åº¦æ¿èªãå¿ è¦ã«ãªãã¾ãã
ã¬ãã¥ã¼ã«ã¯ã³ã¡ã³ãã追å åºæ¥ã¾ãããçµµæåå ¥åã¯åºæ¥ãªãããã§ããããã®ä¾ã§ã¯ 1 ã¤ã® Job ãªã®ã§ 1 ã¤ã ãåºã¦ãã¾ãããè¤æ°ã® Job ã Environment ãåç §ãã¦ããå ´åã¯åå¥ã«æ¿èªåºæ¥ãããã«ãªãã¾ãã
æ¿èªããã°å¾ã¯ããã¾ã§éã Job ãå®è¡ããã¾ããä¸ã®æ¹ã«ã¬ãã¥ã¢ã¼ã®ãã°ã表示ãããããã«ãªã£ã¦ããã®ã§ãæ¿èªãã人ã¨å¯¾è±¡ã® Environmentãããã¦ã³ã¡ã³ããåå¥ã«ç¢ºèªã§ãã¾ãã
ã¶ã£ã¡ãã Azure Pipelines ã®åãæ©è½ããå§åçã«ä½¿ãããããããã«ã·ã³ãã«ã«ãªã£ã¦ãã¾ãã䏿ã Environment ã使ã£ã¦ç°å¢ãæ½è±¡ååºæ¥ã¦ããã®ã§ããããã¤å ã«ä¾åããªãä½ããæ´ã«è¯ãã§ãã
ãããã¤å±¥æ´ã確èª
Environment ã使ããã¨ãªãã¸ããªã®ãµã¤ããã¼ã« Deployments ã¨ããã«ãã´ãªã追å ããã¾ãã
鏿ãã㨠Environment æ¯ã®ãããã¤å±¥æ´ã確èªã§ãã¾ãããã®è¾ºã㯠Deployments API ã¨çµ±åããã¦ããããã®ããã§ãActions ã®å±¥æ´ãã確èªããããåãããããã§ãã
Environment ããããã¤ã®å±¥æ´ç®¡çã¨ãã¦ä½¿ãã ãã§ãè¯ãããã§ãã
ããã§ã environment
ã« url
ã追å ãã¦ããã¨ã確èªç¨ã®ãã¿ã³ã表示ãããã®ã§ãµã¯ãã¨ç¢ºèªåºæ¥ãããã«ãªã£ã¦ãã¾ãããããã¤ã¾ã§çµ±åããã¦ããã®ã¯ã¡ãªãããé常ã«å¤§ããã¨å®æãã¾ããã
*1:ä¾ãã° Azure Static Web Apps ã®ãããªãã®