Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Continuous Integration for Pharo Smalltalk
Search
newapplesho
January 30, 2016
Programming
0
160
Continuous Integration for Pharo Smalltalk
Continuous Integration for Pharo Smalltalk. Smalltalkと継続的インテグレーション
newapplesho
January 30, 2016
Tweet
Share
More Decks by newapplesho
See All by newapplesho
OpenRestyについて
newapplesho
0
110
Continuous Integration for Pharo Smalltalk Part 2 (Travis CI)
newapplesho
0
210
今時なウェブ開発をSmalltalkでやってみる?
newapplesho
0
170
Elasticsearch for Pharo Smalltalk
newapplesho
0
160
SourceCode Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
newapplesho
0
140
RUNNING Smalltalk - 実践Smalltalk
newapplesho
0
130
AWS SDK for Smalltalk
newapplesho
0
120
How Smalltalker Works
newapplesho
0
100
愛せよ、さもなくば捨てよ。
newapplesho
0
120
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう後編
kouyuume
0
180
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
440
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1.3k
AIコーディングエージェント(NotebookLM)
kondai24
0
180
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
26
22k
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
20k
AWS CDKの推しポイントN選
akihisaikeda
1
240
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
210
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
150
WebRTC と Rust と8K 60fps
tnoho
2
2k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Unsuck your backbone
ammeep
671
58k
Designing for Performance
lara
610
69k
Bash Introduction
62gerente
615
210k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
96
Facilitating Awesome Meetings
lara
57
6.7k
Transcript
SmalltalkͱܧଓతΠϯςάϨʔγϣϯ Continuous Integration for Pharo Smalltalk Sho Yoshida / @newapplesho
SORABITO Inc. 30 October 2015
ຊͷςʔϚ ܧଓతΠϯςάϨʔγϣϯ ϏϧυɺςετͳͲͷఆظతͰ෮Մೳͳ࡞ۀΛࣗಈԽ͠ ܁Γฦ࣮͠ࢪ͢Δ͜ͱͰলྗԽΛਤΔ͜ͱ
ܧଓతΠϯςάϨʔγϣϯͷϝϦοτ ܧଓతσϦόϦʔͷ࣮ݱ ܧଓతʹσϦόϦʔ͢Δ͜ͱͰސ٬ͷՁͷఏڙճΛ૿͢
SmalltalkerͷΈͳ͞ΜͷΞϯέʔτ • ιʔείʔυͲ͏ͬͯཧ͍ͯ͠·͔͢ • imageϏϧυͲ͏͍ͬͯ·͔͢ • ൿͷΠϝʔδ࡞ΓΛ͍ͯ͠·ͤΜ͔ νʔϜ։ൃʹ͍ͭͯߟ͑Α͏
Smalltalkͷιʔείʔυཧʹ͍ͭͯ • ʮ͔Βͳ͍͜ͱSmalltalkʹฉ͚ʯͱ͍͏Smalltalk • ͔ͩΒίϝϯτυΩϡϝϯτΛ͋·Γ͞ͳ͍Smalltalker • υΩϡϝϯτΛݟ͚ͭͯݹ͍ • ҰମͲ͏ͳ͍ͬͯΔΜͩ
ιʔείʔυཧ • Smalltalkͷॲཧܥͨ͘͞Μ͋Γཧํ๏όϥόϥ • Pharo Smalltalkʹ͍ͭͯઆ໌͠·͢ʢԼهదͰ͢ɻ͢Έ·ͤΜʣ 2015 2010ࠒ 2012ࠒ 2014
2002? MetacelloʹΑΔฏఆ FileTreeͷొ Pharo3.0 Released FileTreeඪ४උ Pharo4.0 Released Monticello(MCZ)ͷग़ݱ Squeak Released ύοέʔδͷಋೖ?? 2008 MCZͷීٴͱϦϙδτϦͷཚཱ GitHubͷ౸དྷ 1996? Pharo Released MCZࠞಱ࣌ͷ౸དྷ 2013? SmalltalkHubొʁ Gitग़ݱ 2005? FileTree+GitHubͰͷύοέʔδެ։͕૿͑ͯ͘Δͣ Gitཧئ࣌ʁ GitHub Enterpriseఏڙ։࢝ Smalltalkͱग़ձ͏
PharoͷલͷSqueakͰ • ύοέʔδʢιʔείʔυ܈ʣϑΥʔϚοτͱͯ͠SARܗ͕ࣜ͋ͬͨ • SqueakMapͱ͍͏ΣϒϕʔεͷύοέʔδཧͰΘΕ͍ͯΔ • Ͱ࡞Δͷख࡞ۀͰେม ৄ͘͠Γ͍ͨํʮSqueakࣗ༝ࣗࡏ http://swikis.ddo.jp/squeak/13ʯΛࢀߟʹ͢ΔͱΑ͍Ͱ͠ΐ͏ http://map.squeak.org
Monticelloͷग़ݱ • MCZܗࣜͷύοέʔδϑΝΠϧཧπʔϧ • όʔδϣϯཧՄೳɺࠩ֬ೝ͕Մೳ • ϩʔΧϧσΟϨΫτϦ͓ΑͼFTP, HTTPܦ༝Ͱ֎෦ʹอՄೳ खಈ࡞ͷSARܗࣜΑΓָͰศརɻ Squeakࣗ༝ࣗࡏΛಡΉͱ࣌ͷظײ͕Θ͔Δ
MCZͷීٴͱϦϙδτϦͷཚཱ • MCZීٴ͠Squeak, PharoͰσϑΥϧτͷύοέʔδཧͱͳͬͨ • MCZܗࣜͷϑΝΠϧΛҰൠެ։͢ΔͨΊͷϦϙδτϦαʔόʔ͕ొ • SqueakSource,SqueakSource3ྑSqueakSource͕ཚཱͨ͠ Ͳ͜ʹԿ͕͓͍ͯ͋Δͷ͔ෆ໌ɻ SmalltalkೖऀओཁͳϦϙδτϦΛΒͳ͍ͱ
ཉ͍͠ύοέʔδ͕ݟ͚ͭΒΕͳ͍Մೳੑ͕͋Δɻ ݱࡏ͜ͷղܾ͞Ε͍ͯͳ͍ SmalltalkͩΊࣗຫɹhttp://www.slideshare.net/umejava/smalltalk-38297600
MCZࠞಱ࣌ͷ౸དྷ • MCZܗࣜศརͰ͕͋ͬͨܽଟ͔ͬͨ • ύοέʔδؒͷґଘؔղܾ͕͍͠ʢࣗͷύοέʔδʹೖΕΔߥٕ͕ ͋ͬͨΓώυ͔ͬͨʣ • ॲཧܥɺॲཧܥͷόʔδϣϯΛࢦఆͰ͖ͳ͍ʢʮಈ͚OKʂʯͬͯϊϦɻ ͍͍ͷ͔ʁʣ •
࠷৽Խ৬ਓٕʢʮ͜Εͩʂʯͬͯͳײ͡ͰMCZϑΝΠϧΛखಈϩʔυʣ ࢲֶੜͷࠒSmalltalkΠϝʔδ࡞Γ৬ਓʹͳ͍ͬͯͨ mario https://www.flickr.com/photos/64738468@N00/31049645/
MetacelloʹΑΔฏఆ • MonticelloͷͰ͋ͬͨύοέʔδґଘॲཧܥ͝ͱͷ੍ޚΛՄೳʹ͢Δ γεςϜ • MetacelloͷొʹΑΓύοέʔδґଘͰΤϥʔʹͳΔ͜ͱ͕গͳ͘ͳͬͨ • ͦͯ͠Πϝʔδ࡞Γ৬ਓ৬Λࣦͬͨͣʢ͜Ε͕ग़ͨॳSmalltalkͱແԑͳࣄΛ͍͚ͯͨ͠Ͳwʣ Α͘ݟ͔͚ΔConfigurationOfXX ͕MetacelloΛهड़͢ΔΫϥε
Metacelloͷ͍ํୈ23ճSmalltalkษڧձͷࢿྉΛࢀߟ http://www.smalltalk-users.jp/Home/gao-zhi/dai23kaismalltalkbenkyoukai Always Shootingɹhttps://www.flickr.com/photos/alwaysshooting/15315019007/
GitHubͷ౸དྷ • Metacello͕ొͨ͜͠ΖʹGitHub͕·Γͭͭ͋ͬͨ • ͔͠͠ͳ͕ΒSmalltalkerಠࣗιʔείʔυཧํ๏Λଓ͚ͨ • MetacelloొҎ߱ϓϥΠϕʔτͳϓϩδΣΫτཧ͓Αͼଟਓ։ൃͰ Λ๊͍͑ͯͨ • ͋ͷೣ͕͜Θ͔ͬͨͷ͔͠Εͳ͍
MCZͰͷӡ༻ͷ • MCZܗࣜιʔείʔυΛzipܗࣜͰΞʔΧΠϒͨ͠ͷ • MCZϑΝΠϧͦͷ··ΛGitͰཧͯ͠خ͘͠ͳ͍ • ϓϥΠϕʔτͳϓϩδΣΫτͷ߹SqueakSource͕ඞཁʹͳΔ • ϒϥϯνཧ͕Ͱ͖ͳ͍ •
Pull Request͕͑ͳ͍ • ιʔείʔυΛݟΔͨΊͷSmalltalk͕͍ͭ͋ΔͱݶΒͳ͍
Git͍͍ͨ GitʹಌΕࡾઍཬ GitཧΛಌΕଓ͚ͨSmalltalker flowcomm https://www.flickr.com/photos/flowcomm/4372513286/
FileTreeͷొ ࢀߟࢿྉ: http://www.slideshare.net/esug/of-metacello-git-scripting-and-things FileTreeͱ Monticello repository for directory-based Monticello packages
enabling the use of git, svn, etc. for managing Smalltalk source code. https://github.com/dalehenrich/filetree ΑΓ ιʔείʔυΛgitͰཧ͢ΔͨΊͷ σΟϨΫτϦϕʔεͷιʔείʔυཧπʔϧ ൃݟͨ͠ͱ͖Pharo2.0ʹଈ࠲ʹΠϯετʔϧͨ͠
MCZͩͱɾɾɾ Smalltalk͕ͳ͍ͱݟ͑ͳ͍Α
package class method properties method source FileTreeͩͱ ݟ͑Δͧɺࢲʹݟ͑Δͧ
FileTreeͱGitཧ ݟ͑Δͧɺࢲʹݟ͑Δͧ
FileTreeͷϝϦοτ • ϑΝΠϧϕʔεཧͳͷͰGitͷଞݴޠͷίʔυཧํ๏͕ར༻Մೳ • ϓϥΠϕʔτSqueakSourceͷಋೖ͕ෆཁʹͳΓཧίετݮ • ϒϥϯν͕͑Δ • Pull Request͕͑Δ
• Pharo 3.0͔Βඪ४උ
FileTreeͷ͍ํʢอଘฤʣ • Monticello BrowserΛ։͖ɺอଘ͍ͨ͠ύοέʔδΛબ • [+Repository]ΛΫϦοΫɺ[filetree://]Λબͯ͠อଘ͢ΔσΟϨΫτϦΛબ • Monticelloͱҧ͍όʔδϣϯຖʹιʔείʔυ͕ग़ྗ͞Εͳ͍ͷͰҙ ʢsaveͨ͠Βgit,mercurialͰόʔδϣϯཧΛ͢Δʣ ؆୯Ͱ͢Ͷ
FileTreeͷ͍ํʢಡΈࠐΈฤʣ • ಡΈࠐΉࡍʹBaselineΛ͔ͭͬͯಡΈࠐΉ • BaselineFileTreeͰอଘͨ͠ύοέʔδؒґଘΛهड़ • Metacelloͷ͕ࣝ͋Ε؆୯ʹهड़Մೳ • Metacelloͷbaseline:͚ͩΛऔΓग़͠ͷΛߟ͑ΔͱΘ͔Γ͍͢ BaselineOfXX
͕BaselineΛهड़͢ΔΫϥε
Baselineͷྫ
BaselineΛͬͨಡΈࠐΈ | pathToPackageDirectory | "edit to match the path to
your chosen package directory" pathToPackageDirectory := '/YOUR-GIT-DIRECTORY-PATH/sendgrid-smalltalk/pharo-repository/'. Metacello new baseline: 'SendGrid'; repository: 'filetree://', pathToPackageDirectory; load. SendGrid Smalltalkͷ߹ https://github.com/newapplesho/sendgrid-smalltalk
FileTree + Baseline + Git • BaselineͷίʔυFileTreeͰอଘ͢ΕΧϨϯτϒϥϯνͷιʔείʔυ͕ ಡΈࠐΊΔ • όʔδϣϯཧGitʹͤΕOK
• ϏδωεͳͲͷϓϥΠϕʔτϓϩδΣΫτͷཧʹͱͯศར
FileTreeGitHubαϙʔτ • FileTreeʹGitHubʹެ։͞ΕͨιʔείʔυΛclone͢Δػೳ͋Δ • औಘ͢Διʔείʔυcommitͷࣝผ൪߸ͰࢦఆՄೳ • ConfigurationOfͷversionϝιουʹgithubͷύεΛࢦఆ͢Δ • ར༻͢ΔʹBaselineʹGitཧͷύοέʔδͷґଘؔʹهड़ͯ͠ίϛοτ͢Δ ඞཁ͕͋Δ
• GitHub͔Βclone͢ΔConfigurationOfΛSmalltalkHubͳͲʹެ։͢Εཚཱ࣌ ΓΕΔ
SendGrid Smalltalkͷྫ github://<user>/<project>[:SHA][/<path>] ͱ͍͏ϧʔϧʹͳ͍ͬͯΔ
SendGrid Smalltalkͷྫ github://newapplesho/sendgrid-smalltalk:ce676f2225374264108042c4c734fe116b3c5080/pharo-repository
GitHub͔Βऔಘ͢ΔConfigurationOfΛར༻ github://newapplesho/sendgrid-smalltalk:ce676f2225374264108042c4c734fe116b3c5080/pharo-repository ϩʔΧϧʹGitHubͷιʔείʔυΛऔಘ͢Δ
SendGrid Smalltalkͷྫ ConfigurationOfͷΈSmalltalkHubʹެ։
FileTreeͰͷӡ༻ • ίʔυ͕ࡉׂ͔͘͞Ε͍ͯΔͨΊίʔυϨϏϡʔͣ͠Β͍ • ৗʹproperties.jsonͳͲͷੜ͞ΕΔͨΊϑΝΠϧͷίϯϑϦΫτ͕ൃੜ͠ ͍͢ FileTreeͭΒ͍ɻॿ͚ͯSuper Smalltalker
Stree • കᖒ͞Μ(@umejava)࡞ FileTreeͷ֦ுػೳ • http://smalltalkhub.com/#!/~MasashiUmezawa/STree • CypressͱҟͳΓΫϥε୯ҐͰϑΝΠϧׂ͕͞Ε͍ͯΔ • Ϋϥε୯ҐͷϑΝΠϧग़ྗͰग़ྗॱং͕౷Ұ͞Ε͍ͯΔͨΊίʔυϨϏϡʔ
͕͍͢͠
Streeͷinstallํ๏ Gofer it url: 'http://smalltalkhub.com/mc/MasashiUmezawa/STree/main'; package: 'STree'; load.
FileTreeͱStreeͷൺֱ
FileTreeͱStreeͷൺֱ
builder • Pharo imageΛJenkinsΛ༻͍ͯࣗಈϏϧυ͢Δڥ • Lukas Rengglis࡞ • https://github.com/renggli/builder •
scriptsͷίʔυΛ࣮ߦ͢Δ͜ͱͰimageΛࣗಈϏϧυՄೳ
builderͷ Ͱಈ͔ͳ͍ ߄ͯͳ͍ɻ͍ͭͷ͜ͱ
builder (newapplesho൛) • https://github.com/newapplesho/builder • builderಈ͔ͤΔΑ͏ʹ͢ΔΑ͏ʹมߋ • scriptsϑΝΠϧݫબͨ͠ͷ͚ͩΛcommit • ݱঢ়CentOS
6༻ɺࠓޙUbuntuʹରԠ༧ఆ • ηοτΞοϓΛ؆୯ʹͰ͖ΔγΣϧ४උத SmalltalkͷϦϙδτϦͷղܾΛࢦ͠·͢
builder (newapplesho൛)ͷσΟϨΫτϦߏ • oneclick CentOS 6.5༻Pharo VMΛ֨ೲ • images ࣗಈϏϧυ
• scripts ࣗಈϏϧυͰ࣮ߦ͢ΔίʔυΛ֨ೲ
builderͷ͍ํ • gitίϚϯυͰbuilderΛΫϩʔϯ • builderͷimageʹ࠷৽ͷPharo imageΛ֨ೲ͢Δ • γΣϧ git clone
git://github.com/newapplesho/builder.git build.sh -i [Πϝʔδ໊] -s [script໊] -o [ग़ྗΠϝʔδ໊]
builderσϞ • builderͰϏϧυͯ͠ΈΔ • builderͷ৽نϏϧυΛ࡞Δ • builderͰࣗಈςετΛͯ͠ΈΔ
४උͬͨ ͋͞SmalltalkΛॻ͜͏ paul bica https://www.flickr.com/photos/dexxus/5820866907/