Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20191002_CircleCIMeetupFukuoka#2
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yohei Kawahara
October 02, 2019
960
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20191002_CircleCIMeetupFukuoka#2
【福岡】CircleCI ユーザーコミュニティミートアップ#2 にてお話させていただく予定の資料です.
Yohei Kawahara
October 02, 2019
More Decks by Yohei Kawahara
See All by Yohei Kawahara
kix_009_20190429
inokappa
0
950
2019-04-18 CircleCI Meetup Fukuoka #1
inokappa
2
9.5k
開発で使える AWS の API 操作を模倣する (OSS) ツールを探してみた/JAWS-UG Kagoshima Vol.8
inokappa
1
1.4k
隙間時間を使って exercism.io を始め隊 | リモートで勉強会 #2
inokappa
0
570
Congratulations fukuokarb#100
inokappa
0
4.2k
moto を 'もっと' 使おう/PyFukuoka#4
inokappa
0
4.9k
github-enterprise-user-kai-desuyone
inokappa
0
160
Elixir and AWS Tutorial
inokappa
0
650
AWS Step Functions で検討する crontabless architecture/20170824_serverless_meetup_fukuoka#1
inokappa
1
820
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Practical Orchestrator
shlominoach
192
12k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Designing for Performance
lara
612
70k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Design in an AI World
tapps
1
350
The browser strikes back
jonoalderson
0
1.8k
Transcript
CircleCI ݕఆ ϓϨΠόοΫ ʙ CircleCI ݕఆͷͦͷޙ ʙ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
@inokappa CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 1
ࣗݾհ • ͔ͬͺ (@inokappa) • גࣜձࣾ YAMAP • ΠϯϑϥΤϯδχΞͰ͢ •
ࠓͷܕ, DA PUMP ͷ ISSA ͞Μ ͷΛഈआ͓ͯ͠Γ·͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 2
YAMAP ʹ͍ͭͯ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 3
YAMAP ʹ͍ͭͯ ʙΈ·Γػೳʙ1 1 ࢁͰ“ਓͱ͢Εҧ͏”͜ͱͰɺ୭͔ͷ໋Λٹ͑Δ͔͠Εͳ͍ػೳΛͭ͘Γ·ͨ͠ (https://note.yamap.com/n/ndbe23b7e7bf0) ΑΓҾ༻ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
4
CircleCI ͱ YAMAP • શͯͷγεςϜ͓͍ͯ, ςετσϓϩΠͰ CircleCI ͕ϑϧʹ ׆༻͞Ε͍ͯ·͢ •
ࣾΤϰΝϯδΣϦετͷ @morygonzalez ͞Μ (Γ͝Μ͞ Μ) ͷೖࣾͱڞʹಋೖ͞Ε·ͨ͠ • ͕ࣗೖࣾͨ࣌͠ʹطʹ YAMAP ͷ։ൃγεςϜͷதͰ ͳͯ͘ͳΒͳ͍ଘࡏʹͳ͍ͬͯ·ͨ͠ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 5
CircleCI ͱࢲ • YAMAP ʹೖࣾ͢Δલ Hello World ϨϕϧͰͨ͠ • YAMAP
ͷ QA ڥͷཧΛ͞Εͨ͜ͱΛػձʹ, վΊͯ CircleCI Λษڧ͢͠Α͏ʹ • ࠓͰॳ৺ऀͷ··Ͱ͕͢... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 6
ͯ͞, ຊ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 7
CircleCI ݕఆͱ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 8
CircleCI ݕఆͱ (1) • CircleCI ͷεΩϧΛূ໌͢ΔՍۭͷೝఆࢼݧ੍Ͱ͢ • डݧྉແྉ (CircleCI ʹແྉϓϥϯ͕͋Γ·͢)
• ͍ͭͰ, Ͳ͜Ͱ, Πϯλʔωοτ͕ແͯ͘डݧग़དྷ·͢ (CircleCI ϩʔΧϧ PC Ͱ࣮ߦग़དྷ·͢) • ӳޠ, ຊޠ, YAML Ͱडݧ͢Δ͜ͱ͕ग़དྷ·͢ (ຊޠͷυ Ωϡϝϯτ͕ॆ࣮͍ͯ͠·͢) CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 9
CircleCI ݕఆͱ (2)2 2 CircleCI ݕఆެࣜαΠτ (https://kentei.circleci.com/ja/ ※ ࣮ࡏ͍ͯ͠·ͤΜ) ΑΓҾ༻
CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 10
CircleCI ݕఆͱ (3) • 1 ڃશੈքͰ 40 ਓڧ (CircleCI ͷࣾһͱಉ)3
• 2 ڃҎԼ 10 ສਓڧ (CircleCI ͷϢʔβʔͱಉ)3 3 2018 10 ݄ௐ, CircleCI ݕఆެࣜαΠτ (Ծ) ΑΓҾ༻, ͔ͳΓใ͕ݹ͍Ͱ͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 11
CircleCI ݕఆͱ (4) • ݕఆࢼݧͷग़ൣғ CircleCI 2.0 ͱ 2.1 CircleCI
ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 12
ͱ͍͏͜ͱͰ... ֎ෆग़ͷݕఆࢼݧରࡦ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 13
ҙʂʂ ͔͜͜Β֎ෆग़ͳ༰͕ଓ͖·͢ͷͰ, εϥΠυͷࣸਅࡱӨ ͓͢Δ༰ͷ SNS ͷߘʮ͝ԕྀ͠ͳ͍ͰʯԼ͍͞. ୠ͠, શͯͷ༰͕ެࣜυΩϡϝϯτΠϯλʔωοτ্ʹଘࡏ ͓ͯ͠Γ·͢ͷͰ͝ҙԼ͍͞ !
CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 14
CircleCI Λ࢝ΊΔ (9 ڃ) ઃ 1. ҎԼͷ ( ) ͷதʹͯ·Δݴ༿ΛຒΊͳ͍͞.4
• CircleCI Λ࢝ΊΔʹ, ( (1) ) ຢ ( (2) ) ͷΞΧϯτ͕ඞཁ ʹͳΓ·͢ • ϦϙδτϦͱ CircleCI ͷ ( (3) ) Λ࿈ܞͤ͞Δඞཁ͕͋Γ·͢ 4 (1)Github, (2)BitBucket, (3)࿈ܞ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 15
CircleCI Λ࢝ΊΔ (ղઆ) CircleCI Λ࢝ΊΔʹ, Github ຢ BitBucket ͷΞΧϯτ͕ඞ ཁʹͳΓ·͢ͷͰ,
Github BitBucket ͷΞΧϯτऔಘͯ͠ ͓͖·͠ΐ͏. CircleCI ݕఆࢼݧΛडݧ͢Δҝʹઈରʹඞཁͳ४ උͰ͢. Εͳ͍Α͏ʹ͠·͠ΐ͏. ΞΧϯτΛऔಘͨ͠Β, ϦϙδτϦΛ CircleCI ϓϩδΣΫτͱ ࿈ܞͤ͞·͠ΐ͏. શͯͷϦϙδτϦͱϓϩδΣΫτ͕࿈ܞग़དྷ ΔͱݶΓ·ͤΜͷͰҙ͕ඞཁͰ͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 16
ॳΊͯͷ .circleci/config.yml (9 ڃ) ઃ 2. ҎԼ, ੈքͰ࠷γϯϓϧͳ .circleci/config.yml Ͱ͢.
( ) ͷதʹೖΔΩʔϫʔυΛ͑ͳ͍͞.5 version: ( (1) ) jobs: ( (2) ): docker: - image: docker:18.06.0-ce-git ( (3) ): - run: name: Hello world command: | echo "Hello CircleCI!!" 5 (1)2, (2)jobs, (3)steps CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 17
ॳΊͯͷ .circleci/config.yml (ղઆ) ϦϙδτϦʹ .circleci/config.yml ͱ͍͏ YAML ϑΥʔϚοτͷ ઃఆϑΝΠϧΛՃ͢Δඞཁ͕͋Γ·͢. ओཁͳΩʔ,
ҎԼͷ ௨ΓͰ͢. • version • jobs • steps CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 18
ϩʔΧϧϚγϯͰϏϧυΛ࣮ߦ͢Δ (8 ڃ) ઃ 3. ઃ 2 ͷ .circleci/config.yml Λ༻͍ͯ,
ϩʔΧϧϚγϯ ্ͰߏจͷνΣοΫͱϏϧυΛ࣮ߦ͠ͳ͍͞. • CircleCI Ͱ, circleci ͱ͍͏ίϚϯυϥΠϯπʔϧΛఏڙ͠ ͍ͯ·͢ • macOS Ͱ, Homebrew ΛͬͯΠϯετʔϧ͢Δͱྑ͍Ͱ ͠ΐ͏ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 19
ϩʔΧϧϚγϯͰϏϧυΛ࣮ߦ͢Δ (σϞ 1) • config validate ΦϓγϣϯͰߏจͷνΣοΫ $ circleci config
validate Config file at .circleci/config.yml is valid. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 20
ϩʔΧϧϚγϯͰϏϧυΛ࣮ߦ͢Δ (σϞ 2) • local execute ΦϓγϣϯͰϏϧυΛ࣮ߦ $ circleci local
execute Docker image digest: sha256:5eb8cb710920f567403cc4cbd2de16d5ab8fc9a1b4c6357d2e7137fa5f1a4f62 ====>> Spin up Environment ... தུ ... ====>> Hello world #!/bin/sh -eo pipefail echo "Hello CircleCI!!" Hello CircleCI!! Success! CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 21
CircleCI ͰϏϧυΛ࣮ߦ͢Δ (8 ڃ) ઃ 4. ઃ 3 Ͱ֬ೝͨ͠ .circleci/config.yml
Λ༻͍ͯ, CircleCI ্ͰϏϧυΛ࣮ߦ͠ͳ͍͞. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 22
CircleCI ͰϏϧυΛ࣮ߦ͢Δ (ղઆ) ϦϙδτϦͱͷ࿈ܞ͕ਖ਼͘͠ߦΘΕ͍ͯΔ߹, ϦϙδτϦʹ push ͢ΔͱϏϧυ͕࣮ߦ͞Ε·͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
23
Ϗϧυڥʹ SSH ϩάΠϯ͢Δ (8 ڃ) ઃ 5. Ϗϧυڥʹ SSH ΛͬͯϩάΠϯ͠ͳ͍͞.
ϩάΠϯ ͨ͠Β, hello.txt ͕࡞͞Ε͍ͯΔ͜ͱΛ֬ೝ͠ͳ͍͞. • Ϗϧυڥʹ SSH ϩάΠϯ͢Δ͜ͱͰ, Ϗϧυͷσόοά ͕ߦ͑·͢ • ࣄલʹ Github ্ʹ SSH ͷެ։伴Λొ͓͖ͯ͠·͠ΐ͏ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 24
Ϗϧυڥʹ SSH ϩάΠϯ͢Δ (8 ڃ) ࣄલʹ, .circleci/config.yml ΛҎԼͷΑ͏ʹमਖ਼͓͖ͯ͠·͢. version: 2
jobs: build: docker: - image: docker:18.06.0-ce-git steps: - run: name: Hello world command: | echo "Hello CircleCI!!" > hello.txt CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 25
Ϗϧυڥʹ SSH ϩάΠϯ͢Δ (σϞ) δϣϒը໘ͷ Rerun workflow ͔Β Rerun job
with SSH Λબ ͯ͠δϣϒΛ࠶࣮ߦ͠·͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 26
Ϗϧυڥʹ SSH ϩάΠϯ͢Δ (σϞ) $ ssh -p 64536 xxx.xxx.xxx.xxx ...
ུ ... ~ # ls -al total 16 drwx------ 3 root root 4096 Apr 16 22:02 . drwxr-xr-x 43 root root 4096 Apr 16 22:01 .. -rw------- 1 root root 7 Apr 16 22:02 .ash_history drwxr-xr-x 2 root root 4096 Apr 16 22:01 project ~ # cd project/ ~/project # ls hello.txt ~/project # cat hello.txt Hello CircleCI!! ~/project # CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 27
ͪΐͬͱϒϨΠΫ ʙᕒͷϞϊϚωʙ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 28
ϞϊϚω A ͞Μ ϏϏοτͷऴྃΛελοϓʹࠂ͛ΒΕͯ... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 29
ϞϊϚω B ͞Μ ੈք্ͷ MC ͷҝ, υʔϋʹ౸ணͯ͠Ұݴ... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
30
workflows Λ͏ (7 ڃ) ઃ 6. workflows Λͬͯ, master ϒϥϯνҎ֎Ͱ
build ͕࣮ ߦ͞ΕΔΑ͏ʹ͠ͳ͍͞. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 31
workflows Λ͏ (ղઆ) • workflows Ͱ, ֤εςοϓΛδϣϒͱ͍͏୯ҐͰѻ͍·͢ • workflows Λ͏͜ͱͰ,
ྻͳεςοϓ࣮ߦ͚ͩͰͳ͘, ݅ʹԠͯ͡δϣϒΛ࣮ߦͤ͞Δ͜ͱ͕ग़དྷ·͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 32
workflows Λ͏ (ղઆ) ͜Ε·Ͱͷ .circleci/config.yml ʹ workflows ͱ͍͏ηΫγϣϯ ΛՃ͠·͠ΐ͏. ...
ུ ... workflows: version: 2 pr-build: jobs: - build: filters: branches: ignore: - master CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 33
workflows Λ͏ (ղઆ) ผͷϒϥϯνΛ্ͬͨͰ commit, push ͯ͠Έ·͠ΐ͏. (master)$ git checkout
-b development/demo01 Switched to a new branch 'development/demo01' (development/demo01)$ echo 'test' >> README.md (development/demo01)$ git add README.md (development/demo01)$ git commit -m 'demo' [development/demo01 6ef698f] demo 1 file changed, 1 insertion(+) (development/demo01)$ git push -u origin development/demo01 ... Branch 'development/demo01' set up to track remote branch 'development/demo01' from 'origin'. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 34
workflows Λ͏ (ղઆ) development/demo01 ϒϥϯνͰ, build ͕࣮ߦ͞Ε͍ͯ· ͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ
#2 35
ϏϧυͷޮԽ (7 ڃ) ઃ 7. ΩϟογϡΛ༻͍ͯ, Ϗϧυ࣌ؒͷॖΛݕ౼͠ͳ͍͞. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
36
ϏϧυͷޮԽ (ղઆ) • save_cache εςοϓΛར༻͢Δ͜ͱͰ, ϥΠϒϥϦιʔε ίʔυͷΩϟογϡΛอ࣋ग़དྷ·͢ • restore_cache ʹͯ
key Ͱࢦఆͨ͠ΩϟογϡΛ෮ݩ͠· ͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 37
ϏϧυͷޮԽ (ղઆ) ҎԼͷΑ͏ʹ .circleci/config.yml Λमਖ਼͠·͠ΐ͏. steps: - restore_cache: key: cache-data-{{
.Branch }} ... தུ ... echo $n >> data.txt sleep 0.3 done fi - save_cache: key: cache-data-{{ .Branch }} paths: - data.txt ... ࣍ͷϖʔδ ... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 38
ϏϧυͷޮԽ (ղઆ) ҎԼͷΑ͏ʹ .circleci/config.yml Λमਖ਼͠·͠ΐ͏. ... લͷϖʔδΑΓ ... - run:
name: Remove data.txt command: | rm -rf data.txt && sleep 5 && ls -al - restore_cache: key: cache-data-{{ .Branch }} - run: name: Restore data command: | cat data.txt CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 39
ϏϧυͷޮԽ (ղઆ) • key ʹ {{ .Branch }} {{
.Revision }} ͷςϯϓ Ϩʔτ͕ࢦఆՄೳͰ͢ • paths ʹϑΝΠϧ໊σΟϨΫτϦͷύεΛࢦఆ͠·͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 40
ϏϧυͷޮԽ (σϞ 1) ΩϟογϡΛࠐΜͩ͜ͱͰ, ҎԼͷΑ͏ʹॳճͷϏϧυҎ߱Ͱ ܶతʹॲཧ͕࣌ؒॖ͞Ε͍ͯ·͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 41
ϏϧυͷޮԽ (ࢼݧʹग़Δ) restore_cache Ͱ keys ͰෳͷΩϟογϡΩʔΛࢦఆՄೳ Ͱ͢. - restore_cache: keys:
- cache-data-{{ .Branch }} - cache-data CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 42
ϏϧυͷޮԽ (σϞ 2) ҎԼͷΑ͏ʹ, ࢦఆͨ͠ΩʔͷΩϟογϡ͕ଘࡏ͍ͯ͠ͳ͍߹ ʹ, restore_cache εΩοϓ͞Ε, طʹΩϟογϡΩʔ͕ଘ ࡏ͍ͯ͠Δ߹ʹ
save_cache εΩοϓ͞Ε·͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 43
ϏϧυͷޮԽ (ࢼݧʹग़Δ) ࠓͷͱ͜Ζ, ΩϟογϡΛফ͢ज़͕͋Γ·ͤΜʂ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 44
ςετͷޮԽ (7 ڃ) ઃ 8. ύϥϨϧςετΛར༻ͯ͠ςετ࣌ؒͷॖΛݕ౼͠ͳ ͍͞. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2
45
ςετͷޮԽ (ղઆ) • ςετΛϑΝΠϧ୯ҐͰׂ͢Δ͜ͱͰ, ฒߦͯ͠ςετΛ࣮ ߦ͢Δ͜ͱ͕ՄೳͰ͢ • ׂ circleci ίϚϯυΛར༻͠·͢
CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 46
ςετͷޮԽ (ղઆ) ҎԼͷΑ͏ʹ .circleci/config.yml ʹςετΛՃ͠·ͨ͠. test: parallelism: 2 docker: -
image: docker:18.06.0-ce-git steps: - checkout - run: name: Paralell Test command: | echo $(circleci tests glob "tests/*" | circleci tests split) | xargs -n 1 sh CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 47
ςετͷޮԽ (ղઆ) ςετͱݴ͍ͬͯ·͕͢, ҎԼͷΑ͏ͳγϯϓϧͳγΣϧεΫϦ ϓτͰ͢. sleep 5 echo "01" CircleCI
ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 48
ςετͷޮԽ (σϞ 1) ී௨ʹςετΛ࣮ߦͨ͠߹, ҎԼͷΑ͏ʹ 27 ඵֻ͔͍ͬͯ· ͢. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ
#2 49
ςετͷޮԽ (σϞ 2) ύϥϨϧʹςετΛ࣮ߦͨ͠߹, ҎԼͷΑ͏ʹ 16 ඵ·Ͱʹ ॖ͍ͯ͠·͢ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ
#2 50
ͯ͞ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 51
͜͜Ͱ Ԡ༻ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 52
cron ͍ͨ͘... ਓྨόονॲཧ͔ΒಀΕΒΕͳ͍. scheduled-build: triggers: - schedule: cron: "0 23
* * *" # UTC Ͱࢦఆ͢Δඞཁ͕͋Δ filters: branches: only: - deployment/packer CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 53
sls deploy CircleCI Ͱ Serverless Framework ฏ, ྩ࢈ۀֵ໋Ͱ͢. ...
- run: name: Deploy command: | serverless deploy --conceal CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 54
packer CircleCI Ͱ packer ͰύΧοͱ AMI ࡞. ... -
run: name: build image command: packer build build.json no_output_timeout: 120m CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 55
EC2 ηΩϡϦςΟάϧʔϓΛ։์ (1) • CircleCI Ͱ EC2 ʹ SSH ΞΫηε͍ͨ͠߹ʹආ͚ͯ௨Εͳ
͍ • Job ͷதͰࣗલ࣮͚ͨ͠Ͳ... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 56
EC2 ηΩϡϦςΟάϧʔϓΛ։์ (2) Orbs Ͱఏڙ͞Ε͍ͯͨ͜ͱΛΓ·ͨ͠. CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 57
EC2 ηΩϡϦςΟάϧʔϓΛ։์ (3) ͔͠͠, ԶόʔδϣϯͰ... - run: name: build specfile
for awspec command: | bundle exec rake aws:security_group:build_spec when: always - run: name: check security group ingress command: | bundle exec rake aws:security_group:spec when: always CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 58
ϫϯόΠφϦ (1) command ࠷ߴೋߦ͘Β͍Ͱ͍͑ͨͰ͢. - run: name: execute remove old
amis command: | # ݹ͍ AMI Λআ͢ΔϫϯόΠφϦίϚϯυ ./tools/amiCtrl --delete --days=3 -batch CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 59
ϫϯόΠφϦ (2) - run: name: execute remove old amis command:
| # ͜ͷίʔυ͋͘·ͰαϯϓϧͰ͢, ಈ͖·ͤΜ AMI_ID=$(aws ec2 describe-images ....) && \ aws ec2 deregister-image --image-id ${AMI_ID} && \ aws ec2 delete-snapshot --snapshot-id ${SNAPSHOT_ID} CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 60
ͦΖͦΖ ͓࣌ؒͰ͢... CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 61
ͳͥ, CircleCI Λ͏ͷ͔ • खॱ͕ݟ͍͑ͯΔ • ࣮ߦ݁Ռ͕ݟ͍͑ͯΔ • ͕ͯ͢ YAML
ͰޠΕΔΜ͡Όͳ͍͔ͬͯࢥ͑Δ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 62
Let's CircleCI ݕఆ • CircleCI ݕఆͰࢼݧʹඞͣग़ͦ͏ͳϙΠϯτΛૡ͍ఠΜͰ͓ ͠·ͨ͠ • ·ͩ, CircleCI
Λ৮ͬͨ͜ͱ͕ແ͍ํੋඇαΠϯΞοϓͯ͠ ͬͯΈ·͠ΐ͏ • υΩϡϝϯτେมॆ࣮͍ͯ͠ΔͷͰ, υΩϡϝϯτੋඇ, Λ௨͠·͠ΐ͏ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 63
͍͞͝ʹ • CircleCI ৮͍ͬͯΔͱ, ͳΜͰ CircleCI Ͱॲཧ͍ͨ͠ͱ͍͏ ཉ͕༙͍͖ͯ·͢ΑͶ • Բͤͣ৮Γଓ͚Δ͜ͱ͕ঢڃ
(্ୡ) ͷۙಓͩͱࢥ͍·͢ • օ͞Μੋඇ, ݕఆΛडݧ͠·͠ΐ͏ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 64
͓ΘΓ CircleCI ϢʔβʔίϛϡχςΟϛʔτΞοϓ #2 65