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
近年の OSS 開発における CI 選択のベストプラクティス
Search
Pine Mizune
December 10, 2016
Programming
4.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
近年の OSS 開発における CI 選択のベストプラクティス
YAPC::Hokkaido 2016 SAPPORO で発表した資料です。
http://yapcjapan.org/2016hokkaido/
Pine Mizune
December 10, 2016
More Decks by Pine Mizune
See All by Pine Mizune
多言語対応と絵文字ジェネレーター / i18n of Emoji Generator
pine
0
900
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
2k
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
710
Lerna による明示的疎結合アーキテクチャ
pine
1
690
CircleCI 2.0 x JavaScript
pine
3
580
Perl 卒業式
pine
0
380
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
540
Emoji Generator meets Browser Extensions
pine
1
3k
yarn VS. npm@2 VS. npm@3
pine
3
1.2k
Other Decks in Programming
See All in Programming
FreeBSDでZabbixを動かす
kenkino
0
360
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
AWSに止められる覚悟してますか?
morizo_1984
2
520
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
160
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
380
SREの越境 / SRE Collaboration
y0hgi
2
300
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
640
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
気持ちぃ〜角丸 Squircle
ryu1013
0
130
dotNET_vulnclicker_intro.pdf
deka_morita
0
130
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Are puppies a ranking factor?
jonoalderson
2
4k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
ラッコキーワード サービス紹介資料
rakko
1
5.2M
Testing 201, or: Great Expectations
jmmastey
46
8.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
400
Optimising Largest Contentful Paint
csswizardry
37
4k
Typedesign – Prime Four
hannesfritz
42
3.2k
Optimizing for Happiness
mojombo
378
71k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
Transcript
1JOF.J[VOF !QJOF :"1$)PLLBJEP ۙͷ044։ൃʹ͓͚Δ $*બͷϕετϓϥΫςΟε
.Z1SPpMFશൠ q )/1JOF.J[VOF ͽͶ o (JU)VC!QJOF o 5XJUUFS!QJOF q ॴଐ
ג ϞόΠϧϑΝΫτϦʔ o ৽ଔ ֶ෦ଔ o ιʔγϟϧΞϓϦαʔόʔαΠυ 1FSM .Z1SPpMF
q OQNQJOF q .BWFOQJOFN[ .Z1SPpMFr044׆ಈ q $1"/1*/& o %FWFM$PWFS3FQPSU$PEFDPW o
)BTI6UJM1JDL શϞδϡʔϧ શϞδϡʔϧ શύοέʔδ ࣳΛછΊΔͷ͕ੜ͖ߕ൹ͳλΠϓʜ .Z1SPpMF
.Z1SPpMFrίϛϡχςΟ׆ಈ .Z1SPpMF ҬܥษڧձͷӡӦ ౦ژ o (PUBOEBKTd o
(PUBOEBNPCJMF o $SZTUBM+1d ֤छษڧձͷࢀՃɾൃද o +BWB4DSJQU 1FSM FUD o :"1$ॳొஃ ࢀՃճ
ࠓɺ 1FSMͱ044ͱ$* ͷΛ͠·͢ɻ *OUSPEVDUJPO
େنαʔϏεͰͷ +FOLJOTͷӡ༻ํ๏ ͱ͔ͷ͠·ͤΜɻ ˞͝ҙ͍ͩ͘͞ *OUSPEVDUJPO
औΓ্͛ΔɾऔΓ্͛ͳ͍ q $*Ͱ044։ൃΛָ͘͢͠Δʹ q 1FSMͰ$*ճ͢߹ͷϋϚΓॴ औΓ্͛Δ औΓ্͛ͳ͍ q ࣾͷ$*αʔόʔͷӡ༻ํ๏ q
ςετΛߴԽ͢Δ5JQT *OUSPEVDUJPO
ظ͢Δλʔήοτ q 1FSMͰ044Λ։ൃ͍ͯ͠Δਓ q ଞݴޠͰ044։ൃΛ͍ͯ͠Δਓ 044։ൃΛ͍ͯ͠Δਓ q 044։ൃʹڵຯ͕͋Δਓ q 4BB4ϕʔεͷ$*ΛۀʹऔΓೖΕ͍ͨਓ
044։ൃΛ͍ͯ͠ͳ͍ਓ *OUSPEVDUJPO
ຊτʔΫͷΰʔϧ q ۙͷ$*αʔϏεʹ͍ͭͯجૅ͕ࣝͭ͘ q ϓϩμΫτʹԠͯ͡దͳ$*͕બͰ͖Δ q ָ͘͠044։ൃ͕Ͱ͖ΔΑ͏ʹͳΔ *OUSPEVDUJPO
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར 5BCMFPG$POUFOUT
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ 5BCMFPG$POUFOUT
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར
$*ͱԿ͔ $*$POUJOVPVT*OUFHSBUJPO – ຊޠܧଓతΠϯςάϨʔγϣϯ ओʹϓϩάϥϚʔͷΞϓϦέʔγϣϯ࡞࣌ͷ࣭վળ ೲظͷॖͷͨΊͷश׳ͷ͜ͱ ڱٛʹϏϧυςετɺΠϯεϖΫγϣϯ ͳͲΛܧଓతʹ࣮ߦ͍ͯ͘͜͠ͱΛҙຯ͢Δ
ࢀর8JLJQFEJBʰܧଓతΠϯςάϨʔγϣϯʱ
$*ͱԿ͔ $*$POUJOVPVT*OUFHSBUJPO – ຊޠܧଓతΠϯςάϨʔγϣϯ ओʹϓϩάϥϚʔͷΞϓϦέʔγϣϯ࡞࣌ͷ࣭վળ ೲظͷॖͷͨΊͷश׳ͷ͜ͱ ڱٛʹϏϧυςετɺΠϯεϖΫγϣϯ ͳͲΛܧଓతʹ࣮ߦ͍ͯ͘͜͠ͱΛҙຯ͢Δ
ࢀর8JLJQFEJBʰܧଓతΠϯςάϨʔγϣϯʱ 広義の CI ≠ テスト 品質改善が見込まれる習慣、全般を指す
$*ͱԿ͔ $*$POUJOVPVT*OUFHSBUJPO – ຊޠܧଓతΠϯςάϨʔγϣϯ ओʹϓϩάϥϚʔͷΞϓϦέʔγϣϯ࡞࣌ͷ࣭վળ ೲظͷॖͷͨΊͷश׳ͷ͜ͱ ڱٛʹϏϧυςετɺΠϯεϖΫγϣϯ ͳͲΛܧଓతʹ࣮ߦ͍ͯ͘͜͠ͱΛҙຯ͢Δ
ࢀর8JLJQFEJBʰܧଓతΠϯςάϨʔγϣϯʱ ソフトウェア開発で一般的に使われる定義 自動化することで、繰り返し適応できる
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར
$*ͷྨ ࣗಈϏϧυɾςετ q هड़͞ΕͨࣗಈςετΛ࣮ߦ q ܧଓతʹςετΛ࣮ߦ͢Δ͜ͱͰɺݮͱ࣭ͷ୲อΛࢦ͢ ੳɾϨϏϡʔ q ίʔυΛنଇʹैͬͯ੩తղੳ q
ίʔυϨϏϡʔͷखؒΛݮΒ͠ɺݮͱ্࣭Λࢦ͢
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར
$*πʔϧɾαʔϏεͷ۩ମྫ ࣗಈϏϧυɾςετ ੳɾϨϏϡʔ Ϋ ϥ υ ࣗ લ
ϗ ε τ
$*πʔϧɾαʔϏεͷ۩ମྫ ࣗಈϏϧυɾςετ ੳɾϨϏϡʔ Ϋ ϥ υ ࣗ લ
ϗ ε τ 取り上げるのはクラウド型の CI (小規模 OSS で自前でサーバー持つ必要ない…)
࣍ લ 近年の OSS 開発における CI について q $*ͱԿ͔ q $*ͷྨ
q $*πʔϧɾαʔϏεͷ۩ମྫ q 044։ൃͰ$*αʔϏεΛར༻͢Δར
044Ͱ$*αʔϏεΛར༻͢Δར جຊແྉͰ͑Δ q 044Ͱͷར༻جຊແྉͰ͑Δ q ར༻Ͱ͖Δػೳ͕ɺ༗ྉ൛ͱ΄΅มΘΒͳ͍߹ଟ͍ (JU)VCͱͷ࿈ܞ͕ॆ࣮͍ͯ͠Δ q 044ͷίʔυ(JU)VC͕ΘΕΔ͜ͱ͕ଟ͍ q
3&"%.&ͷόοδ͕Ұഋʹͳָ͍ͬͯ͠
·ͱΊ ։ൃΛศརʹ͢Δͷ͕$* q ςετΛఆظతʹΒͤ044ͷ࣭Λ্ q $*ͷόοδΛషͬͯ։ൃϞνϕʔγϣϯΛҡ࣋ 044ͱ$*αʔϏε૬ੑ͕ྑ͍ q ແྉͰศརͳαʔϏεΛड͚Α͏
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
1FSMͷςετख๏ use strict; use warnings; use Test::More; subtest basic =>
sub { ok 1; }; done_testing; UϑΝΠϧʹςετΛهड़ ςετΛ࣮ߦ $ prove -lv t/basic.t ͓ΈͷϥΠϒϥϦͰ
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
$1"/5FTUFST
$1"/5FTUFST $1"/5FTUFSTͱ q ༗ࢤͷςελʔ͕$1"/ϞδϡʔϧΛςετ q ෳόʔδϣϯYෳڥͰͷςετ݁Ռ͕·ͱ·͍ͬͯΔ o 1FSMW o
1FSMW o 1FSMW o 1FSMW o -JOVY o 8JOEPXT o NBD04 o 'SFF#4% Έ߹Θͤ
$1"/5FTUFST $1"/5FTUFSTͷϝϦοτ q $1"/ʹΞοϓϩʔυ͢Δ͚ͩͰউखʹςετ͞ΕΔ q ͍͠ڥͰͷςετ࣮ߦ͞ΕΔ $1"/5FTUFSTͷσϝϦοτ q ͙ʹ݁Ռ͕͔Βͳ͍ q
كʹཧෆਚͳ'"*-͕͋Δ
$1"/5FTUFST $1"/5FTUFSTͷϝϦοτ q $1"/ʹΞοϓϩʔυ͢Δ͚ͩͰউखʹςετ͞ΕΔ q ͍͠ڥͰͷςετ࣮ߦ͞ΕΔ $1"/5FTUFSTͷσϝϦοτ q ͙ʹ݁Ռ͕͔Βͳ͍ q
كʹཧෆਚͳ'"*-͕͋Δ Cygwin 環境とか用意したくないし… わざわざ CI で回すほどでもないし…
$1"/5FTUFST $1"/5FTUFSTͷϝϦοτ q $1"/ʹΞοϓϩʔυ͢Δ͚ͩͰউखʹςετ͞ΕΔ q ͍͠ڥͰͷςετ࣮ߦ͞ΕΔ $1"/5FTUFSTͷσϝϦοτ q ͙ʹ݁Ռ͕͔Βͳ͍ q
كʹཧෆਚͳ'"*-͕͋Δ テストした環境が、管理下にないために発生…
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
1FSMΛ$*Ͱςετ͢Δ 1FSMͷ$*5SBWJT$*͕Φεεϝ q 1FSMΛެࣜʹαϙʔτ q ෳ1FSMόʔδϣϯͰͷςετ͕Մೳ ະରԠͳ$*αʔϏεଟ͍ q ৽͠ΊͷαʔϏεͰαϙʔτ͞Ε͍ͯͳ͍ q
ެࣜʹαϙʔτ͍ͯ͠ͳ͍͚ͩͰɺར༻Մೳ
1FSMΛ$*Ͱςετ͢Δ 1FSMͷ$*5SBWJT$*͕Φεεϝ q 1FSMΛެࣜʹαϙʔτ q ෳ1FSMόʔδϣϯͰͷςετ͕Մೳ ະରԠͳ$*αʔϏεଟ͍ q ৽͠ΊͷαʔϏεͰαϙʔτ͞Ε͍ͯͳ͍ q
ެࣜʹαϙʔτ͍ͯ͠ͳ͍͚ͩͰɺར༻Մೳ 参考程度に対応状況の一覧を調べてみました
ࢀߟ$*ͷ1FSMαϙʔτͷݱঢ় 5SBWJT $* $JSDMF $* "QQ 7FZPS 8FSDLFS 4IJQ QBCMF
$PEF TIJQ 4FNB QIPSF %SPOF .BHOVN $* 4OBQ$* 7FYPS 1FSM ˓ ˓ 3VCZ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1ZUIPO ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1)1 ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ /PEF ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ +BWB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 4DBMB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ (P ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˞αʔϏεͰެࣜʹαϙʔτ͍ͯ͠Δͱ໌ݴ͕͋ΔՕॴʹ˓Λهࡌ
ࢀߟ$*ͷ1FSMαϙʔτͷݱঢ় 5SBWJT $* $JSDMF $* "QQ 7FZPS 8FSDLFS 4IJQ QBCMF
$PEF TIJQ 4FNB QIPSF %SPOF .BHOVN $* 4OBQ$* 7FYPS 1FSM ˓ ˓ 3VCZ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1ZUIPO ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1)1 ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ /PEF ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ +BWB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 4DBMB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ (P ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˞αʔϏεͰެࣜʹαϙʔτ͍ͯ͠Δͱ໌ݴ͕͋ΔՕॴʹ˓Λهࡌ 世知辛い世の中ですね…
ࢀߟ$*ͷ1FSMαϙʔτͷݱঢ় 5SBWJT $* $JSDMF $* "QQ 7FZPS 8FSDLFS 4IJQ QBCMF
$PEF TIJQ 4FNB QIPSF %SPOF .BHOVN $* 4OBQ$* 7FYPS 1FSM ˓ ˓ 3VCZ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1ZUIPO ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 1)1 ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ /PEF ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ +BWB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ 4DBMB ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ (P ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˓ ˞αʔϏεͰެࣜʹαϙʔτ͍ͯ͠Δͱ໌ݴ͕͋ΔՕॴʹ˓Λهࡌ 最もサポートされているのは Ruby でした
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ 5BCMFPG$POUFOUT
5SBWJT$*
5SBWJT$* q 044ͷςετͰΑ͘ΘΕΔฮ$* o 5SBWJT$*͕ແ͚Εɺࠓͷ8FCແ͍Ϩϕϧ q දతͳϓϩδΣΫτ o K2VFSZ 3VCZPO3BJMT
"NPO FUD 5SBWJT$*ͱ q -JOVY.BD049྆ରԠ q #VJME.BUSJY͕ΊΔ ͦͷଞͷಛ ޙ΄Ͳղઆ
5SBWJT$*ͷ͍ํ 5SBWJT$*ͰςετΛ࣮ߦ͢Δ·Ͱ (JU)VCΞΧϯτͰϩάΠϯ͠࿈ܞ ςετରͷϨϙδτϦΛՃ ϨϙδτϦʹઃఆϑΝΠϧΛՃ HJUQVTIʹରͯ͠ςετ͕࣮ߦ
࿈ܞ
5SBWJT$*ͷ͍ํ ઃఆϑΝΠϧ USBWJTZNM language: perl sudo: false perl: -
"5.12” - "5.16” - "5.20” - "5.24” notifications: slack: - secure: ”XXXX"
5SBWJT$*ͷ͍ํ ઃఆϑΝΠϧ USBWJTZNM language: perl sudo: false perl: -
"5.12” - "5.16” - "5.20” - "5.24” notifications: slack: - secure: ”XXXX" 複数 Perl バージョンをまとめてテストできる
5SBWJT$*ͷ͍ํ ઃఆϑΝΠϧ USBWJTZNM language: perl sudo: false perl: -
"5.12” - "5.16” - "5.20” - "5.24” notifications: slack: - secure: ”XXXX" ビルド結果を Slack に投稿するように連携できる
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
$PEFDPW
$PEFDPW q ΧόϨοδͷՄࢹԽΛߦ͑ΔαʔϏε q (JU)VC࿈ܞ͕େมศར o (JU)VCͷιʔείʔυ্ʹදࣔͰ͖Δ $PEFDPWͱ LBSVQBOFSVSB"OJLJ"OJLJQNΑΓ
$PEFDPW q ΧόϨοδͷՄࢹԽΛߦ͑ΔαʔϏε q (JU)VC࿈ܞ͕େมศར o (JU)VCͷιʔείʔυ্ʹදࣔͰ͖Δ $PEFDPWͱ LBSVQBOFSVSB"OJLJ"OJLJQNΑΓ
カバレッジ (網羅率) = テスト対象のコードがテストでどれだけ実行されたか
$PEFDPW q ΧόϨοδͷՄࢹԽΛߦ͑ΔαʔϏε q (JU)VC࿈ܞ͕େมศར o (JU)VCͷιʔείʔυ্ʹදࣔͰ͖Δ $PEFDPWͱ LBSVQBOFSVSB"OJLJ"OJLJQNΑΓ
類似サービスの Coveralls には無い機能
$PEFDPW q ΧόϨοδͷՄࢹԽΛߦ͑ΔαʔϏε q (JU)VC࿈ܞ͕େมศར o (JU)VCͷιʔείʔυ্ʹදࣔͰ͖Δ $PEFDPWͱ LBSVQBOFSVSB"OJLJ"OJLJQNΑΓ
GitHub の Web 上から直接結果が見れて、非常に便利
$PEFDPWͷ͍ํ ΧόϨοδΛܭଌ͢Δ $ cpanm Devel::Cover $ perl Build.PL && ./Build
build $ cover -test q %FWFM$PWFSϞδϡʔϧΛ͏ q ΧόϨοδΛଌఆ͢Δͱςετ͕͘ͳΔͷ͕ ଌఆ࣌ʹ࣮ߦ͢ΔίϚϯυ
$PEFDPWͷ͍ํ ΧόϨοδΛ$PEFDPWૹ৴͢Δ $ cpanm Devel::Cover::Report::Codecov $ cover -report codecov q
Devel::Cover::Report::CodecovϞδϡʔϧΛ͏ q 5SBWJT$*ͳͲͰΧόϨοδଌఆޙʹૹ৴͢Δ ૹ৴࣌ʹ࣮ߦ͢ΔίϚϯυ
Perl の OSS 開発における CI について q 1FSMͷςετख๏ q CPAN Testers q 1FSMͷ$*αϙʔτͷݱঢ়
q ෳ1FSMόʔδϣϯͰͷ$* q ΧόϨοδͷՄࢹԽ q 8JOEPXTNBD04Ͱͷ$* ࣍ ޙ
8JOEPXTNBD04Ͱͷ$* -JOVYҎ֎ͷڥͰͷςετඞཁ q ඇରԠڥͱͯ͠໌͍ࣔͯ͠ͳ͚Εɺςετ͖͢ o ಈ͔ͳ͍ͷڥґଘͷίʔυ͕͋Δ͔Β o 'JMF4QFDͳͲɺґଘΛٵऩ͢ΔϥΠϒϥϦΛ͓͏ 8JOEPXT͔Β͏ϢʔβʔډΔͷ͔
ࢀߟIUUQTHJUIVCDPN[LBUUBMLTCMPCNBTUFSOPEFGFTUTMJEFTNECFUUFSXJOEPXTTVQQPSU q OQNͷ߹ɺμϯϩʔυͷ8JOEPXT͔Β o $1"/ͷ߹ɺײ֮ͱͯͬ͠ͱগͳ͍ͱࢥ͏͕
"QQ7FZPS
"QQ7FZPS "QQ7FZPSͱ q 8JOEPXTͰςετՄೳͳ$*αʔϏε o ࣮ଶ8JOEPXT4FSWFS 8JOEPXT૬ q
044։ൃແྉͰར༻Մೳ q ࣗલͰ1FSMΛΠϯετʔϧͯ͠ར༻
"QQ7FZPSͷ͍ํ install: - ps: Invoke-WebRequest -Uri http://strawberryperl.com/download/5.24.0.1/strawberry-perl-5.24.0.1-64bit .msi -OutFile strawberry-perl-5.24.0.1-64bit.msi
- ps: Start-Process msiexec.exe -ArgumentList @("/package", "strawberry- perl-5.24.0.1-64bit.msi", "/qn", "INSTALLDIR=C:\strawberry") –Wait - SET PATH=C:¥strawberry¥c¥bin;C:¥strawberry¥perl¥site¥bin;C:¥strawberry ¥perl¥bin;%PATH% - cpanm --notest --quiet Carton - carton install --without develop test_script: - SET PATH=%CD%¥local¥bin;%PATH% - SET PERL5LIB=%CD%¥local¥lib¥perl5;%PERL5LIB% - perl Build.PL - Build - Build test ઃఆϑΝΠϧ BQQWFZPSZNM
"QQ7FZPSͷ͍ํ install: - ps: Invoke-WebRequest -Uri http://strawberryperl.com/download/5.24.0.1/strawberry-perl-5.24.0.1-64bit .msi -OutFile strawberry-perl-5.24.0.1-64bit.msi
- ps: Start-Process msiexec.exe -ArgumentList @("/package", "strawberry- perl-5.24.0.1-64bit.msi", "/qn", "INSTALLDIR=C:\strawberry") –Wait - SET PATH=C:¥strawberry¥c¥bin;C:¥strawberry¥perl¥site¥bin;C:¥strawberry ¥perl¥bin;%PATH% - cpanm --notest --quiet Carton - carton install --without develop test_script: - SET PATH=%CD%¥local¥bin;%PATH% - SET PERL5LIB=%CD%¥local¥lib¥perl5;%PERL5LIB% - perl Build.PL - Build - Build test ઃఆϑΝΠϧ BQQWFZPSZNM PowerShell のコマンドで StrawberryPerl をダウンロード
"QQ7FZPSͷ͍ํ install: - ps: Invoke-WebRequest -Uri http://strawberryperl.com/download/5.24.0.1/strawberry-perl-5.24.0.1-64bit .msi -OutFile strawberry-perl-5.24.0.1-64bit.msi
- ps: Start-Process msiexec.exe -ArgumentList @("/package", "strawberry- perl-5.24.0.1-64bit.msi", "/qn", "INSTALLDIR=C:\strawberry") –Wait - SET PATH=C:¥strawberry¥c¥bin;C:¥strawberry¥perl¥site¥bin;C:¥strawberry ¥perl¥bin;%PATH% - cpanm --notest --quiet Carton - carton install --without develop test_script: - SET PATH=%CD%¥local¥bin;%PATH% - SET PERL5LIB=%CD%¥local¥lib¥perl5;%PERL5LIB% - perl Build.PL - Build - Build test ઃఆϑΝΠϧ BQQWFZPSZNM インストーラー (.msi) を無人インストール
"QQ7FZPSͷ͍ํ install: - ps: Invoke-WebRequest -Uri http://strawberryperl.com/download/5.24.0.1/strawberry-perl-5.24.0.1-64bit .msi -OutFile strawberry-perl-5.24.0.1-64bit.msi
- ps: Start-Process msiexec.exe -ArgumentList @("/package", "strawberry- perl-5.24.0.1-64bit.msi", "/qn", "INSTALLDIR=C:\strawberry") –Wait - SET PATH=C:¥strawberry¥c¥bin;C:¥strawberry¥perl¥site¥bin;C:¥strawberry ¥perl¥bin;%PATH% - cpanm --notest --quiet Carton - carton install --without develop test_script: - SET PATH=%CD%¥local¥bin;%PATH% - SET PERL5LIB=%CD%¥local¥lib¥perl5;%PERL5LIB% - perl Build.PL - Build - Build test ઃఆϑΝΠϧ BQQWFZPSZNM 依存モジュールをインストール
"QQ7FZPSͷ͍ํ install: - ps: Invoke-WebRequest -Uri http://strawberryperl.com/download/5.24.0.1/strawberry-perl-5.24.0.1-64bit .msi -OutFile strawberry-perl-5.24.0.1-64bit.msi
- ps: Start-Process msiexec.exe -ArgumentList @("/package", "strawberry- perl-5.24.0.1-64bit.msi", "/qn", "INSTALLDIR=C:\strawberry") –Wait - SET PATH=C:¥strawberry¥c¥bin;C:¥strawberry¥perl¥site¥bin;C:¥strawberry ¥perl¥bin;%PATH% - cpanm --notest --quiet Carton - carton install --without develop test_script: - SET PATH=%CD%¥local¥bin;%PATH% - SET PERL5LIB=%CD%¥local¥lib¥perl5;%PERL5LIB% - perl Build.PL - Build - Build test ઃఆϑΝΠϧ BQQWFZPSZNM インストールした Perl でテストを実行
"QQ7FZPSͰͷςετ࣮ߦΠϝʔδ
"QQ7FZPSͰͷςετ࣮ߦΠϝʔδ 前回インストールした依存 `local` をキャッシュ 差分がなければ、追加で `carton install` が走らない
"QQ7FZPSͰͷςετ࣮ߦΠϝʔδ XS のビルドも実行できている! (Strawberry Perl に gcc が含まれている)
NBD04Ͱͷ$* NBD04Ͱ$*Λఏڙ͢Δʹน͕͋Δ q ϥΠηϯε্ɺ.BDͷϚγϯ্Ͱ͔͠ಈ͔ͤͳ͍ o -JOVY্ͷ7.Ͱಈ࡞ͤ͞Δ͜ͱͰ͖ͳ͍ NBD04ʹରԠͨ͠$*গͳ͍͕ଘࡏ͢Δ q 5SBWJT$* o
-JOVYϏϧυͱͷಉ࣌ར༻ɺجຊతʹͰ͖ͳ͍ ڐՄ੍ q #JUSJTF o J04"OESPJEΞϓϦͷϏϧυΛతͱͨ͠αʔϏε
NBD04Ͱͷ$* NBD04Ͱ$*Λఏڙ͢Δʹน͕͋Δ q ϥΠηϯε্ɺ.BDͷϚγϯ্Ͱ͔͠ಈ͔ͤͳ͍ o -JOVY্ͷ7.Ͱಈ࡞ͤ͞Δ͜ͱͰ͖ͳ͍ NBD04ʹରԠͨ͠$*গͳ͍͕ଘࡏ͢Δ q 5SBWJT$* o
-JOVYϏϧυͱͷಉ࣌ར༻ɺجຊతʹͰ͖ͳ͍ ڐՄ੍ q #JUSJTF o J04"OESPJEΞϓϦͷϏϧυΛతͱͨ͠αʔϏε 併用ができるこちらをオススメ
NBD04Ͱͷ$* NBD04Ͱ$*Λఏڙ͢Δʹน͕͋Δ q ϥΠηϯε্ɺ.BDͷϚγϯ্Ͱ͔͠ಈ͔ͤͳ͍ o -JOVY্ͷ7.Ͱಈ࡞ͤ͞Δ͜ͱͰ͖ͳ͍ NBD04ʹରԠͨ͠$*গͳ͍͕ଘࡏ͢Δ q 5SBWJT$* o
-JOVYϏϧυͱͷಉ࣌ར༻ɺجຊతʹͰ͖ͳ͍ ڐՄ੍ q #JUSJTF o J04"OESPJEΞϓϦͷϏϧυΛతͱͨ͠αʔϏε 詳しい使い方は割愛
1FSMͷ$*·ͱΊ Ұൠతͳ1FSMͷ044ͷ$* q 5SBWJT$*ͰෳόʔδϣϯΛςετ q $1"/5FTUFSTͷ݁ՌΛஞҰ֬ೝ ͬͱ͍͜ͳ͢ʹ q $PEFDPWͰΧόϨοδΛՄࢹԽ q
8JOEPXTNBD04ڥͰςετΛఆظ࣮ߦ
͓ΘΓʹ $*Ͱָ͍͠044։ൃΛ q ϓϩδΣΫτ͝ͱʹ࠷దͳબΛ q ։ൃΛࢧԉ͢Δͷʹۤ͠ΊΒΕΔͳ ࣍ୈͰ·ͩ·ͩ1FSM͑Δ q ެࣜʹαϙʔτ͞Ε͍ͳ͍͜ͱ͋Δ͕͝Ѫᇷ q
ָ͍͠1FSMϥΠϑΛ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ 5IBOLT