Slide 1

Slide 1 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ &ϦϦʔεΛࣗಈԽͨ͠࿩ 2017೥10݄3೔ Զίϯ Vol.1 / Day. 2 ࠤ౻߶࢜ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 1

Slide 2

Slide 2 text

Who am I ࠤ౻߶࢜ (@hatakenokakashi) MAMORIOגࣜձࣾͰiOSΤϯδχΞΛ ͍ͯ͠·͢ɻ http://blog.personal-factory.com/ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 2

Slide 3

Slide 3 text

ฆࣦ๷ࢭλάMAMORIO CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 3

Slide 4

Slide 4 text

ฆࣦ௨஌ མͱͨ͠Β௨஌Λग़͢ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 4

Slide 5

Slide 5 text

Ϋϥ΢υτϥοΩϯά ΈΜͳͰ୳͢ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 5

Slide 6

Slide 6 text

SDKΛެ։ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 6

Slide 7

Slide 7 text

ࠓ೔ͷ໨࣍ • MAMORIOͷ։ൃʹ͍ͭͯ • Biriseʹ͍ͭͯ • fastlaneʹ͍ͭͯ • SDKΛࣗಈϏϧυ&ϦϦʔε CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 7

Slide 8

Slide 8 text

MAMORIOͷ։ൃʹͭ ͍ͯ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 8

Slide 9

Slide 9 text

SDKͷػೳ • Ϣʔβʔొ࿥ • ϢʔβʔϩάΠϯɺϩάΞ΢τ • MAMORIOλάͷొ࿥ • MAMORIOλάͷݕ஌ • (ΞϓϦ͸iBeaconͰλάΛݕ஌) CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 9

Slide 10

Slide 10 text

SDKͱͯ͠ެ։ • ιʔε͸ެ։͠ͳ͍ • ϏϧυࡁΈͷFrameworkΛެ։͢Δ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 10

Slide 11

Slide 11 text

ϦϙδτϦมભ ݄೔ มભ 2015೥5݄ MAMORIOΞϓϦϦϦʔε 2016೥7݄ʙ APPϦϙδτϦ͔ΒίΞػೳΛϓϥΠϕ ʔτSDKϦϙδτϦΛҠߦ 2017೥2݄ʙ ެ։ϦϙδτϦΛ࡞੒͠ɺϓϨϕʔτ SDKϦϙδτϦ͔ΒϏϧυࡁΈ FrameworkΛެ։ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 11

Slide 12

Slide 12 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 12

Slide 13

Slide 13 text

Bitriseʹ͍ͭͯ • ϞόΠϧΞϓϦઐ༻CIαʔϏε • iOSɺAndroidɺXamarinͰϏϧυՄೳ • ϏϧυઃఆΛGUIͰઃఆՄೳ(Workflows) • Ϗϧυ͕࣌ؒ10෼Ҏ಺ͳΒແྉͷϓϥϯ͋Γ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 13

Slide 14

Slide 14 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 14

Slide 15

Slide 15 text

fastlane • iOS޲͚Ϗϧυπʔϧ • XcodeͷϏϧυɺΞʔΧΠϒɺূ໌ॻߋ৽ΛίϚϯυϥΠϯ Ͱ࣮ߦՄೳ • Android޲͚ͷίϚϯυϥΠϯπʔϧ΋ۙ೥௥Ճ͞Εͨ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 15

Slide 16

Slide 16 text

SDKΛࣗಈϏϧυ&ϦϦ ʔε CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 16

Slide 17

Slide 17 text

ࣗಈԽ͠ͳ͍ͱͲ͏ͳΔ͔ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 17

Slide 18

Slide 18 text

XcodeʹͯMAMORIOSDKͷεΩʔϚʔͰ ⌘+B CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 18

Slide 19

Slide 19 text

Productsάϧʔϓ͔ΒӈΫϦοΫͰFinderදࣔ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 19

Slide 20

Slide 20 text

FrameworkΛ֬ೝ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 20

Slide 21

Slide 21 text

FrameworkΛެ։༻ͷΫϩʔϯͨ͠σΟϨΫτ Ϧʹίϐʔ git commit -m "some comment" git push origin master CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 21

Slide 22

Slide 22 text

ਏ͍ (´ɾТɾʆ) CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 22

Slide 23

Slide 23 text

ࣗಈԽ͠·͢ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 23

Slide 24

Slide 24 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 24

Slide 25

Slide 25 text

Ϗϧυͷखॱ • ඇެ։SDKͷGitϦϙδτϦʔΛΫϩʔϯ • BuildϑΥϧμʹެ։༻SDKͷGitϦϙδτϦΛΫϩʔϯ • fastlaneͰSDKΛϏϧυɻFrameworkΛBuildϑΥϧμʹग़ྗ • SDKͷCHANGELOG.mdͱREADME.mdΛίϐʔ • GitͰCommitɺϒϥϯν੾ͬͯɺެ։༻SDKͷGitHub΁Push • ݁ՌΛSlackʹૹ৴ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 25

Slide 26

Slide 26 text

BitriseͷWorkflowΛ ઃఆ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 26

Slide 27

Slide 27 text

ϩʔΧϧͷσΟϨΫτϦ . ├── CHANGELOG.md ├── MamorioSDK │ ├── MamorioSDK # ιʔε │ ├── MamorioSDK.xcodeproj │ ├── MamorioSDKTests │ ├── build # ެ։༻ϦϙδτϦ࡞ۀσΟϨΫτϦ │ │ └── mamorio-sdk-ios-bin │ │ ├── CHANGELOG.md │ │ ├── MamorioSDK.framework │ │ └── README.md │ ├── fastlane └── README.md CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 27

Slide 28

Slide 28 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 28

Slide 29

Slide 29 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 29

Slide 30

Slide 30 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 30

Slide 31

Slide 31 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 31

Slide 32

Slide 32 text

CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 32

Slide 33

Slide 33 text

xcbuildͰϏϧυ desc "Build Framework" lane :build_framework do |values| xcbuild( project: "MamorioSDK.xcodeproj", scheme: 'MamorioSDK', configuration: 'Debug', build_settings: { CONFIGURATION_BUILD_DIR: './build/mamorio-sdk-ios-bin' #ग़ྗઌΛࢦఆ͢Δ }, force: true ) end CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 33

Slide 34

Slide 34 text

ΞϓϦΛΞʔΧΠϒ͠ɺIPAϑΝΠϧΛੜ੒͢ΔΞΫγϣϯ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 34

Slide 35

Slide 35 text

ࠓճ͸Ϗϧυͯ͠FrameworkΛग़ྗ͍ͨ͠ͷͰxcbuildΛ࢖͏ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 35

Slide 36

Slide 36 text

gitͰίϛοτͱϓογϡ Λߦ͏ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 36

Slide 37

Slide 37 text

before_all do ENV["TAG_VERSION"] = "v1.0.1" ENV["TAG_COMMENT"] = "ࣗಈϏϧυʹͯϦϦʔε" end desc "git pushΛshell scriptͰߦ͏" lane :git_push_via_shell do |values| tag_bersion = ENV["TAG_VERSION"] tag_comment = ENV["TAG_COMMENT"] sh("sh ./bin_push.sh #{tag_bersion} #{tag_comment}") end CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 37

Slide 38

Slide 38 text

sh • fastlaneʹͯshellεΫϦϓτΛ࣮ߦ͢ΔΞΫγϣϯ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 38

Slide 39

Slide 39 text

bin_push.sh #!/bin/bash #Ҿ਺͔Βม਺Λ࡞੒ TAG_VERSION=$1 TAG_COMMENT=$2 # gitϢʔβઃఆ git config user.email "" #ίϛοτϢʔβͷ༗ޮͳϝʔϧΞυϨε git config user.name "" #ίϛοτϢʔβͷ໊લ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 39

Slide 40

Slide 40 text

# ϦϦʔεόʔδϣϯ໊ CI_RELEASE_VERSION=`date +"v%Y%m%d%H%M%S"` # ϦϦʔεϒϥϯν໊ CI_RELEASE_BRANCH="release/${CI_RELEASE_VERSION}" # ϦϞʔτϦϙδτϦ CI_REMOTE_REPOSITORY="[email protected]:otoshimono/mamorio-sdk-ios-bin.git" # ΧϨϯτσΟϨΫτϦΛ֬ೝ echo $PWD #SDKͷREADMEΛbinʹίϐʔ cp ../../README.md ../build/mamorio-sdk-ios-bin #SDKͷCHANGELOGΛbinʹίϐʔ cp ../../CHANGELOG.md ../build/mamorio-sdk-ios-bin # ࡞ۀσΟϨΫτϦΛҠಈ cd ../build/mamorio-sdk-ios-bin CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 40

Slide 41

Slide 41 text

# ϦϦʔεϒϥϯν࡞੒ git checkout -b ${CI_RELEASE_BRANCH} #มߋϑΝΠϧΛΛ͢΂ͯ௥Ճ git add --all :/ #ίϛοτ git commit -m "[auto] release branch (${CI_RELEASE_VERSION})" #λάΛ࡞੒ git tag -a "${TAG_VERSION}" -m "${TAG_COMMENT}" #ϦϞʔτʹϓογϡ git push ${CI_REMOTE_REPOSITORY} ${CI_RELEASE_BRANCH} ɹ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 41

Slide 42

Slide 42 text

fastlanenʹ͸Gitૢ࡞ͷΞΫγϣϯ͕ͨ͘͞Μ ͋Δ͕... • ͲΕ΋ಉ͡ϦϙδτϦ্Ͱͷૢ࡞ • ඇެ։ϦϙδτϦͰϏϧυͯ͠ެ։ϦϙδτϦͰϓογϡ͢ Δํ๏͕Θ͔Βͳ͔ͬͨɻ • ۪௚ʹshellεΫϦϓτͰ࣮ߦͨ͠ɻ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 42

Slide 43

Slide 43 text

݁ՌΛSlackʹૹ৴ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 43

Slide 44

Slide 44 text

SlackͰWebhookURLΛऔಘ https://slack.com/services/new/incoming-webhook CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 44

Slide 45

Slide 45 text

bitriseʹWebhookURLͱϝοηʔδొ࿥ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 45

Slide 46

Slide 46 text

࣮ߦ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 46

Slide 47

Slide 47 text

ඇެ։SDKϦϙδτϦͰgit push CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 47

Slide 48

Slide 48 text

bitriseͰϏϧυ͕࢝·Δ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 48

Slide 49

Slide 49 text

ެ։༻GitHub΁ϓογϡ͞ΕΔ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 49

Slide 50

Slide 50 text

SlackͰ݁Ռ௨஌ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 50

Slide 51

Slide 51 text

! CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 51

Slide 52

Slide 52 text

·ͱΊ • BitriseͱfastlaneͰSDKϏϧυͱϓογϡΛࣗಈԽͨ͠ • Bitriseͷworkflow͸ઃఆ؆୯ɻ • fastlaneɺࣗ෼ͷ͍ͨ͜͠ͱ͕ΞΫγϣϯʹͳ͍ͳΒ۪௚ʹ shellεΫϦϓτ࣮ߦ͢Δͷ΋͋Γ CIαʔϏεBitriseͰެ։SDKͷϏϧυ&ϦϦʔεΛࣗಈԽͨ͠࿩ 2017/10/3 52