Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker bake(とCache)でCI/CDを改善する
Search
ゆるゆる
January 22, 2024
Programming
0
620
Docker bake(とCache)でCI/CDを改善する
ゆるゆる
January 22, 2024
Tweet
Share
More Decks by ゆるゆる
See All by ゆるゆる
改行には気をつけよう
sunyryr
0
54
WebAPI の設計
sunyryr
0
87
OpenAPI×LaravelでAPI開発を格段に便利にする方法
sunyryr
0
1.1k
OpenAPIことはじめ
sunyryr
0
120
server side swift - codable
sunyryr
0
250
iOSアプリだけじゃないSwift
sunyryr
0
160
Other Decks in Programming
See All in Programming
ALL CODE BASE ARE BELONG TO STUDY
uzulla
30
7k
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
460
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
280
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
業務でAIを使いたい話
hnw
0
230
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
280
GitHub Copilotを使いこなせ!/mastering_github_copilot!
kotakageyama
2
760
EMこそClaude Codeでコード調査しよう
shibayu36
0
590
KoogではじめるAIエージェント開発
hiroaki404
1
300
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
240
Webサーバーサイド言語としてのRustについて
kouyuume
1
5.1k
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
3
1.8k
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
720
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Statistics for Hackers
jakevdp
799
220k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Done Done
chrislema
186
16k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
RailsConf 2023
tenderlove
30
1.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Transcript
%PDLFSCBLFʢͱ$BDIFʣͰ$*$%Λվળ͢Δ 304$"'&%FW0QT Taiyo Minagawa
2 ࣗݾհ • 5BJZP.JOBHBXBΏΔΏΔ • גࣜձࣾΏΊΈ • #BDLFOE&OHJOFFSࣗ *OGSB&OHJOFFS •
झຯ ◦ υϥΠϒ ◦ ཱྀߦ ◦ ϒϧʔΞʔΧΠϒ TVOZSZS TVO@ZSZS
3 ࣍ %PDLFSCBLFͷհ ࣮ࡍͷվળͷ༷ࢠ
4 %PDLFSCBLFͷհ ίϯςφԽͯ͠·͔͢ʁ
5 %PDLFSCBLFͷհ IUUQTHJUIVCDPNEPDLFSCVJMEYCMPCNBTUFSEPDTSFGFSFODFCVJMEY@CBLFNE
6 CBLFͱ • ߴϨϕϧͷϏϧυΦʔέετϨʔγϣϯ • શͯͷΠϝʔδΛ·ͱΊͯߏஙͰ͖Δ • %PDLFSϏϧυͷλεΫϥϯφʔͱͯ͠ଊ͑ΒΕΔ • #VJME,JUͷฒྻԽΛ࠷େݶʹ׆༻͢ΔͨΊͷπʔϧ
ෳͷΠϝʔδΛϏϧυ͢Δ࣌ʹ͏ͱྑ͍πʔϧ
7 CBLFͷϝϦοτ • ࠷దͳϏϧυॱΛܭࢉͯ͠ϏϧυΛߦͬͯ͘ΕΔ • Ϗϧυͷॲཧޮ্͕͕Δ ϨΠϠʔ̍ ϨΠϠʔ̎ ϨΠϠʔ̏ λʔήοτ"
ϨΠϠʔ̍ ϨΠϠʔ̎ λʔήοτ# ϨΠϠʔ̐ ϨΠϠʔ̍ ϨΠϠʔ̎ ϨΠϠʔ̏ λʔήοτ" λʔήοτ# ϨΠϠʔ̐ ˞͜ͷॏෳআ CVJME,JUͷػೳ
8 CBLFͷϝϦοτ • ϏϧυઃఆΛߏతʹఆٛͰ͖Δ • )$- )BTIJ$PSQDPOGJHVSBUJPOMBOHVBHF ͕͑Δ https://github.com/moby/buildkit/blob/master/docker-bake.hcl#L118-L148 variable
"GO_VERSION" { default = null } ม function "bindir" { params = [defaultdir] result = DESTDIR != "" ? DESTDIR : "./bin/${defaultdir}" } ؔ name = "lint-${buildtags.name}" จࣈͷຒΊࠐΈʢςϯϓϨʔτϦςϥϧʣ
9 CBLFΛطʹ༻͍ͯ͠ΔϓϩδΣΫτ • NPCZNPCZ • NPCZCVJMELJU • EPDLFSCVJMEY • EVOHMBTGSBOLFOQIQ
• KFOLJOTDJEPDLFS
10 ࣄྫհ
11 ͱ͋ΔϓϩδΣΫτͷ • &$4Ͱ "1*αʔόʔ͕ߏங͞Ε͍ͯΔ • ݕূ༻ؚΊݸͷΠϝʔδΛϏϧυ͢Δඞཁ͕͋Δ • $*$% +FOLJOTΛར༻͍ͯͨ͠
◦ ڥ $*͝ͱʹϦηοτ͞Εͳ͍ ◦ উखʹ %PDLFSͷ MBZFSDBDIF͕ޮ͘ͷϝϦοτͱݴ͑ͳ͘ͳ͍ʢͳ͍ʣ • σϓϩΠઌ͕ΊͪΌͪ͘Ό͋Δʂ • ຊ൪ڥͷσϓϩΠࣗಈԽ͍ͯͯ͠ɺόʔδϣϯλάΛ͚Δʢ͜ΕϫʔΫϑϩ ʔΛ༻ҙ͍ͯ͠·͢ʣ͚ͩͰσϓϩΠ͞ΕΔ • (JU)VC"DUJPOTʹҠߦ͢Δ
12 ํ • $*$%ͷྲྀΕ͋·Γ͍͡Βͳ͍ • (JU)VC"DUJPOTຖճڥ͕Ϧηοτ͞ΕΔͷͰɺผͷॴʹ MBZFS DBDIF Λอଘ͢Δ ◦
ࠓճ 4Λબͼ·ͨ͠ ◦ ͜ͷΩϟογϡͷهड़͕ΊͪΌͪ͘Ό͍ͷͰ CBLFͷԸܙ͕ग़͖ͯ·͢
13 +FOLJOT࣌ͷϏϧυ࣌ؒ • UYMBSHFʢDPSF(#ʣ • ʙ͘Β͍ ◦ " # ฒྻͰ͢
• গͳ͘ͱ :BSOͷΩϟογϡ͕ޮͣ͘ Ͱ͕͢ɺͳ͔ͥ ճಉ͡Α͏ͳ࣌ؒ ͔͔͍ͬͯΔ ビルドA ビルドB 2回目 3回目 1回目
14 (JU)VC"DUJPOTҠߦ CBLF DBDIFCBDLFOE • LT্ͷ 1PEʢ$PSF(#ʣ • ฒྻॲཧ CBLFʹͤΔ
15 ҠߦޙͷϏϧυ࣌ؒ • ͢Έ·ͤΜӕͰ͢ɺͪ͜Β͕ҰൠతͳϏϧυ࣌ؒͰ͢ • ҰൠతͳΞϓϦέʔγϣϯͷϏϧυఔͰ CBLFʹΑΔΞοϓͷԸܙগͳ͍ ◦ Ωϟογϡ͕ͨͬͨ࣌ͷݟҧ͑Δ΄Ͳʹ্ •
ฒྻԽʹΑͬͯϦιʔεར༻ͷޮ͔ͳΓ্͕ͬͨΑ͏ʹݟ͑Δ ◦ $PSF $PSF ͰಉͷϏϧυ࣌ؒ
16 ·ͱΊ • %PDLFSCBLFΛ͏ͱϏϧυઃఆ͕ཧ͘͢͠ͳΔͷͰΤϯδχΞʹخ͍͠ʂ • $BDIFTUPSBHFCBDLFOEΛઃఆ͢Δͱ $*ͷ͕վળ͢ΔͷͰ։ൃޮ61ɾ ίετ%08/͕خ͍͠ʂ ◦ ϏϧυίϚϯυ͕͘ͳΔ
CBLFͰղܾ
17 ༨ஊ r ։ൃɾςετڥΊͬͪΌ͋Δ
18 ༨ஊ r ։ൃɾςετڥΊͬͪΌ͋Δ
19 ࠾༻ใ
20 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠