Slide 1

Slide 1 text

ඇެ։ͳࣾ಺ݶͷCLIπʔϧΛ HomebrewͰ഑෍͍ͨ͠ 2017/05/25 @minamijoyo

Slide 2

Slide 2 text

ࣗݾ঺հ • ৿ా ਅ೭ (Masayuki Morita) • Twitter/GitHub: @minamijoyo • CrowdWorks Inc. • Πϯϑϥ୲౰ • ͍͍ͩͨAWS/Terraform/Dockerͱ͔͍ͬͯ͡Δ

Slide 3

Slide 3 text

ࠓ೔ͷςʔϚ

Slide 4

Slide 4 text

ࣾ಺ݶͷCLIπʔϧͷ഑෍ํ๏

Slide 5

Slide 5 text

ίϯςΩετ • ࣾ಺αʔόʹHTTPϦΫΤετΛ౤͛Δͪΐͬͱ͠ ͨࣾ಺ݶͷCLIπʔϧΛॻ͖͍ͨ • CLIπʔϧΛॻ͘ͳΒGo (※ݸਓͷײ૝Ͱ͢) • ͨͩࣾ͠಺શһ͕Goͷ։ൃ؀ڥΛ͍࣋ͬͯΔΘ͚ Ͱ͸ͳ͍ͷͰgit cloneͯ͠Ϗϧυͱ͔͸μϝ • ίϯύΠϧࡁͷόΠφϦΛ഑෍͍ͨ͠

Slide 6

Slide 6 text

ʢͦ΋ͦ΋ʣ OSSͰެ։͢Δ৔߹

Slide 7

Slide 7 text

GitHub Releaseϖʔδʹ ϏϧυࡁΈͷόΠφϦΛ ஔ͍͓ͯ͘ͷ͕؆୯

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

curlͷϫϯϥΠφʔͰ μ΢ϯϩʔυͯ͠΋Β͏ $ curl -fsSL https://github.com/ minamijoyo/myaws/releases/download/ v0.3.0/myaws_v0.3.0_darwin_amd64.tar.gz \ | tar -xzC /usr/local/bin && chmod +x /usr/local/bin/myaws

Slide 10

Slide 10 text

ඇެ։ͳ ࣾ಺ݶͷCLIπʔϧͷ৔߹

Slide 11

Slide 11 text

GitHubͷAPIτʔΫϯ࢖ͬͯ ͜Μͳ͔Μ͡Ͱ͍͚ͦ͏ʁ $ curl -fsSL https://[email protected]/ yourcompany/hoge/releases/download/v0.1.0/ hoge_v0.1.0_darwin_amd64.tar.gz curl: (22) The requested URL returned error: 404 Not Found

Slide 12

Slide 12 text

ਖ਼ղ͸…

Slide 13

Slide 13 text

$ curl -sLJO -H 'Accept: application/octet-stream' \ "https://[email protected]/repos/ yourcompany/hoge/releases/assets/$( \ curl -sL https://[email protected]/ repos/yourcompany/hoge/releases/tags/v0.1.0 \ | jq '.assets[] | select(.name | contains("darwin")) | .id')" GitHub APIΛ࢖ͬͯ curl+jqͰ͕Μ͹Δ

Slide 14

Slide 14 text

ͳΔ΄ͲΘ͔ΒΜ

Slide 15

Slide 15 text

΋ͬͱ͍͍͔Μ͡ͰཔΉ

Slide 16

Slide 16 text

Homebrew

Slide 17

Slide 17 text

ࣗ࡞πʔϧΛ HomebrewͰ഑෍͢Δ

Slide 18

Slide 18 text

OSSͰެ։͢Δ৔߹

Slide 19

Slide 19 text

require "formula" class Myaws < Formula homepage "https://github.com/minamijoyo/myaws" url "https://github.com/minamijoyo/myaws/releases/download/ v0.3.0/myaws_v0.3.0_darwin_amd64.tar.gz" sha256 "a2d9bccb4d95556b81d50bb7338dc12815acb0b4e19e28adff1a235b0a44fca4" head "https://github.com/minamijoyo/myaws.git" version "0.3.0" def install bin.install "myaws" end end brew tap༻ͷFormulaΛ࡞੒

Slide 20

Slide 20 text

brew tap༻ͷϦϙδτϦΛ࡞੒ ˞CSFXUBQ༻ͷϦϙδτϦ໊͸ IPNFCSFX9999Ͱͳ͍ͱ͍͚ͳ͍͜ͱʹ஫ҙ

Slide 21

Slide 21 text

$ brew install minamijoyo/myaws/myaws $ brew tap minamijoyo/myaws $ brew install myaws ΋͘͠͸ߦͰ·ͱΊͯ CSFXUBQͯ͠JOTUBMM

Slide 22

Slide 22 text

ඇެ։ͳ ࣾ಺ݶͷCLIπʔϧͷ৔߹

Slide 23

Slide 23 text

HomebrewͰ Ͳ͏͢Ε͹Α͍͔ͳʁͱ υΩϡϝϯτ΍ίʔυΛಡΜͩͱ͜Ζ…

Slide 24

Slide 24 text

Homebrewʹ ͦΜͳػೳ͸ͳ͔ͬͨ (´ɾωɾʆ)

Slide 25

Slide 25 text

ͱݟ͔͚ͤͯ

Slide 26

Slide 26 text

ͳ͔ͬͨͷͰ Homebrewຊମʹ ػೳΛ௥Ճ͠ͱ͍ͨ

Slide 27

Slide 27 text

IUUQTHJUIVCDPN)PNFCSFXCSFXQVMM

Slide 28

Slide 28 text

࢖͍ํ

Slide 29

Slide 29 text

require "formula" class Hoge < Formula homepage "https://github.com/yourcompany/hoge" url "https://github.com/yourcompany/hoge/releases/ download/v0.1.0/hoge_v0.1.0_darwin_amd64.tar.gz", :using => GitHubPrivateRepositoryReleaseDownloadStrategy sha256 "6de411ff3e4b1658a413dd6181fcXXXXXXXXXXXXXXXXXXXX" head "https://github.com/yourcompany/hoge.git" version "0.1.0" def install bin.install "hoge" end end FormulaͷurlઃఆͰ GitHubPrivateRepositoryReleaseDownloadStrategyΛࢦఆ

Slide 30

Slide 30 text

$ brew tap yourcompany/tap [email protected]:yourcompany/homebrew-tap.git CSFXUBQͷϦϙδτϦ΋ඇެ։ͳͷͰ ύεΛHJUϓϩτίϧࢦఆͯ͠44)ೝূ͢Δ $ brew tap yourcompany/tap https://[email protected]/yourcompany/ homebrew-tap.git ˞CSFXUBQͷϦϙδτϦΛIUUQTͰ (JU)VCτʔΫϯͰೝূ͍ͨ͠৔߹͸ҎԼͰ΋Մ

Slide 31

Slide 31 text

$ export HOMEBREW_GITHUB_API_TOKEN=xxx ϦϦʔε෺Λμ΢ϯϩʔυ͢ΔͨΊʹ πʔϧͷϦϙδτϦʹΞΫηεݖݶ͕͋ΔτʔΫϯΛ )0.&8@(*5)6#@"1*@50,&/ʹFYQPSU $ brew install hoge ͜ΕͰඇެ։ͳπʔϧ΋CSFXJOTUBMMͰ͖ΔΑ͏ʹͳΔ

Slide 32

Slide 32 text

આ໌͕ૣ͗ͯ͢෼͔ΒΜ͔ͬͨਓ޲͚ˣ ʮHomebrewͰϓϥΠϕʔτͳGitHubϦϙδτ ϦͷReleaseϖʔδ͔Βࣾ಺πʔϧΛ഑෍͢Δʯ http://qiita.com/minamijoyo/items/ 8bb3c80974b77b8ae81f

Slide 33

Slide 33 text

Ͳ͏ͧ͝ར༻Լ͍͞