[2020-09-07追è¨]
ãã®æ§æï¼ããã¦ãã§ã¯ãã£ã¦ã¾ããï¼ï¼ï¼ï¼
moznion.hatenadiary.com
[追è¨ããã¾ã§]
表é¡ã®éãï¼æè¿AWSä¸ã§éç¨ãã¦ããã¹ã±ã¼ã«ãã & éç¨ãçã¨ããªJenkinsã«ã¤ãã¦çºè¡¨ãã¦ãã¾ããï¼
ç°¡åã«ã¾ã¨ããã¨
- Jenkinsã®slaveãAWS CodeBuildã«å§è²ãããã¨ã§å®è³ªç¡éã®ã¹ã±ã¼ã«ã¢ã¦ãã¨ã¡ã³ãã³ã¹ã忏ãå®ç¾
- Jenkinsã®ã¹ãã¬ã¼ã¸ãAmazon EFSã«ãããã¨ã§ããã¹ãæ§ã¨èªåããªã¥ã¼ã æ¡å¼µãå®ç¾
- ElasticBeanstalk with Dockerã使ã£ã¦éç¨ãããã¨ã§éç¨ã³ã¹ãã®çåå
ã¨ããå 容ã§ãï¼
ä¼å ´ãã¤ã³ã¿ã¼ãããã§è³ªåããããã¨ã«ã¤ãã¦ã¯ä»¥ä¸ã®ã¨ããã§ã:
夿®µçã«ã¯å¾æ¥ã®ãµã¼ãã¹ã使ããããä¸ãã£ããã©ããï¼
- 試ç®çã«ã¯ä¸ãã£ã¦ãã
- ãã¯ãCIãå¯ã¦ããæéãå¤ãã¨ï¼CodeBuildã®æé貸ãã¹ã¿ã¤ã«ããã¾ãã¯ã¾ã£ã¦å¹ãã¨ããæã
- ã¨ã¯ããä»å¾ç¶ç¶çã«ã³ã¹ãã®å®æ¸¬ãè¡ã£ã¦çµé観å¯ãããå¿ è¦ããã
å¼·ãç°å¢ã§ãã«ããããã¨ãã話ã ã£ããï¼CodeBuildã¯ã¤ã³ã¹ã¿ã³ã¹ã¿ã¤ããé¸ã¹ãï¼
- é¸ã¹ã
3 GB ã¡ã¢ãªã2vCPU
7 GB ã¡ã¢ãªã4vCPU
15 GB ã¡ã¢ãªã8vCPU
- (ä¼å ´ã§ã¯ããè¦ãã§ééããã¹ããã¯ãå£èµ°ã£ãããããã¾ããï¼ãã¿ã¾ãã)
CodeBuildä¸ã§ã®ãã«ãç°å¢ã¯Dockerã¨ãããã¨ã ã£ããï¼ãã®Dockerã¤ã¡ã¼ã¸ã¯ã©ããã«ã¢ãããã¼ããã¦ããï¼ããã¨ãã£ãã·ã¥ã¿ãããªã®ã¯å¹ãï¼
- CodeBuildä¸ã§ã¯ãµãã¼ãããã¦ããè¨èªã§ããã°ç´ ã®Dockerã¤ã¡ã¼ã¸ãæä¾ããã¦ããï¼ãã®ä¸ã§ãã«ããè¡ããã¨ãã§ãã
- ç¬èªã®ãã«ãç°å¢ã欲ããã®ã§ããã°èªåã§Dockerã¤ã¡ã¼ã¸ãæ§ç¯ãã¦ECRã«ã¢ãããã¼ããã¦å©ç¨ããã°è¯ã
- ãã£ãã·ã¥ã«ã¤ãã¦ã¯ä»»æã®ãã¡ã¤ã« (or ãã£ã¬ã¯ããª) ãS3ã«çªã£è¾¼ãã§ãã£ãã·ã¥ãããã¨ãã§ããã®ã§ä¾¿å©
- ä¾ãã°è§£æ±ºæ¸ã¿ã®
node_modules
ã®ãããªãã®ããã£ãã·ã¥ãã¦ãããã¨ãå¯è½
- ä¾ãã°è§£æ±ºæ¸ã¿ã®
ãã©ã°ã¤ã³ç®¡çãéçã«ãªããªãã
- ãã©ã°ã¤ã³ã«ã¤ãã¦ã¯åºæ¬çã«Jenkinsã®UIããã¤ã³ã¹ãã¼ã«ããªãããã«ãã¦ãã
plugins.txt
ã§Jenkinsã®ã¤ã³ã¹ãã¼ã«ãã©ã°ã¤ã³ã管çãã¦ããï¼å ¥ããã¹ããã©ã°ã¤ã³ã«ã¤ãã¦ã¯æ§æç®¡çãããã¦ããã¨ãããããªç¶æ - Gemfileã¿ãããªã¤ã¡ã¼ã¸
- ãã®ãããªæã: https://github.com/moznion/jenkins_eb_efs_codebuild_example/blob/42a3722e80ba56a2286cc421eed35ed24ac58334/plugins.txt
- ãã®ãã©ã°ã¤ã³ç¾¤ãDockerfileã§Dockerã¤ã¡ã¼ã¸ãçµãæã«ãããããã¤ã³ã¹ãã¼ã«ãã¦ããã¨ããæã: https://github.com/moznion/jenkins_eb_efs_codebuild_example/blob/42a3722e80ba56a2286cc421eed35ed24ac58334/Dockerfile#L7
- Ref: linux - Installing Jenkins Plugins to Docker Jenkins - Stack Overflow
- ãªãJenkinsã«å ¥ã£ã¦ãããã©ã°ã¤ã³ä¸è¦§ã«ã¤ãã¦ã¯ï¼ã¹ã¯ãªããã³ã³ã½ã¼ã«ãã以ä¸ã®groovyã¹ã¯ãªãããæµããã¨ã§å¼ã£å¼µã£ã¦ãããã¨ãã§ãã (ããã§pre-installedãªãã©ã°ã¤ã³ã®ä¸è¦§ãå¼ã£å¼µã£ã¦ãã¦plugins.txtã«æ¸ãè¾¼ãã§ãã)
Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}") }
Jenkinsã¯è²ã ã¨ã©ã³ã¿ã¤ã ãå ¥ãããã¦ç°å¢ãæ±ããªãå°è±¡ããããã©ã®ããã«å¯¾å¦ãã¦ããã
- å®éã®ãã«ãç°å¢ã¯åºæ¬çã«CodeBuildä¸ãªã®ã§Jenkinsãããããã«æ±ããªããã¨ã¯ãªããã
- ãªãããã®ã©ã³ã¿ã¤ã ãã¤ã³ã¹ãã¼ã«ããå¿
è¦ãããå ´åã¯Dockerfileã§æ§æç®¡çãããï¼ã¨ããæ°æã¡
- (ã¾ã ãã®ç¶æ³ã«è³ã£ã¦ããªã)
ã¨ããæãã§ããï¼åèã«ãªãã°å¹¸ãã§ãï¼
Kyoto.ãªããã¯ããããããããã話ãèãã¦æ¥½ããã§ããï¼æ¥å¹´ã®éå¬ã楽ãã¿ã«ãã¦ãã¾ãï¼ï¼