ã¯ããã« 1ããç°¡åãªAndroidã¢ããªãä½æããããã«å¯¾ããE2Eãã¹ããAppiumã§èªååãCIç°å¢ã§å®è¡ã§ããããã«ããæã¾ã§ããã£ã¦ã¿ãã®ã§ãã®åå¿é²ãæ®ãã¦ããã â»æ¬è¨äºã¯webdriverioãç¨ãã¦ããããããã¦æå°ã§æ§ç¯ãã¦ããã®ã§@wdio/cliã¯å©ç¨ãã¦ããªãã æ§ç¯ããã¢ããªã»e2eèªåãã¹ãã®ã³ã¼ãã»CIãã¤ãã©ã¤ã³ã®ã³ã¼ãã¯ä»¥ä¸ã®GitHubã«ããã å 容 ã»ã¯ã·ã§ã³ã¯å¤§ãã3ã¤ã§ã ã¢ããªã®å®è£ ã«ã¤ãã¦ï¼Androidã¢ããªãä½æããï¼ e2eãã¹ãèªååã®ã½ã¼ã¹ã³ã¼ãã®å®è£ ã«ã¤ãã¦ï¼Appiumã«ããE2Eãã¹ãï¼ CIä¸ã§ã®èªåãã¹ãå®è¡ã«ã¤ãã¦ï¼CIï¼ ã«åããã¦ããã Androidã¢ããªãä½æãã ã¢ããªã®å®è£ Androidã¢ããªã®developeråãã®ãµã¤ãã«ããå ¬å¼ãã¥ã¼ããªã¢ã«ãã¹ããããã¤ã¹ãããã§ä¸å¯§ï¼æ¥æ¬èªåå¹ã»è§£èª¬ãããã®ã§ã
CircleCIããæä¾ããã¦ããAndroidã®Dockerã¤ã¡ã¼ã¸ã使ç¨ãã¦ããå ´åã使ãããbuildToolsVersionã®ä¸è¦§ãdockerfilesã«æ¸ããã¦ããã¿ããã§ãã ä¾ãã° api-30ã使ãå ´åãð RUN sdkmanager \ "build-tools;27.0.0" \ "build-tools;27.0.1" \ "build-tools;27.0.2" \ "build-tools;27.0.3" \ # 28.0.0 is failing to download from Google for some reason #"build-tools;28.0.0" \ "build-tools;28.0.1" \ "build-tools;28.0.2" \ "build-tools;28.0.3" \ "build-tools;29.0.0" \ "
ã¯ããã« è¨äºå 容 ç§ã¯ç¾å¨ãããã¯ã¨ã³ãã¨ã³ã¸ãã¢ãç®æãã転è·æ´»åä¸ã§ãã ä»åã¯CircleCIå°å ¥æãbundle installãå®è¡ãããªãã¨ã©ã¼ãçºçããã®ã§ããã®è§£æ±ºæ¹æ³ã«ã¤ãã¦å·çãã¾ãã éçºç°å¢ Ruby 2.7.2 Rails 6.1.4 Docker 20.10.6 MySQL 5.7.32 bundler 2.2.23 CircleCI 2.1 CircleCIã«ããèªååé ç® RuboCop RSpec .circleci/config.yml version: 2.1 executors: default_container: docker: - image: circleci/ruby:2.7.2-node environment: RAILS_ENV: test BUNDLE_JOBS: 4 BUNDLE_RETRY: 3 BUNDLE_PATH: ve
Runtrip社ã§è¤(å¯)æ¥ï¼ä»¥å¾ã¯è¤æ¥ã§çµ±ä¸ï¼ãå§ãã¦ãæ©ããã®ã§2å¹´åãçµã¨ãã¨ãã¦ããã¾ãã ããã§ããã®è¨äºã§ã¯è¤æ¥ã¨ããæ¥åå½¢æ ã§ã©ããªãã¨ããã¦ããã®ããåå¿é²çã«æ¯ãè¿ããã¨æãã¾ãã ãã®ããããã®è¨äºã¯ä¸è¨ã®ãããªæ¹ã«ãå½¹ã«ç«ã¦ãã°å¹¸ãã§ãmm ã»è¤æ¥ã¨ãæµè¡ã£ã¦ãï¼ã¿ããã ãã©ãä¸ã®ä¸ã§ã¯ã©ããªãã¨ãè¤æ¥ã§ãã£ã¦ãã ãï¼ï¼ç¹ã«éçºï¼ ã»Runtripã£ã¦è¤æ¥ã¨ãã§é¢ããããã ï¼ã§ãå®éã¯ã©ããªãã¨ãã£ã¦ãã®ï¼ï¼ç¹ã«éçºï¼ ï¼ãã¡ãããè¤æ¥ã«ã¯è²ã ãªå½¢ãããã®ã§ãããã¾ã§1ã¤ã®äºä¾ã¨ãã¦^^ï¼ èæ¯Runtripã§è¤æ¥ãå§ãããã£ããã¯ä¸è¨ã®è¨äºã«ã¾ã¨ã¾ã£ã¦ããã¾ãã®ã§ããèå³ããæ¹ã¯æ¯émm ãã®è¤æ¥ãå§ããä¸ã§ãèªåãèãããã¨ããã¤Runtrip社ã¨æå¾ å¤åãããããã¨çã«é¢ãã¦ã¯ ãã¡ãã®è¨äº ã«è¨è¼ãã¦ããã¾ãã®ã§ããèå³ããæ¹ã¯æ¯éPart2ã è¤æ¥ã®ã¤ãRu
ããã«ã¡ã¯ãããã¯ã¨ã³ãã°ã«ã¼ãã®å¨æ°¸ã¨ç³ãã¾ãã å¼ç¤¾ã®ã¿ã¯ã·ã¼ã¢ããªGO ã«ã¯GAE Standard 1st Go1.11ã使ç¨ãã¦ããAPIãµã¼ãã¼ãããããã®ãµã¼ãã¼ã®2nd Go1.12以ä¸ã¸ã®ç§»è¡ãè¨ç»ãã¦ãã¾ãã ä»ãµã¤ãã§ãGAE 2ndã¸ã®ç§»è¡è¨äºãå¢ãã¦ãã¾ããããå®éã«åãçµãã§ã¿ãã¨æ°ãã«å¾ãããç¥è¦ãããã¾ããã®ã§å ±æãããã¨æãã¾ãã 移è¡è¨ç»1stã®Go1.11ã¯1stç¨ã®appengineããã±ã¼ã¸ã¨2nd対å¿ã®ããã±ã¼ã¸ãä½µç¨ã§ãããããå°ããã¤ç½®ãæãã¦ãããã¨ãã§ãã¾ããã¿ã¤ãã«ã 移è¡æºå ã¨ãªã£ã¦ããã®ã¯ãããçç±ã§ãã ç¾å¨ã¯ä¸é¨ã®API endpointã ã移è¡ãã¦ãããæ®ãã®endpointãåä½ç¢ºèªãã¤ã¤ç§»è¡ãã¦ããäºå®ã§ãã urlfetchã®ç½®ãæãnet/httpã®Clientã«ç½®ãæããã ãã§ãããããã©ã«ãã®timeoutãè¨å®
ã¹ãã¼ããã£ã³ããã¨ã³ã¸ãã¢ã®å ¥å±±ã§ãã ååã®ããã°ã§ãå¼ç¤¾ãããã¯ãã®ã¤ã³ãã©ãEC2åºç¤ããECS/Fargateåºç¤ã¸ç§»è¡ãã話ãç´¹ä»ãã¾ããã tech.smartcamp.co.jp ä¸è¨ããã¸ã§ã¯ãã¯å¤§è¦æ¨¡ãªã¤ã³ãã©ã®å·æ°ã ã£ããã¨ããããCI/CDã«ã¤ãã¦ãå¾æ¥ã®ä»çµã¿ããECS/Fargateã®æ§æã«åããã¦å¤æ´ãã¦ãã¾ãã CI/CDã¯ãå®å®ãããããã¯ãéçºã«ã¯å¿ é ä¸ã¤é·æã«æ¸¡ã£ã¦ç¶ç¶çã«å©ç¨ãããã®ãªã®ã§ãããã«ã¹ãã¬ã¹å°ãªãå¹ççã«åºæ¥ãããéè¦ã ã¨èãã¦ãã¾ãã ã¾ããCI/CDã¯ä¸åº¦æ§ç¯ãã¦ãã¾ãã¨æ¾ç½®ãããã¡ã§ãããæ¥ã ã®éçºãã¼ã å ¨ä½ã®çç£æ§ã«ã大ããªå½±é¿ãä¸ããããããããã£ãæ°å°ãªãåæ§ç¯ã®ã¿ã¤ãã³ã°ã§ã¯ã³ã¹ããæãã価å¤ãããã®ã§ã¯ãªãã§ããããã ä»åã¯ãå¼ç¤¾ã®ã¤ã³ãã©ç§»è¡æã«å®æ½ããCI/CDã®æ¹åã«ã¤ãã¦ç´¹ä»ãããã¨æãã¾ãã å¾æ¥ã®CI/CD
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}