Slide 1

Slide 1 text

גࣜձࣾΩοζελʔ$50 ৿ɹ఩࠸ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ 6OJUZ$*$%׬શʹཧղͨ͠ษڧձBU%F/"

Slide 2

Slide 2 text

͜Μ͹Μ͸ʂ 2

Slide 3

Slide 3 text

w͸͡Ίʹ w6OJUZʹԙ͚Δ$*$% wϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ w$େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ w·ͱΊ 3 ͓͠ͳ͕͖ ΞδΣϯμ

Slide 4

Slide 4 text

͸͡Ίʹ 4

Slide 5

Slide 5 text

w+PC$50BU,JET4UBS*OD w'BNJMZ࠺ɾ່ ࡀ ɾ່ ࡀ w6OJUZྺ೥໨ w5X (I!NPOSZ wBLB΋ΜΓ͌ઌੜ w$େ౷Ұཧ࿦ਪਐҕһձ໺ྑձһ 5 ࣗݾ঺հ ͸͡Ίʹ

Slide 6

Slide 6 text

6 ࢿྉɾಈը ͸͡Ίʹ εϥΠυڞ༗🙆 ࡱӨ🙆 ΞʔΧΠϒಈը🙆

Slide 7

Slide 7 text

w6OJUZ੡ΞϓϦϓϩδΣΫτʹԙ͚Δ$*$% w(JU)VC"DUJPOTΛ༻͍ͨ$*$% w$%੒෼ଟΊ 7 ࠓ೔͓࿩͢͠Δ͜ͱ ͸͡Ίʹ

Slide 8

Slide 8 text

w4MBDL"QQ(JU)VC"QQͷৄࡉͳ࣮૷ w+FOLJOTΛ༻͍ͨ$*$% w࣮ػςετ 8 ࠓ೔͓࿩͠͠ͳ͍͜ͱ ͸͡Ίʹ

Slide 9

Slide 9 text

w$*$%ʹ͸ʮਖ਼ղʯతͳ΋ͷ͕ແ͘ɺ૊৫ɾνʔϜ ͝ͱʹΞϨϯδ͕ඞཁʹͳ͖ͬͯ·͢ wຊ೔͓࿩͢͠Δ಺༰͸גࣜձࣾΩοζελʔʹԙ͚Δ ͝ՈఉͷຯͰ͢ͷͰɺ͋͘·Ͱࢀߟఔ౓ʹ 9 ͓͜ͱΘΓʢ༧๷ઢʣ ͸͡Ίʹ

Slide 10

Slide 10 text

6OJUZʹԙ͚Δ$*$% 10

Slide 11

Slide 11 text

w$*$POUJOVPVT*OUFHSBUJPO wૈ͘ݴ͑͹ςετΛࣗಈ࣮ߦ͢Δͱ͔ͦΜͳײ͡ w$%$POUJOVPVT%FMJWFSZ%FQMPZNFOU wϏϧυͱ͔੒Ռ෺ͷΞοϓϩʔυΛࣗಈ࣮ߦ͢Δతͳ 11 $*$%JTԿʁ 6OJUZʹԙ͚Δ$*$%

Slide 12

Slide 12 text

w$*6OJUZ5FTU3VOOFSͰ&EJU.PEF 1MBZ.PEFͷςετΛ࣮ߦ w$%1MBZFSϏϧυ΍"EESFTTBCMFTϏϧυΛ ߦ͍ɺ֤ΞϓϦετΞ΍0CKFDU4UPSBHFͳͲʹ Ϗϧυ੒Ռ෺Λ഑৴ 12 6OJUZʹԙ͚Δ$*$%ͬͯʁ 6OJUZʹԙ͚Δ$*$%

Slide 13

Slide 13 text

w6OJUZ͸6OJUZ&EJUPS6OJUZ)VCͱ΋ʹ $-*$PNNBOE-JOF*OUFSGBDFΛఏڙ w$*$%ʹԙ͍ͯ(6*ૢ࡞Λ൐Θͳ͍$-*͸ෆՄܽ wެࣜυΩϡϝϯτʹهࡌͷ࣮ߦϑΝΠϧʹ -batchmode / --headlessҾ਺Λ౉͢ 13 6OJUZʹԙ͚Δ$*$%ͬͯʁ 6OJUZʹԙ͚Δ$*$%

Slide 14

Slide 14 text

w6OJUZ5FTU3VOOFS w&EJUPSͰݴ͏ͱˠ w8JOEPX(FOFSBM 5FTU3VOOFS w$-*͔Β΋࣮ߦՄೳ 14 ΋͏ͪΐ͍LXTL$* 6OJUZʹԙ͚Δ$*$%

Slide 15

Slide 15 text

w6OJUZ5FTU3VOOFSΛίϚϯυϥΠϯ͔Β࣮ߦ 15 ΋͏ͪΐ͍LXTL$* 6OJUZʹԙ͚Δ$*$% /path/to/Unity \ -runTests \ -batchmode \ -projectPath /path/to/project \ -testResults /path/to/result \ -logFile /path/to/log

Slide 16

Slide 16 text

w1MBZFSϏϧυ 16 ΋͏ͪΐ͍LXTL$% 6OJUZʹԙ͚Δ$*$% using UnityEngine; BuildPipeline.BuildPlayer( new BuildPlayerOptions { scenes = EditorBuildSettings.scenes.Select(x => x.path).ToArray(), options = BuildOptions.Development | BuildOptions.AllowDebugging | BuildOptions.ConnectWithProfiler, locationPathName = "/path/to/export", target = EditorUserBuildSettings.activeBuildTarget, targetGroup = BuildPipeline.GetBuildTargetGroup( EditorUserBuildSettings.activeBuildTarget ), } );

Slide 17

Slide 17 text

w"EESFTTBCMFTϏϧυ w"TTFU(SPVQTͱ͔ͷ ઃఆΛࡁ·͓ͤͯ͘ wˣͰઃఆʹ४ͯ͡Ϗϧυ 17 ΋͏ͪΐ͍LXTL$% 6OJUZʹԙ͚Δ$*$% using UnityEditor.AddressableAssets.Settings; AddressableAssetSettings.BuildPlayerContent();

Slide 18

Slide 18 text

wҎ্Ͱ6OJUZΈͷ͋Δ͓࿩͸ऴΘΓͰ͢ʂ w͔͜͜Βઌ͸ɺϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ ʢຊ୊ʣΛ͓ಧ͚͠·͢ 18 Ͷʁ؆୯Ͱ͠ΐ͏ʁ 6OJUZʹԙ͚Δ$*$%

Slide 19

Slide 19 text

ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ 19

Slide 20

Slide 20 text

w6OJ5BTLͱ͔3ͱ͔Ͱ͓ೃછΈͷ!OFVFDD ઌੜ͕ఏএ͞Ε͍ͯΔʮΫϥΠΞϯτ΋αʔό΋$ Ͱॻ͘ͱྑ͍ΑͶʯͱ͍͏ߟ͑ํ wࠓճ͸ʮ͜ͷߟ͑ํΛϏϧυγεςϜʹ΋ద༻ͨ͠ʯ ͱݴ͏͓࿩Ͱ͢ 20 $େ౷Ұʁ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 21

Slide 21 text

21 $େ౷Ұʁ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 22

Slide 22 text

wΩοζελʔʹ͸ੌ࿹ΤϯδχΞͷํ͕ߏஙͯ͘͠Ε ͨϏϧυγεςϜ͕ଘࡏ wී௨ʹ҆ఆՔಇ͍ͯ͠Δ͕ɺ՝୊΋ग़͖ͯͨ 22 8IZ $େ౷Ұ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ ʮͬ͜͝ϥϯυʯઐ༻ ˠ൚༻ੑ΍΍௿ #BTI3VCZͰߏ੒ ˠଐਓੑߴ

Slide 23

Slide 23 text

w൚༻ੑߴΊͭͭɺϝϯςφϯε࣌ͷଐਓੑΛԼ͍͛ͨʂ ‎Ωοζελʔ͸6OJUZΛ࢖ͬͯࢠڙ޲͚ήʔϜΛ ࡞͍ͬͯΔձࣾ ‎ΤϯδχΞ͸શһ$ॻ͚Δ ‎$େ౷Ұ͢Ε͹ϝϯςͱ͔͠΍͘͢ͳΔʢ͸ͣʣ 23 8IZ $େ౷Ұ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 24

Slide 24 text

24 ओͳొ৔ਓ෺ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ "41/&5$POTPMF"QQ 4MBDL"QQ (JU)VC"DUJPOT 6OJUZ)VC 6OJUZ 9DPEFYDPEFCVJME 'BTUMBOF 5FTU fl JHIU %FQMPZ(BUF (PPHMF1MBZ

Slide 25

Slide 25 text

w4MBDL"QQ͔ΒϦΫΤετ w"41/&5ͳ$αʔό͕ϏϧυΦϓγϣϯΛߏங w(JU)VC"DUJPOT"1*Λୟ͍ͯ8PSL fl PXىಈ w$POTPMF"QQͳ$ϓϩάϥϜ͕&EJUPSΛΠϯετʔϧͨ͠Γ 6OJUZ$-*Λ࣮ߦ w'BTUMBOF 1MBZFS ͱ͔"844%, ""4 ͱ͔Λ࢖ͬͯσϓϩΠ wϏϧυ݁ՌΛţ੩Š 25 Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 26

Slide 26 text

Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 27

Slide 27 text

Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 28

Slide 28 text

Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 29

Slide 29 text

29 Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 30

Slide 30 text

30 Ϗϧυج൫ͷେ·͔ͳϑϩʔ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ ύϥϝʔλΛղੳͯ͠Ϗϧυର৅ͷ ϓϥοτϑΥʔϜΛܾఆ͢Δ ฒྻϏϧυ ţ੩Š

Slide 31

Slide 31 text

ηΫγϣϯλΠτϧ w4PMVUJPOʹऩΊΔ w$POTPMF"QQ w4MBDL$BMMCBDL༻αʔό wϥΠϒϥϦ wύϥϝʔλఆٛͳͲͷϞσϧ wΦϨΦϨ4MBDL$MJFOU 31 $େ౷ҰͷϙΠϯτ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 32

Slide 32 text

wύϥϝʔλఆٛΛू໿ wύϥϝʔλͷݩωλຖʹ IParameterSourceΛ࣮૷ w౷Ұతͳ*'ͰύϥϝʔλΞΫηε 32 $େ౷ҰͷϙΠϯτ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ public readonly partial record struct Parameter( string Name, ParameterType ParameterType, InputCondition InputCondition, string EnvironmentVariableName, string GitHubKey, string SlackKey, string InfoPlistKey, string? Label = default, Func? ValueFactory = default, object? DefaultValue = default ) public interface IParameterSource { bool TryGetValue(Parameter parameter, out object? value); } public partial record UnityProjectSettings( UnityPlayerSettings PlayerSettings ) : IParameterSource {} public sealed class EnvironmentVariable( IConfiguration configuration ) : IParameterSource {} public sealed class ParameterProvider { public T? GetValue( Parameter parameter, T? defaultValue = default ) { // 登録済の IParameterSource 達から値を取得 } }

Slide 33

Slide 33 text

33 $େ౷ҰͷϙΠϯτ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩ w*ODSFNFOUBM4PVSDF(FOFSBUPSΛ༗ޮ׆༻͢Δ w/V(FUΛ࠷େݶ׆༻͢Δ wInfo.plistͱ͔ͷ1SPQFSUZ-JTUͷύʔε͸1-JTU/FU͔ͳʁ wProjectSettings.assetͱ͔ͷ:".-ϑΝΠϧύʔε͸7:BNM͕Φε εϝ w(JU)VC"1*͸0DUPLJUҰ୒ w"844ͱ͔$MPVE fl BSF3ͱ͔΁ͷΞοϓϩʔυ͸"844%,

Slide 34

Slide 34 text

wड͚౉͢ϏϧυύϥϝʔλఆٛΛҰݩԽͰ͖ͨ wϞϊϨϙԽͰ͖ͯɺ΢Οϯυ΢ͷ3JEFSͰ։ൃ׬݁ wϝϯςφϯεͷଐਓੑʹ͍ͭͯ͸͜Ε͔Β wগͳ͘ͱ΋NPOSZతʹ͸ϝϯςφϯεʹର͢Δ ৺ཧతϋʔυϧ͕Լ͕ͬͨʢ#BTIۤखʜʣ 34 $େ౷Ұͯ͠ΈͯͲ͏ͩͬͨʁ ϏϧυγεςϜΛ$େ౷Ұ͓ͨ͠࿩

Slide 35

Slide 35 text

$େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ 35

Slide 36

Slide 36 text

w͔͜͜Βઌͷ࿩͸6OJUZ͸΋ͪΖΜ$େ౷Ұ͢Β ΄ͱΜͲؔ܎ͳ͍࿩ʹͳΓ·͢ wͲͪΒ͔ͱ͍͏ͱࣗલͰϏϧυج൫࡞Δࡍͷ஌ݟͱ΋ ݴ͑ΔͷͰڵຯ͋ΔτϐοΫΛ͝ཡ͍ͩ͘͞ wษڧձ౰೔͸੝େʹεΩοϓ͢ΔՄೳੑ͕͋Γ·͕͢ ͦͷࡍ͸͝༰͍͚ࣻͨͩΕ͹޾͍Ͱ͢ 36 ͓͜ͱΘΓ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 37

Slide 37 text

wݩʑϑϨʔϜϫʔΫͳͲͷ$*ʹ(BNF$*ͷ VOJUZUFTUSVOOFSΛ࢖͍ͬͯͨ w$%ج൫Λ$େ౷Ұ͢Δࡍʹ΋ʮͦͷϊϦͰߦ͚Δ ϕʔʯͱ͔ࢥͬͯ૊ΜͩΒҰॠͰ6TBHF৯͍௵ͨ͠ w4FMGIPTUFE3VOOFS্Ͱಈ͔ͤΔΑ͏ͳߏ੒ʹ ͢Δඞཁ͕͋Δ 37 4FMGIPTUFE3VOOFSඞਢ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 38

Slide 38 text

w/&5Ͱ$POTPMF"QQॻ͘ͳΒ$"'બΜͰ͓͚͹🙆 w҆ఆͷ!OFVFDDઌੜʢ$Zࣾʣ wWͰ݁ߏେ୾ͳ࢓༷มߋ͕ೖͬͯΔͷͰཁ஫ҙ wίϝϯτ͔ΒύϥϝʔλͷVTBHFग़ͯ͘͠ΕΔΑ͏ʹͳͬͨ w(FOFSJD)PTUʹϕολϦͰ͸ͳ͘ͳͬͨ wίϚϯυͷొ࿥ํ๏΋݁ߏมΘͬͯΔͷͰ3&"%.&ඞಡ 38 $POTPMF"QQ'SBNFXPSLศར $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 39

Slide 39 text

wෳ਺δϣϒͷ࣮ߦΛߏ੒Ͱ͖Δ(JU)VC"DUJPOTެࣜͷ࢓૊Έ wJ04"OESPJEͷϏϧυΛฒྻ࣮ߦ͍ͨ͠৔߹ͳΜ͔ʹศར wPVUQVUTͷ΍ΓऔΓ͕গʑΊΜͲ͍ wcloudposse/github-action-matrix-outputs-write@v1 wcloudposse/github-action-matrix-outputs-read@v1 w"QQMF4JMJDPOͳNBD04ͩͱKRͷΠϯετʔϧͰస͚ΔͷͰ 4FUVQKRͷTUFQΛऔΓআ͔ͳ͍ͱμϝ͔΋ 39 .BUSJY4USBUFHZΛར༻͢Δ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 40

Slide 40 text

w"OESPJEͷ,FZ4UPSF1BTT1ISBTF΍ 9DPEFͷ,FZ$IBJOͳͲͷൿಗ৘ใ͸ 4FDSFUTͰ؅ཧ wϩάͱ͔΋ͪΌΜͱϚεΫ͞ΕΔͷͰ҆৺҆શ wϦϙδτϦຖʹҟͳΓ͏Δ1BUIͱ໊͔শͱ͔ͷ৘ใ ͸7BSJBCMFTΛ׆༻͢Δ 40 4FDSFUT7BSJBCMFTΛ༗ޮ׆༻͢Δ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 41

Slide 41 text

w$GITHUB_OUTPUTʹग़ྗσʔλ༻ͷϑΝΠϧύε͕ઃఆ ͞Ε͍ͯΔͷͰ֤εςοϓͷग़ྗ͸͜ͷϑΝΠϧʹ key=value\nͷܗࣜͰॻ͖ࠐΉ w$GITHUB_ENVʹ؀ڥม਺༻ͷϑΝΠϧύε͕ઃఆ͞Εͯ ͍ΔͷͰʜʢSZ wվߦΛؚΉ৔߹͸ώΞυΩϡϝϯτͰॻ͖ࠐΉ 41 $GITHUB_OUTPUT / $GITHUB_ENV $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 42

Slide 42 text

wΈΜͳେ޷͖J04ͷ1SPWJTJPOJOH1SP fi MFT͸"QQ4UPSF $POOFDUʹ؅ཧͯ͠΋Β͍·͠ΐ͏ w*TTVFS*%,FZ*%1SJWBUF,FZΛద੾ʹઃఆ͢Ε͹ "E)PDϏϧυͱ͔΋Ϥγφʹ࡞Ε·͢ w1SJWBUF,FZ͸#BTF &ODPEFEͳจࣈྻΛ 4FDSFUTʹஔ͍ͱ͍ͯɺ ࣮ߦ࣌ʹbase64 -d͢Δײ͡Ͱ 42 $MPVE.BOBHFE$FSUJ fi DBUFT $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ $ xcodebuild -exportArchive \ -archivePath /path/to/archive \ -exportPath /path/to/export_directory \ -exportOptionsPlist ExportOptions.plist \ -allowProvisioningUpdates \ -authenticationKeyIssuerID \ -authenticationKeyID \ -authenticationKeyPath

Slide 43

Slide 43 text

w"OESPJE,FZ4UPSF"MJBTͷ1BTT1ISBTF ͸ຖճͷϏϧυͰઃఆ͢Δඞཁ͕͋Δ wIPreprocessBuildWithReportͰ؀ڥม਺͔Β΋Β͏ͷ ͕ϕετϓϥΫςΟε͔ͳʁ 43 "OESPJE,FZ4UPSFͷύεϑϨʔζ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ UnityEditor.PlayerSettings.Android.keystorePass = Environment.GetEnvironmentVariable("hogefuga"); UnityEditor.PlayerSettings.Android.keyaliasPass = Environment.GetEnvironmentVariable("piyopoyo");

Slide 44

Slide 44 text

wϓϩδΣΫτ֎ʹஔ͘ͱϑϧύε͕ProjectSettings.assetʹهࡌ ͞ΕΔ͕ɺϓϩδΣΫτ಺ͩͱ૬ରύεʹͳΔ wΞοϓϩʔυΩʔͱ͔͸ϦϙδτϦʹ͸ίϛοτͨ͘͠ͳ͍ͷ Ͱ.gitignoreͰআ֎ w4FDSFUTʹ#BTFจࣈྻͰอଘ͓͍ͯͯ͠Ϗϧυ࣌ʹ %FDPEF͢Δͱ͔͕ྑͦ͞͏ 44 "OESPJE,FZ4UPSFͦͷ΋ͷ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ AndroidKeystoreName: '/Users/monry/monry.keystore' AndroidKeyaliasName: monry AndroidKeystoreName: '{inproject}: .android/monry.keystore' AndroidKeyaliasName: monry

Slide 45

Slide 45 text

wLibrary/ͷ࠶ߏங͸͔͔࣌ؒΔͷͰΩϟογϡ͍ͨ͠ wDeNA/setup-job-workspace-action@v2͕௒ศར w࢖͍ํ͸3&"%.&ࢀর wσΟεΫ༰ྔͱ͝૬ஊͷ্ɺ͝ར༻͸ܭըతʹ 45 Ωϟογϡ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 46

Slide 46 text

wಉҰ0SHTͰ͋Ε͹1SJWBUF3FQPTJUPSZͷ $PNQPTJUF"DUJPOT΍3FVTBCMF8PSL fl PXTΛࢀর Ͱ͖ΔΑ͏ʹͳͬͨ w6OJUZ&EJUPSͷΠϯετʔϧॲཧͱ͔͸ෳ਺ͷ8PSL fl PX ͰඞཁʹͳͬͨΓ͢ΔͷͰ࠶ར༻Մೳͳܗʹ͓ͯ͘͠ͱ👍 w3FQPTJUPSZ4FDSFUTͱ͔΋ؚΊͯɺsecrets: inheritͰ ؙ͝ͱ౉ͤΔ 46 $PNQPTJUF"DUJPOT3FVTBCMF8PSL fl PXT $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 47

Slide 47 text

w8PSL fl PXΛ࣮ߦ͢Δ8PSLTQBDF͸தԝूݖʹ΋෼ࢄ࣮ߦʹ΋ରԠ Ͱ͖ΔΑ͏ʹ͢Δ w"OESPJE,FZ4UPSFͷ1BTT1ISBTFͳͲ͸ϓϩδΣΫτຖʹҟͳ ΔͷͰɺݸผͷϦϙδτϦΛ8PSLTQBDFͱͯ͠4FDSFUTΛ؅ཧ wݕূϓϩδΣΫτͳͲ͸ڞ௨ͷ4FDSFUTͰ໰୊ͳ͍͸ͣͳͷͰڞ௨ͷ 8PSLTQBDFͰ࣮ߦ͢Δ wલड़ͷDeNA/setup-job-workspace-action@v2Λ࢖͑͹8PSLTQBDF͕ ΰνϟΔ৺഑͸ͳ͍ 47 தԝूݖ෼ࢄ࣮ߦ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 48

Slide 48 text

w͔ͬ͠Γ࢓༷ΛಡΈղ͖·͠ΐ͏ w&WFOUT"1**OUFSBDUJWJUZ4VSGBDFT w/&5޲͚ͷެࣜ4MBDL4%,తͳ΋ͷ͸ແͦ͞͏ wؤுͬͯࣗલͰ૊Μ͡Ό͚ͬͨͲɺ୳ͤ͹͋Δ͔ͳʁ 48 4MBDL"QQͷߏங͸݁ߏϝϯυΠ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 49

Slide 49 text

w4MBDL͔ΒͷϦΫΤετʹ͸ඵҎ಺ʹϨεϙϯεΛ ฦ͞ͳ͍ͱΤϥʔѻ͍ʹͳΔ wجຊతʹɺ࣮ॲཧ͸Task.Run()ͯ͠ʮͱΓ͋͑ͣʯͷ ϨεϙϯεΛฦ͢ͷ͕Φεεϝ w͋ΒΏΔॲཧ͸ඇಉظΛલఏʹ"1*ઃܭ͕ҝ͞Εͯ ͍ΔͷͰԿͱ͔ͳΔ͸ͣ 49 4MBDL$BMMCBDL͸͔ͤͬͪ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 50

Slide 50 text

wຊ൪ϦϦʔεޙʹमਖ਼ΛೖΕΔ৔߹ʹʮखݩͷ؀ڥͰ ݕূ͍ͨ͠ʜʯͬͯͳΔͷͰෳ਺࡞͓ͬͯ͘΂͠ wάϩʔόϧʹΞΫηεͰ͖Δ63-͕ඞཁʹͳΔͷͰ OHSPLͱ͔Ͱݻఆͷϗετ໊ΛׂΓ౰͓ͯͯ͘ͱ👍 50 4MBDL"QQ͸։ൃ༻ͱຊ൪༻Λ࡞Δ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 51

Slide 51 text

wಉ͡Α͏ͳϏϧυΛ࿈౤͢ΔࡍʹίϐϖͰ͖ΔͷͰɺ .FOUJPO΍4MBTI$PNNBOEʹରԠ͢Δͱ👍 wਖ਼نԽ͞Εͨจࣈྻ͕ඈΜͰ͘Δͱ͸ݶΒͳ͍ͷͰɺ ͦΕͳΓͷਖ਼نදݱྗ͸ٻΊΒΕΔ 51 4MBDL.FOUJPOͳͲʹରԠ͢Δͱศར $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 52

Slide 52 text

w4MBDL"QQ͔Βͷ$BMMCBDLΛड͚෇͚Δαʔό ͸%PDLFSԽ͓ͯ͘͠ͱศར wϏϧυج൫ϦϙδτϦͷߋ৽ΛτϦΨʔʹ docker compose up --build͢ΔΑ͏ͳ8PSL fl PX Λ૊ΜͰ͓͚͹αʔόଆϓϩάϥϜͷߋ৽ָ͕νϯ 52 (BUFXBZ͸%PDLFSԽ͓ͯ͘͠ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 53

Slide 53 text

w4FMGIPTUFE3VOOFS͸ৗறϓϩηεͱͯ͠ಈ͘/&5"QQMJDBUJPO wϙʔϦϯάର৅ͷSFQPPSHͱࣗ਎ͷ-BCFM T Λઃఆ͢Δ w؂ࢹର৅ͷSFQPPSHʹ+PC͕&ORVFVF͞Εɺ 自身の全 Label ⊇ Job の runs-on に列挙された全 Label ͱͳ͍ͬͯΔ৔߹ʹ+PCΛ%FRVFVFͯ͠:".-ʹॻ͔Ε͍ͯΔ 4UFQ T Λ࣮ߦ͢Δ w୯ҰͷδϣϒͷΈ࣮ߦՄೳ w-BCFMઃܭΛϛεΔͱौ଺͕ൃੜ͢Δ 53 4FMGIPTUFE3VOOFSͷ-BCFMେࣄ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ

Slide 54

Slide 54 text

w࣮ߦ͢Δ3VOOFSͷ-BCFMΛ8PSL fl PXͷύϥ ϝʔλͱͯ͠ड͚෇͚ΔΑ͏ʹ͢Δͱ։ൃ࣌ʹศར 54 4FMGIPTUFE3VOOFS΋։ൃ༻Λ༻ҙ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ name: Build Player on: workflow_dispatch: inputs: runner-label: description: 'Runner のラベル' required: false type: string default: 'buildpipeline-runner' jobs: build_player: name: "Build Player" runs-on: - self-hosted - ${{ inputs.runner-label }}

Slide 55

Slide 55 text

wࣄલʹϏϧυͨ͠όΠφϦΛϦϙδτϦʹؚΊΔ͜ͱ Ͱ࣮ߦ࣌ؒઅ໿ 55 $POTPMF"QQ͸ࣄલϏϧυ͓ͯ͘͠ $େ౷Ұͨ͠ࡍʹಘΒΕͨ஌ݟ Exe net8.0 enable enable BuildPipeline false false osx-arm64;win-x64 osx-arm64 embedded .github/actions/bin/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx KidsStar.BuildPipeline.Console

Slide 56

Slide 56 text

·ͱΊ 56

Slide 57

Slide 57 text

w$େ౷Ұཧ࿦͸͍͍ͧʂʂʂ w։ൃମݧͱͯ͠3JEFSϑϧ׆༻Ͱ͖Δͷ͕σΧ͍ wଐਓੑΛԼ͛ΒΕ͔ͨͲ͏͔͸ະ஌਺ 57 ·ͱΊ ·ͱΊ

Slide 58

Slide 58 text

w6OJUZΤσΟλʔͷίϚϯυϥΠϯҾ਺ 6OJUZ%PDVNFOUBUJPO w6OJUZ5FTU'SBNFXPSL 6OJUZ1BDLBHF%PDVNFOUBUJPO w6OJUZ5FTU'SBNFXPSL׬શ߈ུΨΠυୈ൛ #005)͍͔খ԰ wδϣϒʹϚτϦοΫεΛ࢖༻͢Δ (JU)VC"DUJPOT%PDT wDMPVEQPTTFHJUIVCBDUJPONBUSJYPVUQVUTXSJUF!W wDMPVEQPTTFHJUIVCBDUJPONBUSJYPVUQVUTSFBE!W w$MPVE.BOBHFE$FSUJ fi DBUFT "QQMF%FWFMPQFS)FMQ 58 "QQFOEJY ·ͱΊ

Slide 59

Slide 59 text

wHBNFD*VOJUZUFTUSVOOFS w&WFOUT"1**OUFSBDUJWJUZ4VSGBDFT 4MBDL"1* wOHSPL w$POTPMF"QQ'SBNFXPSL1-JTU/FU7:BNM 0DUPLJU"844%, /V(FU w 59 "QQFOEJY ·ͱΊ

Slide 60

Slide 60 text

5IBOLZPVGPSZPVSBUUFOUJPO 60