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
Continuous Integration for Pharo Smalltalk
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
120
Continuous Integration for Pharo Smalltalk Part 2 (Travis CI)
newapplesho
0
220
今時なウェブ開発をSmalltalkでやってみる?
newapplesho
0
180
Elasticsearch for Pharo Smalltalk
newapplesho
0
170
SourceCode Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
newapplesho
0
150
RUNNING Smalltalk - 実践Smalltalk
newapplesho
0
130
AWS SDK for Smalltalk
newapplesho
0
130
How Smalltalker Works
newapplesho
0
110
愛せよ、さもなくば捨てよ。
newapplesho
0
130
Other Decks in Programming
See All in Programming
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
550
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
660
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
390
CSC307 Lecture 14
javiergs
PRO
0
470
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
870
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
420
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
270
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
530
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
410
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
270
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
370
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
470
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
82
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
140
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
110
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Agile that works and the tools we love
rasmusluckow
331
21k
Bash Introduction
62gerente
615
210k
Writing Fast Ruby
sferik
630
63k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
84
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/