Powershell: ConvertFrom-Yaml, ConvertTo-Yaml

์— ๋งŒ๋“  2017๋…„ 04์›” 20์ผ  ยท  65์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PowerShell/PowerShell

Yaml์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ # 3046์—์„œ @fabiendibot ์— ์˜ํ•ด ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CMDLet์ด XML์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ์ฒด์˜ ๋ณ€ํ™˜์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊น”๋”ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™˜์— ๋Œ€ํ•œ ์ข‹์€ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Area-Cmdlets Issue-Discussion Up-for-Grabs

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@lzybkr ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์žฌํ‰๊ฐ€๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐค๋Ÿฌ๋ฆฌ ์—๋„ ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ด์•ผํ•˜์ง€๋งŒ ํ˜„๋Œ€ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ†ค์—๋Š” YAML์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

6.0 ์‹œ๊ฐ„๋Œ€๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  65 ๋Œ“๊ธ€

DSC ์ธก๋ฉด ์—์„œ ๋น„์Šทํ•œ ๋…ผ์˜๋ฅผํ–ˆ์Šต๋‹ˆ๋‹ค.
json ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜์—ฌ xml ๊ธฐ๋ฐ˜ ํŒŒ์ผ, YAML ๊ธฐ๋ฐ˜ ํŒŒ์ผ, Text Manipulation cmdlet ๋‚ด์—์„œ RegEx ์Šค์™‘์„ ์ง€์›ํ•˜๋Š” INI ๊ธฐ๋ฐ˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ์˜ต์…˜์„ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค.

PS์˜ ๊ธฐ์กด ์ง€์›์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๋Ÿฌํ•œ ๋Šฅ๋ ฅ์„ ์–ป๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ๋ฅผ ์œ„ํ•ด ๋ณด๋ฅ˜๋˜์—ˆ์ง€๋งŒ PS์— ๊ตฌ์›Œ์ง€๋ฉด DSC ๋ถ€๋ถ„๋„ ํ›จ์”ฌ ์‰ฌ์›Œ ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋งํ•  ๋•Œ XML ๋˜๋Š” JSON๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ƒ๊ฐํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ YAML์ด PowerShell์— ์ „ํ˜€ ๊ตฌ์›Œ ์ง€์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ ๋ฒ„์ „์˜ PowerShell์„ ์„ ํƒํ•˜์ง€ ์•Š๊ณ ๋„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ๋ณ„๋„์˜ ๋ชจ๋“ˆ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

YAML์ด XML๊ณผ ๊ฐ™์€ PowerShell๋กœ ๊ตฌ์›Œ ์กŒ๋‹ค๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ([xml] " b "๋ฅผ ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค).

JSON ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด YAML๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” cmdlet์ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ PowerShell์— ๊ตฌ์›Œ์ง„ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ YAML ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด PowerShell์„ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@lzybkr ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์žฌํ‰๊ฐ€๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐค๋Ÿฌ๋ฆฌ ์—๋„ ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ด์•ผํ•˜์ง€๋งŒ ํ˜„๋Œ€ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ†ค์—๋Š” YAML์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

6.0 ์‹œ๊ฐ„๋Œ€๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@ArieHein- ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ•ด์‹œ ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. REG_SZ ๋งŒ ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ„๋‹จํ•œ ์„ค์ • ์„ธํŠธ์˜ ๊ฒฝ์šฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋ณธ์ด ํ•„์š”ํ•œ์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ "๋„ค์ดํ‹ฐ๋ธŒ"๋ผ๊ณ  ๋งํ–ˆ์„ ๋•Œ ์ž˜๋ชป ์ฐฉ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ "๋‚ด์žฅ"์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์ด ๊ธฐ๋ณธ ์ œ๊ณต ๋˜์—ˆ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ํ† ๋ก  # 2109

@iSazonov- ์•„,

์Šค๋ ˆ๋“œ์—์„œ YAML์— ๋Œ€ํ•œ AWS ์ง€์›์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ…œํ”Œ๋ฆฟ์„ ๋ณ€ํ™˜ ํ•ด ์™”์œผ๋ฉฐ ์ด๊ฒƒ์ด ๋„์›€์ด๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค : https://github.com/awslabs/aws-cfn-template-flip

@iSazonov ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ๋“  ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ž˜ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

์›๋ž˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค์‹œ ์ฝ์„ ๋•Œ ํ–ฅํ›„ ์–ด๋Š ์‹œ์ ์—์„œ cmdlet์„ ํ™•์‹คํžˆ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฐค๋Ÿฌ๋ฆฌ์— ์ œ๊ณตํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ’ˆ์งˆ๊ณผ ์‚ฌ๋žŒ๋“ค์ด์ธ์ง€ ํ•œ ์œ ์šฉ์„ฑ (6.0.0 ์ดํ›„์— ์ˆ˜ํ–‰ ํ•  ์ผ๋ถ€ ๋ฆฌํŒฉํ† ๋ง ์ž‘์—…๊ณผ ํ•จ๊ป˜)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ ๋ฐ•์Šค ๋Œ€ ๊ฐค๋Ÿฌ๋ฆฌ ์ „์šฉ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/awslabs/aws-cfn-template-flip ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

@MattTunny ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! :-)

๊ทธ๊ฒƒ์— ํˆฌํ‘œํ•˜๊ธฐ ์œ„ํ•ด ์—ด๋ฆฐ Windows Server ์‚ฌ์šฉ์ž ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค :-)

https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11088495-out-of-the-box-support-for-yaml-like-csv-xml-j

์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋„ค์ดํ‹ฐ๋ธŒ PS 6.1 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€ ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜ YAML์—๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ PSGallery์— psyaml ๋ฐ powershell-yaml ๋ชจ๋“ˆ์ด ์žˆ์ง€๋งŒ ๋‘˜ ๋‹ค VSTS ๋นŒ๋“œ ์ •์˜์—์„œ YAML ํŒŒ์ผ์„ ์™•๋ณต ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์ด PowerShell์— ๊ตฌ์›Œ ์กŒ๋Š”์ง€ ์•„๋‹ˆ๋ฉด PSGallery์˜ ๋ชจ๋“ˆ์ธ์ง€ ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ๋ฌธ์ œ๋Š” ๋ชจ๋“ˆ์„ ๋ฐฐํฌํ•˜๋Š” ํˆฌ๋ฐ•ํ•œ ๋ฐฉ๋ฒ•์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € ๋ชจ๋“ˆ์„ ์ฐพ๊ณ , ์‹ ๋ขฐํ•˜๊ณ , ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ Javascript๊ฐ€ var m = require('mymodule') ํ•˜๋Š” (๋ถ„๋ช…ํžˆ) ๋งค๋„๋Ÿฌ์šด ๋ฐฉ์‹๊ณผ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค. DSC๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ PowerShell์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. DSC์—์„œ ๋ชจ๋“ˆ์ด ๊ตฌ์„ฑ์—์„œ ์ฐธ์กฐ๋˜๋ฉด ์ˆ˜๋™ ์ž‘์—…์—†์ด ๋Œ€์ƒ ๋…ธ๋“œ์— ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜์ง€๋งŒ ํ•ต์‹ฌ์ด ์•„๋‹Œ ๋ชจ๋“ˆ์„ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•˜๋ฉด "ํ•ต์‹ฌ์˜ ์ผ๋ถ€๊ฐ€๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค"๋ผ๋Š” ์ฃผ์žฅ์„ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„คํŠธ์›Œํฌ์—์„œ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง„ ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ์˜ ์ข…์†์„ฑ์„ ์•„์นด์ด๋ธŒ์— ๋ฒˆ๋“ค๋กœ ๋ฌถ์€ ๋‹ค์Œ ๋Œ€์ƒ์— ๋ฐฐํฌํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Azure DSC ๋ฆฌ์†Œ์Šค ํ™•์žฅ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ํŒŒ์•…ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ ๋œ zip ํŒŒ์ผ์„ ๋นŒ๋“œํ•˜๊ณ ์ด๋ฅผ Blob์— ๊ฒŒ์‹œํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Azure ๋ฆฌ์†Œ์Šค ํ™•์žฅ์€์ด Blob์„ ๊ฐ€์ ธ์™€ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์ค‘์š”ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ๋ฒค๋” ๋ง ๋ฐฉ๋ฒ•์ด์—†๋Š” ํ•œ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „์ฒด ์ƒํƒœ๊ณ„๋ฅผ ์ž ์žฌ์ ์œผ๋กœ ํŒŒ๊ดดํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์‰ฝ์Šต๋‹ˆ๋‹ค (https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/ ์ฐธ์กฐ).

@bergmeister๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด ๋” ๊ด‘๋ฒ”์œ„ํ•œ ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ํ˜„์žฌ PowerShell ์šฉ ์ข‹์€ YAML ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ž๋™ํ™”์— ์ค‘์ ์„ ๋‘” ์–ธ์–ด์˜ ํ•„์ˆ˜ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. YAML ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ํŒŒ์ผ์€ ํ˜„์žฌ ๋งค์šฐ ์ธ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ๋ ‡๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ํŒ€์˜ ์˜๊ฒฌ๊ณผ ๊ฒฝ์Ÿ ํ•  ํ•„์š”๊ฐ€ ์—†๋”๋ผ๋„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. XML๊ณผ JSON์„ ์–ธ์–ด์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ ํฌํ•จํ•˜๋Š” ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค. YAML์˜ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bgshacklett ๋‚ด๊ฐ€ ๊ผญ๋‘๊ฐ์‹œ ๋…€์„๋“ค๋กœ๋ถ€ํ„ฐ๋“ค์€

platyPS ํŒŒ์„œ๊ฐ€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ?

@vors PowerShell Core repo์—์„œ platyPS YAML ํŒŒ์„œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@lzybkr ๊ณผ ๊ฐ™์€ PowerShell ๊ฐค๋Ÿฌ๋ฆฌ์˜ ๋ณ„๋„ ๊ณต์‹ ๋ชจ๋“ˆ ์•„์ด๋””์–ด๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ powershell ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ž์ฒด ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ sqlserver ๋ชจ๋“ˆ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. @BrucePay ๊ฐ€ Microsoft ์ž์ฒด ๋ชจ๋“ˆ์ด์žˆ๋Š” PowerShell Gallery์˜ ํŽ˜์ด์ง€๋ผ๋ฉด ์ฐพ๊ธฐ๊ฐ€ ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋ฉฐ ๋ชจ๋‘๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ XML ๋ฐ JSON์œผ๋กœ Powershell์— ๋ฐฑ์—…๋˜์—ˆ๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ConvertFrom-YAML ๋ฐ ConvertFrom-YAML ๊ณต์‹ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. YAML์€ ๊ตฌ์„ฑ ํŒŒ์ผ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹์ด๊ณ  @bgshacklett์ด ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํƒ€์‚ฌ ๋ชจ๋“ˆ์ด

๋ธ”๋กœ๊ทธ ํ•ญ๋ชฉ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  YAML ํŒŒ์ผ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ ๋œ ๋‘ ๋ชจ๋“ˆ ์ธ PSYaml ๋ฐ powershell-yaml์„ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค .

๋‚ด๋ถ€์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋™์ž‘์ด ์žˆ์Šต๋‹ˆ๋‹ค.

| ๋ชจ๋“ˆ | ๋งคํ•‘ | ์‹œํ€€์Šค |
| --------- | : -------------- | ----------- |
| PSYaml | OrderedDictionary | ์–ด๋ ˆ์ด |
| powershell-yaml | Hastable | ๋ชฉ๋ก |

ํ‘œ์ค€ ConvertFrom-YAML ๋ฐ ConvertFrom-YAML ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ, ConvertFrom-Yaml ์—์„œ powershell-yaml ์šฉ๋„ OrderedDictionary ๋กœ ๋ณ€ํ™˜ ํ•  ๋•Œ -ordered ํŒŒ๋ผ๋ฏธํ„ฐ.
์ด ๋ชจ๋“ˆ์„ ์ž ์‹œ ๋™์•ˆ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ (DSC ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ ์šฉ Datum ๋ชจ๋“ˆ ๋ฐ ์ฃผ๋ฐฉ yamls์—์„œ) ํ…Œ์ŠคํŠธ ํ•  vsts ๋นŒ๋“œ ์ •์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ๋ถ€๋ฅด๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค : get-content -Raw MyFile.yml | ConvertFrom-Yaml -Ordered (์‚ฌ๋žŒ๋“ค์€ ์ข…์ข… -Raw ๋†“์นฉ๋‹ˆ๋‹ค).

Microsoft _official_ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. MSFT์— ๋” ๋งŽ์€ ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํœ ์„ ๋‹ค์‹œ ๋ฐœ๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋” ๋‚˜์€ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค ...
99 ๊ฐœ์˜ ๊ธฐ์กด ๊ตฌํ˜„ ์ค‘์—์„œ ํ‘œ์ค€์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์–ธ์–ด ๋ฐ–์—์„œ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข…์†์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ PS์— ๋ฒˆ๋“ค๋กœ ๋ฌถ๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค.
๊ด‘๋ฒ”์œ„ํ•œ npm ๋ฌธ์ œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํŒจ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. Fork ๋ฐ re-publish๋Š” ์ฆ‰์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ ์ธํ„ฐ๋„ท์—์„œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋ผ์ด๋ธŒ ์•ฑ์„ ๋ง๊ฐ€ ๋œจ๋ฆฐ ์ด์œ ์˜€์Šต๋‹ˆ๋‹ค.

@gaelcolas์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ’ˆ์งˆ์„ ๋†’์ด๊ณ  ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ชจ๋“ˆ์˜ ์†Œ์œ ์ž์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ด๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์—๋Š” AppVeyor, Travis CI, VSTS, AWS CloudFormation ๋“ฑ๊ณผ ๊ฐ™์€ ๋งŽ์€ ์‹ค์ œ YAML ํŒŒ์ผ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. YAML deserilization์— ๋Œ€ํ•œ ์ €์˜ ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ €๋Š” ํ•˜๋‚˜์˜ ์†”๋ฃจ์…˜์ด ๋ณดํŽธ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ๋Š” ๊ฑฐ์˜ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ํœ ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์žฌ๋ฐœ ๋ช…ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ์ €๋Š” @BrucePay "์ข‹์€ YAML ํŒŒ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค"์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด platyPS ๋ชจ๋“ˆ์€ ์ด๋ฏธ PowerShell ๋„์›€๋ง ํ™˜๊ฒฝ์—์„œ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” MSFT์—์„œ ์•„๋ฌด๋„์ด ๋ชจ๋“ˆ์ด ํ–‰๋™ ๊ฐ•๋ น ๋•Œ๋ฌธ์— ์–ผ๋งˆ๋‚˜ ์ข‹์€์ง€ ๋งํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋“ค์€ ์กฐ์šฉํžˆ ๊ทธ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•˜๊ฑฐ๋‚˜ ๊ฐœ์„  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์˜ค๋ž˜ ์ „์— ์ด์•ผ๊ธฐ ํ•ด ์™”์ง€๋งŒ ์—ฌ๊ธฐ์„œ์ด ๋ชจ๋“ˆ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์•„๋งˆ๋„ @adityapatwardhan ๊ณผ @ SteveL-MSFT๋Š” ํŠนํžˆ ์ƒˆ๋กœ์šด Help RFC๊ฐ€ ์ด๋ฏธ ์‹คํ—˜ ๋‹จ๊ณ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„ํš๊ณผ ํƒ€์ž„ ๋ผ์ธ์„ ์—ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๋Š” Msft์˜ "๊ณต์‹"๋ชจ๋“ˆ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ชจ๋“ˆ์ด ์„ฑ๊ณตํ•˜๊ณ  ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด๋˜๋Š” ๊ฒƒ์„ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@iSazonov ์ž˜ ์ •์˜ ๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์ง๋ ฌํ™” / ์—ญ ์ง๋ ฌํ™”ํ•˜๋Š” ์†”๋ฃจ์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ ํ•œ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. YAML์„ ์ค€์ˆ˜ํ•˜๋Š” ๋ชจ๋“  ์Šคํ‚ค๋งˆ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์†”๋ฃจ์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ผ์ž…๋‹ˆ๋‹ค.

๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ ค๋Š” MSFT์˜ ๋ฐ”๋žŒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ MSFT๋Š” ๋งŽ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์‹ ๋ขฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋งŽ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•œ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค

MSFT๋Š” 10 ๋…„ ์ „์— Powershell ์‚ฌ์–‘์„ ๊ฒŒ์‹œํ–ˆ์ง€๋งŒ MSFT๊ฐ€ ์ ์šฉ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์•„๋ฌด๋„์ด๋ฅผ ํฌํŒ…ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
OpenSSL ํ”„๋กœ์ ํŠธ๋Š” ์ˆ˜๋…„ ๋™์•ˆ ์กด์žฌ ํ•ด ์™”์ง€๋งŒ MSFT๋Š”์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์€ ๋™์•ˆ ์•„๋ฌด๋„ Windows๋กœ ์ด์‹ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
MSFT๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ API ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ณต๊ฐœํ–ˆ์ง€๋งŒ ๊ทธ์ค‘ ๋ช‡ ๊ฐœ๊ฐ€ Unix๋กœ ํฌํŒ… ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
ํšŒ์‚ฌ๊ฐ€ Mono๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  .Net Core ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ์ด์œ ์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
PowerShell์€ ์ด๋ฏธ 1 ๋…„ ๋ฐ˜์ด ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด์ง€๋งŒ์ด ์ €์žฅ์†Œ์—์„œ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ•œ ์‚ฌ๋žŒ ๋งŒ @markekraus ์ฝ”๋“œ์— ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ์—ฌํ•˜๊ณ  ํ•œ ์‚ฌ๋žŒ ๋งŒ @ mklement0์—์„œ ์ฒด๊ณ„์ ์ธ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋” ๋งŽ์€ ๊ธฐ์—ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด์ผ ์ƒํ™ฉ์ด ๋ฐ”๋€” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฏฟ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@markekraus ๋‚˜๋Š” http://yaml.org/spec/1.2/spec.html#id2802346์—์„œ ๋งค์šฐ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค :-)

@iSazonov ๋Š” ํƒ€์‚ฌ ๋ชจ๋“ˆ์˜ ์ง€์›, ์‹ ๋ขฐ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํƒ€์‚ฌ ๋ชจ๋“ˆ์€ Pester์™€ ๊ฐ™์ด ์„ฑ๊ณตํ•˜๊ณ  ์„ฑ์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํ›Œ๋ฅญํ•œ YAML ๋ชจ๋“ˆ์ด ํ–ฅํ›„ ๋ช‡ ๋…„ ๋™์•ˆ ์ž์ฒด์ ์œผ๋กœ ๋ฐœ์ „ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํ˜„์‹ค์€ ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋“ˆ์ด ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ•œ ์ž‘์„ฑ์ž์— ์˜ํ•ด ๊ฒŒ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœํ•˜๋Š” 2 ๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ๋๋‚ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ด๋“ค์„ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋…ธ๋ ฅ์— ์ง‘์ค‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฏธ๋ž˜์— ๋” ๋ฉ€์–ด ์ง€๊ฑฐ๋‚˜ ๋ถ€์‹ค ํ•ด์ ธ ๊ณง ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋” ๋งŽ์€ ๋ชจ๋“ˆ์„ ๊ฒŒ์‹œํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ ์ ˆํ•œ ํŒŒ์„œ๋ฅผ ๊ฐ–๋Š” ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ (๊ทธ๋ฆฌ๊ณ  ๋…ธ๋ ฅ ์ธก๋ฉด์—์„œ ์ƒ๋‹นํ•œ) ๊ธฐ์ดˆ ์ž‘์—…์ด ํ•„์š”ํ•˜๊ณ  ์ข‹์€ YAML ๋ชจ๋“ˆ์„ ๊ฐ–๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋‚˜๋Š” YAML ์ „๋ฌธ๊ฐ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋Š์Šจํ•œ ์–ธ์–ด ์‚ฌ์–‘ ์ž์ฒด ๋˜๋Š” VSTS ๋˜๋Š” AppVeyor์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์˜ ํŠน์ • ํ•ด์„์˜ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ข‹์€ ํŒŒ์„œ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์ผ๊นŒ ์š”?
VSCode์—์„œ YAML์„ ์ž‘์„ฑํ•˜๊ณ  VSTS์—์„œ ์‹คํ–‰ํ•  ๋•Œ๋งŒ VSTS ํŒŒ์„œ๊ฐ€ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์‹ค๋ง ์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ์ด ๋Œ€ํ™”๋Š” ์˜คํ”ˆ ์†Œ์Šค์˜ "์ฝ”๋“œ ํ ๋ ˆ์ด์…˜ / ์•„ํ‚คํ…์ฒ˜"๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค๋Š” ์ข‹์€ ์‹œ๋“œ ์•„์ด๋””์–ด์™€ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์œผ๋กœ ์ฑ„ํƒ๋˜์—ˆ์„ ๋•Œ ์‹ฌ๊ฐํ•œ ์•„ํ‚คํ…์ฒ˜ ์•ˆ๋ชฉ์ด ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฉด ์ ์ ˆํ•œ ์„ค๊ณ„ ๊ฒ€ํ† ์—์„œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์žˆ๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ 10 ๋…„์˜ ๋ฒ„๊ทธ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค. .

@bergmeister "์„ฑ์ˆ™ํ•œ ์„ฑ๊ณต"์˜ ์‹ค์ œ ์‚ฌ๋ก€์—์„œ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ์ž„๋ฌด๋ฅผ ๋งก์€ ์ ๊ทน์ ์ธ ๊ด€๋ฆฌ์ž๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋ณด์žฅ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๋Š” "YAML ์ง€์›์€ ํŒŒ์ผ ์ž‘์„ฑ์— ๋Œ€ํ•œ ์ง€์›๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค => ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ‘œ์ค€์ด ๋˜๋ ค๋Š” ์˜๋„๋กœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."

1) ์˜คํ”ˆ ์†Œ์Šค์˜ ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ ์†์„ฑ๊ณผ 2) Microsoft PowerShell ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—…์— ์ ์šฉํ•˜๋Š” ๊ณ ๋„๋กœ ์„ค๊ณ„๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ด‰๊ตฌํ•˜๋Š” YAML์˜ ํ•ต์‹ฌ ํŠน์„ฑ์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฉ‹์ง„ ๊ฒƒ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์„ฑ์ˆ™๋„์— ๋Œ€ํ•œ ๋งค์šฐ ์œ ํšจํ•œ ํฌ์ธํŠธ. ๋‚˜๋Š” ์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ๋‘ ๋ชจ๋“ˆ์„ ๋ฉด๋ฐ€ํžˆ ์‚ดํŽด ๋ณด์ง€ ์•Š์•˜๊ณ  ์–ด๋–ค ์˜๊ฒฌ๋„ ์ œ์‹œํ•˜๊ธฐ ์œ„ํ•ด yamldotnet์„ ๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 6.2.0์— ๋Œ€ํ•œ ๊ณ„ํš์„ ์‹œ์ž‘ํ•  ๋•Œ ์‚ดํŽด๋ณผ ์ˆ˜์žˆ๋Š” ๊ฒƒ

์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ์ €๋Š” PowerShell ํŒ€๊ณผ MSFT ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝํ—˜๊ณผ ์ฒด๊ณ„์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์†Œ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์Šคํƒฌํ”„๊ฐ€ ์ฐํžŒ MSFT์˜ ๋ชจ๋“ˆ๋กœ ๋ชจ๋“  ๊ฒฉ์ฐจ๋ฅผ ๋ฉ”์šฐ๋ ค๋Š” ๊ฒƒ์ด ์ž˜๋ชป์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ DSC ๋ฆฌ์†Œ์Šค์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค).
MSFT ์ œ๊ณต ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์˜์กด๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์€ ์ทจ์•ฝํ•˜๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ฑ์žฅ์ด๋‚˜ ์ƒํƒœ๊ณ„์˜ ๋‹ค์–‘์„ฑ์— ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” MSFT๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜์—ฌ ๊ทธ๋“ค์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ๊ด€ํ–‰๊ณผ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ•œํŽธ ๊ทธ๋“ค์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค (์™œ๋ƒํ•˜๋ฉด ๋‹ค๋žŒ์ฅ ...!).
์Šน์ธ ๋œ ๊ฒƒ์˜ ๊ณ ์œ  ํ•œ ๊ณต๊ธ‰์ž๋กœ์„œ์˜ _MSFT_๋Š” ์ด๋ฏธ ๊ต์œก์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ ์žˆ๋Š” ์˜ค๋ž˜๋œ ๋ชจ๋ธ์ด๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์žฅ๋ คํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OSS ์ƒํƒœ๊ณ„์˜ ํƒœ๋„).

PS ํŒ€์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  YAML ์ง€์›์ด ํ•ต์‹ฌ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐœ์„ ํ•˜๋„๋ก ๋•๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•˜๊ณ  ์–ด๋–ค ์ž‘์—…์ด ํ•„์š”ํ•œ์ง€๋“ค์„ ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ PS ํŒ€์˜ ๊ฒฌ์Šต / ๋ฉ˜ํ† ์‹ญ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.
์ƒˆ ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์—”์ง€๋‹ˆ์–ด์˜ ๋ฐ˜์‘์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. YAML ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ PS ํŒ€์˜ _ ์‰ฌ์šด ์—”์ง€๋‹ˆ์–ด๋ง ์ž‘์—…์ด์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ฑ์ˆ™๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ ์ ˆํ•œ ์ธ์„ผํ‹ฐ๋ธŒ๋ฅผ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
Yaml์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ์ „๋žต์  ํ•ญ๋ชฉ์ธ์ง€ ์—ฌ๋ถ€๋Š” MSFT์˜ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. :)

๋ฟก ๋นต๋€จ

๋‚˜๋Š” YAML ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹Œ ์ž์‹ ์œผ๋กœ ์ด๊ฒƒ์„ ์„œ๋‘์— ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. yaml ๊ตฌ์„ฑ๊ณผ ๊ฐ™์€ AppVeyor๋ฅผ ๋‚ด franken-pipeline์— ๊ตฝ๊ณ  ์‹ถ์„ ๋•Œ ์ด์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ญ ๊ฐœ์˜ C # ํ”„๋กœ์ ํŠธ๊ฐ€ YAML์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. PowerShell ํ”„๋กœ์ ํŠธ๋Š” YamlDotNet์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์‰ฝ์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ ์–ด๋„ PSYaml๊ณผ powershell-yaml์„ ๊ฐ€์ง€๊ณ  ๋†€์•˜๊ณ  ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ PowerShell ํ”„๋กœ์ ํŠธ๋ฅผ ๋œ ๋ฉด๋ฐ€ํžˆ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” YAML ์ „๋ฌธ๊ฐ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋Š์Šจํ•œ ์–ธ์–ด ์‚ฌ์–‘ ์ž์ฒด ๋˜๋Š” VSTS ๋˜๋Š” AppVeyor์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์˜ ํŠน์ • ํ•ด์„์˜ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ข‹์€ ํŒŒ์„œ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์ผ๊นŒ ์š”?

๋‚˜๋Š” ๊ธฐ๊ณ„๊ฐ€ ๋” ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ํฌ์ƒํ•˜๋ฉด์„œ ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜์žˆ๋Š” YAML์˜ ๋ณธ์งˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด ๊ฐ€๋…์„ฑ ์šฐ์„  ํŒจ๋Ÿฌ๋‹ค์ž„์€ YAML ์ž‘์„ฑ์ž๊ฐ€ YAML ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ YAML์€ YAML ์‚ฌ์–‘์— ๋”ฐ๋ผ ํ˜ธํ™˜๋˜์ง€๋งŒ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ค‘๊ฐœ์ž๋กœ์„œ ์—ญ ์ง๋ ฌํ™” ๋œ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, YAML์—์„œ ๊ฐ์ฒด๋กœ์˜ ์—ญ ์ง๋ ฌํ™”์˜ 90 %๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋””์ž์ธ / ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ 10 %๋Š” "YAML์€ ํŒŒ์‹ฑํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ํŒŒ์‹ฑ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ deserialized ๊ฐ์ฒด๋Š” ์ฐพ๊ณ ์žˆ๋Š” ๊ฒƒ์„ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค ....

์˜ˆ๋ฅผ ๋“ค์–ด AppVeyor.yml์˜ ๋ณด์•ˆ ๋ฌธ์ž์—ด์€

environment:
  my_var1: value1
  my_var2: value2
  my_secure_var1:
    secure: FW3tJ3fMncxvs58/ifSP7w==

powershell-yaml ๋ฐ YamlDotNet ๋Š” ์ด๊ฒƒ์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์ง€๋งŒ, ๋งŽ์€ ๋…ผ๋ฆฌ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด์ด ์Šคํ‚ค๋งˆ์— ์ ํ•ฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ๋””์ž์ธ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š” JSON์„ ๊ดด๋กญํžˆ์ง€ ๋งŒ JSON์˜ ๋” ์—„๊ฒฉํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ์–ธ๊ธ‰ ๋œ YAML ๋””์‹œ๋ฆฌ์–ผ๋ผ์ด์ €์— ๋Œ€ํ•œ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก , ๋ชจ๋ธ์€ ํ˜„์žฌ JSON cmdlet์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. "๊ณต์‹์ ์ธ"YAML ๋ชจ๋“ˆ / cmdlet์— ๋Œ€ํ•œ ๋ฐœ์–ธ์ด ์žˆ์œผ๋ฉด "ํ•„์ˆ˜"๊ธฐ๋Šฅ์œผ๋กœ ๋‚ด๋ ค ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ v5์— PowerShell ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋†“์นœ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.

IMO, YAML ๋ฌธ์ž์—ด์„ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‰ฌ์šด ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค (์ ์–ด๋„ 90 %์˜ ์‹œ๊ฐ„). ํŠธ๋ฆญ์€ YAML ๋ฌธ์ž์—ด์„ _useful_ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์†”๋ฃจ์…˜์˜ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์œ ์—ฐ์„ฑ์€ ๋‹ค์†Œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ ์ง๋ ฌํ™” ์กฐ์–ธ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด @IISResetMe ๋ฐ @lzybkr ์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค ....

๊ทธ ํšจ๊ณผ๋ฅผ ์œ„ํ•ด ์ผ๋ฐ˜์ ์ธ ๋ฒ”์œ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ์ฑ„ํƒํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์„ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ค‘๊ฐœ์ž๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (์—…์ŠคํŠธ๋ฆผ์—์„œ ๊ตฌ์›Œ ์ ธ์•ผํ•˜๋Š” ํœ  ์žฌ์ฐฝ์กฐ๋กœ ์ด์–ด์ง). ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” YAML์—์„œ ๊ฐ์ฒด๋กœ ์‰ฝ๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด YAML ๊ฐ€๋…์„ฑ์„ ์†์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋ฟก ๋นต๋€จ

PS ํŒ€์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  YAML ์ง€์›์ด ํ•ต์‹ฌ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐœ์„  ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ‘ํ•ฉ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ•„์š”ํ•œ ์‚ฌํ•ญ์„

MSFT๊ฐ€ ๋ช‡ ๋…„ ํ›„ Mono๋ฅผ ๊ณ„์†ํ•˜๋Š” ๋Œ€์‹  .Net Core ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ์ด์œ ๋ฅผ ์ž๋ฌธ ํ•ด๋ณด์‹ญ์‹œ์˜ค.

MSFT๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋‹ค๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ๋งฅ ์ƒ, ๋‚˜๋Š” ์–ด๋–ค ์ž‘์—…์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋ฅผ ์ฑ„ํƒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐœ์„ ๋˜๊ธฐ ์ „์— ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์•„ํ‚คํ…์ฒ˜ ๊ด€์ ์—์„œ ๋ฉด๋ฐ€ํžˆ ์กฐ์‚ฌ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€ํ†  ๋ฐ ์žฌ ์ถœ์‹œ ํ›„ ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ์š”์ ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์—์„œ ํ™œ์šฉ ๋  ํ•ต์‹ฌ ์ฝ”๋“œ์˜ ๋‰˜์•™์Šค๋ฅผ ์ฒ ์ €ํžˆ ์ดํ•ดํ•˜๋Š” ํŒ€์œผ๋กœ๋ถ€ํ„ฐ ์ค‘์š”ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€ํ†  ๋ฐ ์ˆ˜์ •์„๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ชจ๋ธ์€ ๋งค์ž… / ๊ณ„์•ฝ / ์ดˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ช… ์ด์ƒ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์› / ํšŒ์‚ฌ์™€ ์ƒ์—…์  ์กฐ๊ฑด์— ๋„๋‹ฌํ•˜์—ฌ MSFT ์ฃผ๋„ / ์ด‰์ง„ ๋œ ๊ฐœ๋ฐœ์ฃผ๊ธฐ์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ๋ชจ์ง‘ํ•˜์—ฌ ์ œํ’ˆ์„ (์ผ๋ถ€ ๋ฐฉ์‹์œผ๋กœ) ํ†ตํ•ฉ / ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. . ์ด๊ฒƒ์€ Net Foundation์— ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  MIT์—์„œ ๋ผ์ด์„ผ์Šค๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  Xamarin์„ ํ†ตํ•ด Miguel de Icaza ๋ฐ Nat Friedman๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ์ง‘ / ๊ณ„์•ฝ / ๊ด€๋ จ์‹œํ‚จ Xamarin๊ณผ ํ•จ๊ป˜ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ์ด๊ฒƒ์ด ์˜คํ”ˆ ์†Œ์Šค ๋ฐ˜์—ญ์ด๋ผ๊ณ  ์šฐ๋Š” ์†Œ๋ฆฌ๋ฅผ๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ์†Œ๊ทœ๋ชจ ๊ธฐ์—…์ด ๋‚˜์ค‘์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฃผ์š” ์ƒํƒœ๊ณ„์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ฑ„ํƒํ•˜๊ณ  ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์ ํ•ฉ ํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ƒํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๊ธ์ •์  ์ธ ์ธ์„ผํ‹ฐ๋ธŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ฐœ๋…๊ณผ ๊ธฐ๋Šฅ๊ณผ ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ๋ณต์‚ฌํ•˜์ง€๋งŒ ์ œ์ž‘์ž์™€ (ํ‘œ๋ฉด์ ์œผ๋กœ) ์ฝ”๋“œ๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๋นˆ ์‚ฌ๋‚ด ๋‹ค์‹œ ์‹คํ–‰์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@iSazonov ๋Šฆ๊ฒŒ ๋‹ต์žฅ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. platyPS yaml ํŒŒ์„œ๋Š” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค ๊ฐ’ ์Œ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ YamlDotNet์„ ์‚ฌ์šฉํ•˜์—ฌ yaml์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์„ธํŠธ์—์„œ ์ œ์™ธํ•˜๋ ค๋Š” ๊ฐ์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ, Ruby, Python ๋˜๋Š” Node.js์™€ ๋น„๊ตํ•˜์—ฌ PowerShell์ด โ€‹โ€‹์ข…์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ ์–ธ์–ด์—๋Š” ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ (๋ฒˆ ๋“ค๋Ÿฌ, pip, npm / yarn)๊ฐ€์žˆ์–ด ์™ธ๋ถ€ ์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Gemfile/Gemfile.lock ๋˜๋Š” package.json/package-lock.json [,yarn.lock] ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ณ  ๋งค์šฐ ํŠน์ •ํ•œ ํŒจ์น˜ ์ˆ˜์ค€์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ œ ์ƒ๊ฐ์—๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ์ด ๊ทผ๋ณธ์ ์ธ ๊ฒƒ์„ ์‹คํ˜„ํ•  ์ˆ˜์žˆ๋Š” ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ .

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Nuget์œผ๋กœ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์ž‘์—…์ด์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ PowerShell์— ๋Œ€ํ•œ ์ข…์†์„ฑ ๊ด€๋ฆฌ ์ „๋žต / ํŒจํ„ด์„ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ์‚ฌ๋Š” ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐค๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํ•„์š”ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘์š”ํ•œ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:
๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ _may_๋ฅผ ์ฐพ๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค : https://docs.microsoft.com/en-us/powershell/wmf/5.0/psget_moduledependency. ์ž ์‹œ ์‹œ๊ฐ„์„๋‚ด์–ด ํ…Œ์ŠคํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์ด ํ•ต์‹ฌ ํ•ญ๋ชฉ์ด์–ด์•ผํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ๋‚ด ์ž…์žฅ์„ ์žฌ๊ณ ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์—ฌ์ „ํžˆ JSON์ด ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์‚ฌ์‹ค๊ณผ ์กฐํ™”๋ฅผ ์ด๋ฃจ๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์ง€๋งŒ "๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ"๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@bgshacklett ์€ ๋งค์šฐ ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค.

@ chuanjiao10- ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋งŽ์€ ๋ฌธ์ œ์—์„œ ๋ฐฉํ•ด๊ฐ€๋˜๋Š” ๋Œ“๊ธ€์„ ์ค‘์ง€ํ•˜์„ธ์š”. ์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…์€ Microsoft.PowerShell.Utility ๋ชจ๋“ˆ์— ํฌํ•จ ํ•˜์ง€ ์•Š๊ณ  ์‹ค์ œ๋กœ PowerShellGallery์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ๋ฐฐ์†กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋งํ•  ๋•Œ XML ๋˜๋Š” JSON๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ƒ๊ฐํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ YAML์ด PowerShell์— ์ „ํ˜€ ๊ตฌ์›Œ ์ง€์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ ๋ฒ„์ „์˜ PowerShell์„ ์„ ํƒํ•˜์ง€ ์•Š๊ณ ๋„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ๋ณ„๋„์˜ ๋ชจ๋“ˆ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

YAML์ด XML๊ณผ ๊ฐ™์€ PowerShell๋กœ ๊ตฌ์›Œ ์กŒ๋‹ค๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ([xml] "b"๋ฅผ ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค).

JSON ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด YAML๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” cmdlet์ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ PowerShell์— ๊ตฌ์›Œ์ง„ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ YAML ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด PowerShell์„ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์€๋ฐ›์€ ํŽธ์ง€ํ•จ์— "์˜ฌ๋ฐ”๋ฅธ"๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์˜ณ์€ ์ผ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

@lzybkr ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์žฌํ‰๊ฐ€๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ๋ชจ๋“ˆ์„ _ ๋˜ํ•œ _ ๋ฐฐ์†กํ•ด์•ผํ•˜์ง€๋งŒ ํ˜„๋Œ€ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ†ค์ด ์ง€๊ธˆ YAML์„ ํ•„์š”๋กœํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

6.0 ์‹œ๊ฐ„๋Œ€๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํ•˜์œ„ํ•˜๊ณ  IMO๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ณ ํ’ˆ์งˆ์— ๋„์ฐฉํ•˜๋Š”์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋œ PowerShell์—์„œ์˜ ํŒ€ ์ž‘์—…๊ณผ PowerShell์„ ํŒ€์˜ ๋„์›€์œผ๋กœ์ด ๋“œ๋ผ์ด๋ธŒ์— ๋” ๋งŽ์€ ์ง€์—ญ ์‚ฌํšŒ์˜ ์ˆ˜์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ชจ๋“ˆ์„ ๋ฐฐ์†กํ•˜๋Š” ๊ฒƒ์€ ํ›จ์”ฌ ๋” ๋‚ด๋ณด๊ธฐ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ @ chuanjiao10 ์ด์ „์—๋Š” # 2109์˜ PowerShell Core์— YAML Cmdlet์„ ๋„ฃ์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ • ๊บผ์•ผ ํ•˜๋ฏ€๋กœ ๊ทธ ๋‹น์‹œ์—๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

...์— ๊ด€ํ•ด์„œ

๋‹จ๊ฒฐ์€ ํž˜์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ๊ฐ€ ํ•„์š”ํ•œ ๋ฏธ๊ตญ์ธ, ๊ทธ๊ฐ€ ์›”๋งˆํŠธ์— ๊ฐ€์„œ ๋ฐ”ํ€ด๋ฅผ ์‚ฌ๊ณ  ์•„๋งˆ์กด์— ๊ฐ€์„œ ์—”์ง„์„ ์‚ฌ๊ณ  ์ž์‹ ์„ ํ•ฉ์น˜๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ž๋™์ฐจ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์ž๋™์ฐจ์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‹ค์–‘ํ•œ ๊ณต๊ธ‰ ์—…์ฒด์—์„œ ์ œ๊ณต ํ•œ ๋‹ค์Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ œํ’ˆ์œผ๋กœ ํŒจํ‚ค์ง•๋œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ ๋‹ค์†Œ ์ž˜๋ชป๋œ ๋น„์œ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœ ํ•œ PowerShell ๋ชจ๋“ˆ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์— ์‚ฌ์šฉ

์ด ์ ์— ๋Œ€ํ•ด

๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด convertfrom-json, convertto-json ๋“ฑ๋„ PowerShellGallery์— ๋ฐฐ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” # 1979์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋‚ด์žฅ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ์˜นํ˜ธํ–ˆ์œผ๋ฉฐ # 5681์—์„œ ๋” ๋…ผ์˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ PowerShell Core๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๊ฒฐํ•˜๋‹ค๋Š” ๊ฒƒ์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ

YAML์„ ์ฐจ๋ณ„ํ•˜์ง€ ๋ง๊ณ  JSON์„ ์นญ์ฐฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๋‘˜ ๋‹ค ๊ฒฐํ•จ์ด ์žˆ์ง€๋งŒ ๋‘˜ ๋‹ค ์‚ฌ์šฉ์ด ์žˆ๊ณ  PowerShell์—์„œ Json cmdlet์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋ฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Yaml์„ ์ฐจ๋ณ„ํ•˜๊ฑฐ๋‚˜ Json์„ ์•„์ฒจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์„ ์•ฝ๊ฐ„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ•ต์‹ฌ ์–ธ์–ด์— ํฌํ•จ ๋œ YAML์„ ์„ ํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋‚˜์—ดํ•˜๊ณ  PowerShell ๊ฐค๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“ˆ์ด ์–ธ๊ธ‰ ๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ๋‚˜์—ด ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ ์ค‘์‹ฌ์˜ ํ† ๋ก ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž ์žฌ์ ์œผ๋กœ ๋‹น๋ฉดํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์˜ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์šด์˜ ์ฒด์ œ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋ชจ๋‘์˜ ๋ฒ ์–ด ๋ฉ”ํƒˆ ์ž๋™ํ™”์ž…๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœ ํ•œ YAML ํŒŒ์ผ์„ ์ฝ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ข…์ข… ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์™ธ๋ถ€์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด ์žˆ๊ณ  SLA๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค๋Š” ์ ˆ๋Œ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™•์žฅ ํ™œ๋™์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด powershell ์ฝ”์–ด์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ’‹ ํ”„๋ฆฐํŠธ๋ฅผ ๋ฐฐ์†กํ•˜๊ธฐ์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

ํ™œ๋ฐœํ•œ ํ† ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ์˜๋ฅผ ๊ฐ–์ถ”๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

@ PowerShell / powershell-committee๋Š” ์ด์ „์— ์ด๊ฒƒ์„ ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” YAML์ด ์˜ค๋Š˜๋‚  ์–ผ๋งˆ๋‚˜ ๋„๋ฆฌ ํผ์ ธ ์žˆ๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•  ๋•Œ YAML์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ˜„์žฌ PSCore6์—์„œ ์ œ๊ณตํ•˜๋Š” ๋” ๋งŽ์€ ๋ชจ๋“ˆ์ด ์ œ๊ฑฐ๋˜์–ด PSCore6์˜ ์ตœ์†Œ ์„ค์น˜๋กœ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค (๋ฉ”ํƒ€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด 10 ๊ฐœ ์ด์ƒ์˜ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ DevOps ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ). ์˜ˆ๋ฅผ ๋“ค์–ด

YAML ์ง€์›์€ ํŒ€์ด 6.2 ๋ฆด๋ฆฌ์Šค ์ดํ›„๋ฅผ ์‚ดํŽด ๋ณด๊ธธ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ SteveL-MSFT ๋ฌธ์ œ ๋ฐ https://github.com/dotnet/corefx/issues/34578 ์— ๋”ฐ๋ผ ์˜๊ฒฌ์„ ๋ณด๋‚ด ์ฃผ

in. ๋‚ด ์˜๊ฒฌ์€ convertfrom-json, convertfrom-jaml์ด ๋™์ผํ•œ ์ƒํƒœ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” JSON cmdlet์„ ํ”„๋กœ์ ํŠธ ๋ฐ–์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•œ๋‹ค๊ณ  ์ฃผ์žฅ ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๋‹นํžˆ ํฐ ๋ณ€ํ™”๋ฅผ ์›ํ•˜์ง€๋งŒ cmdlet์ด PowerShell์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ”„๋กœ์ ํŠธ ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜๋ฉด cmdlet ๋ชจ๋“ˆ์˜ ์ƒˆ๋กœ์šด ์ฃผ ๋ฒ„์ „์—์„œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ PowerShell์„ ์ด์ „ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์ œ๊ณตํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ชจ๋“ˆ ์ธ IMO๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฒˆ๊ฑฐ ๋กญ์Šต๋‹ˆ๋‹ค.

YAML์„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž„์˜๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค JSON๊ณผ Pester์˜ ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ PowerShell์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ์–ด์•ผํ•˜์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ PS ํŒ€๊ฐ„์— ์†Œ์œ ๊ถŒ์„ ๊ณต์œ ํ•˜๋Š” ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์ผ์ข…์˜ ๋ชจ๋“ˆ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ์ƒ๊ฐ์„ ์ข‹์•„ํ•œ๋‹ค. JSON Cmdlet์„ ์ œ๊ฑฐํ•˜๋ฉด ํ˜„์žฌ ์™ธ๋ถ€ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ข…์†์„ฑ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์›Œํฌ ํ”Œ๋กœ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ yaml์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž, ์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” yaml ๋ช…๋ น์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๊ทธ๋“ค์„ ํ•„์š”๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์™ธ๋ถ€ ๋ชจ๋“ˆ ์ด์ƒ ํ—ˆ์šฉ ๋ฐ ํ•ต์‹ฌ ์ €์žฅ์†Œ์— ๋ฒˆ๋“ค๋กœ ๋ฌด์—‡๋ณด๋‹ค ๋” ์œ ์—ฐํ•œ ์ง€์› ๊ธฐ๊ฐ„์„ ๊ฐ€์ง€๊ณ  ๊ทธ๋“ค์ด ์ง์ ‘ PowerShell์„ ๋‚ด์— ํฌํ•จํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” DevOps ๋ฉ”ํƒ€ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ @ SteveL-MSFT ์•„์ด๋””์–ด๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ์ด๋ฅผ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋งํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์„ธํŠธ๊ฐ€ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ ํ•  ์ˆ˜์žˆ๋Š” ๋” ๊ฐ„๋‹จํ•œ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์˜์กด์„ฑ๋ณด๋‹ค ์™ธ๋ถ€ ์˜์กด์„ฑ์œผ๋กœ, ์•ž์œผ๋กœ ๋‚˜์—๊ฒŒ ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ, ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ๋ฉ”ํƒ€ ๋ชจ๋“ˆ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ œ๊ฐ€ Windows์— ์žˆ๊ณ  anisble์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™œ yaml cmdlet์ด ํ•„์š”ํ• ๊นŒ์š”? ์ฐฝ๋ฌธ?

@ chuanjiao10์—์„œ ์–ธ๊ธ‰ ํ•œ๋Œ€๋กœ yml์„ ์‚ฌ์šฉํ•˜๋Š” Linux ์„ธ๊ณ„์—๋Š” ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์ง€๋งŒ Windows ์„ธ๊ณ„์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ฒด PowerShell ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ดํ•ด๋กœ ๋ณผ ๋•Œ ์—ฌ์ „ํžˆ ๋Œ€๋ถ€๋ถ„์˜ PowerShell 5.1์€ ์‹œ์Šคํ…œ์— ๋“ค์–ด ์žˆ์œผ๋ฏ€๋กœ PowerShell 5.1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. , Yaml cmdlet์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•˜๋Š” ๋™์•ˆ Linux ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ Windows ์‚ฌ์šฉ์ž๋ฅผ์œ„ํ•œ ๋ถˆํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ฒˆ๋“ค ํ•ญ๋ชฉ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ ๋‘ ์‚ฌ์šฉ์ž ์ง‘ํ•ฉ์„ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋‘ ์‚ฌ์šฉ์ž ์ง‘ํ•ฉ์ด ๋ชจ๋‘ ์™ธ๋ถ€ ๋ชจ๋“ˆ์ด๋œ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์†Œ์œ ์ž๊ฐ€๋˜์–ด ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋Ÿฌํ•œ cmdlet์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@iSazonov corefx๋Š” ํ˜„์žฌ ๋‚ด์žฅ YAML ์ง€์›์— ๊ด€์‹ฌ์ด์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. YamlDotNet์€ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธ ๊ฒƒ ๊ฐ™๊ณ , MIT ๋ผ์ด์„ผ์Šค๊ฐ€ ์žˆ๊ณ  ์ ๊ทน์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ๊ฑฐ๊ธฐ์„œ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ”„๋กœ์ ํŠธ๋Š” ํ›Œ๋ฅญ ํ•  ๊ฒƒ์ด๋ฉฐ PowerShell ํŒ€์— ๋งก๊ธฐ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

- @ SteveL - MSFT ์ข‹์€ ์ด์œ ์— ๋Œ€ํ•œ ์ด์ž–์•„ ๋ณด์ธ๋‹ค https://snyk.io/vuln/SNYK-DOTNET-YAMLDOTNET-60255 I๋Š”์ด ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ๋‚ฎ์ถ˜ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

corefx๋Š” ํ˜„์žฌ ๋‚ด์žฅ YAML ์ง€์›์— ๊ด€์‹ฌ์ด์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

CoreFX ํŒ€์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. PowerShell ํ”„๋กœ์ ํŠธ์—์„œ API๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋งํ•˜๋ฉด API ์ถ”๊ฐ€๋ฅผ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ”„๋กœ์ ํŠธ๋Š” ํ›Œ๋ฅญ ํ•  ๊ฒƒ์ด๋ฉฐ PowerShell ํŒ€์— ๋งก๊ธฐ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค, ๊ทธ๋Ÿฐ ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค-Pester. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” yaml ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?
ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ MSFT๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ฝ”๋“œ์˜ ํ’ˆ์งˆ, ๊ทœ์ • ์ค€์ˆ˜ ๋ฐ ๋ณด์•ˆ ์ˆ˜์ค€์— ๋„๋‹ฌ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ €๋ฅผ ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.
๋ณด์•ˆ ๊ฐ์‚ฌ ์—†์ด๋Š” MSFT๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ ๋ขฐํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ž‘๋™์‹œํ‚ฌ ์•„์ด๋””์–ด๊ฐ€ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค. CoreFX ๋ฐ PowerShell๊ณผ ๊ฐ™์€ MSFT GitHub ํ”„๋กœ์ ํŠธ๋Š” "MSFT๊ฐ€ ์†Œ์œ "ํ•˜๊ณ  "MSFT๊ฐ€ ์ฃผ๋„"ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์€ "MSFT ์†Œ์œ ", "์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„"๋ฐ "MSFT๊ฐ€ ๋ฉ˜ํ† ๋ง"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. '๋ฉ˜ํ† ๋ง'์ด๋ž€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ํ’ˆ์งˆ์ด ๋†’์€ ํ™˜๊ฒฝ์˜ ๊ตฌํ˜„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Microsoft๋Š” PowerShell Core์— ๋Œ€ํ•œ YAML ์ง€์› ๊ธฐ๋ณธ ์ œ๊ณต์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•˜๊ณ  ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

@brettjacobson ์˜ˆ, ๋‹จ์ˆœํ•˜๊ณ  ๋‹จ์ˆœํ•˜๋ฉฐ ๊ณ ํ’ˆ์งˆ์ด์ง€๋งŒ MSFT ํŒ€์—๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ์Šต๋‹ˆ๊นŒ? :-)

@brettjacobson -Microsoft๋Š” YAML ์ง€์›์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ–ˆ๋‹ค๋ฉด ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€์—†๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๋„ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งŽ์€ want ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์ด๋ฉฐ ๊ถ๊ทน์ ์œผ๋กœ use ๋˜์ง€๋งŒ ์ค‘์š”ํ•œ need ๋Š” ์•„๋‹ˆ๋ฏ€๋กœ @ SteveL-MSFT์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ์šฐ์„  ์ˆœ์œ„๋ฅผ ์–ป์„ ๊ฐ€๋Šฅ์„ฑ์ด _ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค _ ๊ทธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ–ˆ์„ ๋•Œ

YAML ์ง€์›์€ ํŒ€์ด 6.2 ๋ฆด๋ฆฌ์Šค ์ดํ›„๋ฅผ ์‚ดํŽด ๋ณด๊ธธ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ”„๋กœ์ ํŠธ๋Š” ํ›Œ๋ฅญ ํ•  ๊ฒƒ์ด๋ฉฐ PowerShell ํŒ€์— ๋งก๊ธฐ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PowerShell ํŒ€์€ ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š์œผ๋ฏ€๋กœ YAML์— ๋Œ€ํ•œ ์ง€์›์„๋ฐ›์„ ์ˆ˜์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ ์ œํ’ˆ ์ž์ฒด์— ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ PowerShell์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ ์™ธ๋ถ€์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CoreFX ํŒ€์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. PowerShell ํ”„๋กœ์ ํŠธ์—์„œ API๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋งํ•˜๋ฉด API ์ถ”๊ฐ€๋ฅผ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@iSazonov IMHO๋Š” ์•„์ง ์™„์ „ํ•œ JSON ์ง€์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— CoreFX์— ๋‚ด์žฅ ๋œ YAML ์ง€์›์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"ํ›Œ๋ฅญํ•œ"ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ James Newton-King์—๊ฒŒ Newtonsoft.Yaml ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? :-)

@NextTurn .Net Core 3.0์—์„œ ์ƒˆ๋กœ์šด Json (๋งค์šฐ ๋น ๋ฅด๋ฉฐ (Newton.Json๋ณด๋‹ค ๋น ๋ฅด๋ฉฐ) ๋งค์šฐ ์œ ์—ฐํ•จ) ๊ตฌํ˜„์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
CoreFX ํŒ€์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํฐ ์š”์ฒญ์ด ์žˆ์œผ๋ฉด ํ•ญ์ƒ ์ƒˆ๋กœ์šด API๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. YAML์˜ ํ˜œํƒ์„๋ฐ›์„ ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งŽ์œผ๋ฉด ์ถ”๊ฐ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ทธ๋Ÿฌํ•œ ์š”์ฒญ์€ ์—†์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด pwsh ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋ฌด์—‡์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” Install-Module -Name powershell-yaml ํ•ฉ๋‹ˆ๋‹ค.

Mongo, Kubernetes, Istio, Ansible, ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด YAML์ด๋ฉฐ YAML ํ…œํ”Œ๋ฆฟ๊ณผ ๋ณ€ํ™˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. pwsh ์€ DevOps์— ์ ํ•ฉํ•˜๋ฉฐ YAML์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@ dzmitry-lahoda Issue # 5681์€ Pester ๋“ฑ๊ณผ ๊ฐ™์€ ๊ณตํ†ต ๋ชจ๋“ˆ ์„ธํŠธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” 'ํ’๋ถ€ํ•œ'๋ฒ„์ „์˜ PowerShell์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ์— ๊ฒŒ์‹œ ํ•ด์ฃผ์„ธ์š”. ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ 2 ๊ฐœ์˜ yaml ๋ชจ๋“ˆ ์‚ฌ์ด์—์„œ ๋ถ„๋ช…ํ•œ ์Šน์ž์ด๋ฉฐ ์„œ๋กœ๋ฅผ ๋ฐฉํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ๊ฒฐ์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

YAML์ด ํ•˜๋‚˜๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
image

Pester , ์˜ˆ. pwsh ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šฉ YAML ๋ฆฌ๋”์™€ ๋‹ฌ๋ฆฌ BDD ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋ฉ”์ธ ๋ผ์ธ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๊นŒ? Microsoft์—์„œ ์‚ฌ์šฉํ•  ๊ถŒ์žฅ (๋˜๋Š” ์ œ์•ˆ) ๋ชจ๋“ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
DevOps ํŒŒ์ดํ”„ ๋ผ์ธ์€ yaml์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐฐํฌ ์ž๋™ํ™”๋Š” powershell๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. yaml๊ณผ powershell์ด โ€‹โ€‹์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Powershell์€ Azure DevOps ์ž๋™ํ™”์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‚˜์š”?
๋‚ด ๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ / ํ˜์‹ ์— ๋Œ€ํ•ด ์‹ ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ์œผ๋ฉฐ ์–ด๋–ค ๋ฐฉํ–ฅ์„ ๊ณ ๋ง™๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@dirkslab https://github.com/cloudbase/powershell-yaml์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub
YAML ํ˜•์‹ ์กฐ์ž‘์„์œ„ํ•œ PowerShell CmdLets. GitHub์—์„œ ๊ณ„์ •์„ ๋งŒ๋“ค์–ด cloudbase / powershell-yaml ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜์„ธ์š”.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @iSazonov , ๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ํ˜„์žฌ ํ…Œ์ŠคํŠธํ•˜๊ณ ์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ํ•ด๊ฒฐ์ฑ…์€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

powershell-yaml์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜์—†๋Š” ๋ชจ๋“ˆ์„ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹ธ์šฐ๊ณ ์žˆ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. Microsoft๋Š” yaml ํŒŒ์ดํ”„ ๋ผ์ธ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. Microsoft (๋˜๋Š” ์ ์–ด๋„์ด ์Šค๋ ˆ๋“œ)๋Š” yaml ๊ตฌ์„ฑ์„ powershell๊ณผ ํ†ตํ•ฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ€์‚ฌ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ๋ณด์ฆํ•˜๊ฑฐ๋‚˜ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ธฐ์—…์— ๋…ผ๋ฆฌ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๊นŒ?
์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ๊ฒฝํ—˜์€ ํ•ญ์ƒ Microsoft๊ฐ€ ๋ณด์ฆํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์†”๋ฃจ์…˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ Microsoft์˜ ์ง€์›์ด๋‚˜ ์ดํ•ด๊ฐ€ ์Œ์†Œ๊ฑฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (์ง€์›๋˜์ง€ ์•Š๋Š” ๋ถ€ํ’ˆ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์— ๋‹ฟ๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Œ). ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ถ€ํ’ˆ์ด ์žˆ๋‹ค๋Š” ๋‹จ์ˆœํ•œ ์‚ฌ์‹ค๋งŒ์œผ๋กœ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์› / ์ฑ…์ž„์ด ์—†์Šต๋‹ˆ๋‹ค.
์ด ์˜คํ”ˆ ์†Œ์Šค ์‹œ๋Œ€์— ์ƒํ™ฉ์ด ๋ฐ”๋€Œ์—ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft์˜ ๊ฐ„๋‹จํ•œ ๊ณต์‹ ์‘๋‹ต๊ณผ ์•ˆ๋‚ด๋Š” ๋‚˜๋ฅผ ํŽธ์•ˆํ•˜๊ฒŒํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฌธ์•ˆ ์ธ์‚ฌ.

@dirkslab ๊ท€ํ•˜์˜ MSFT ๊ณ„์ • ๊ด€๋ฆฌ์ž๊ฐ€ ์ง€์› ์ •์ฑ…์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณผ ์ˆ˜์žˆ๋Š”

CoreFX ํŒ€์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ๋ฌป์Šต๋‹ˆ๋‹ค.

Yaml์ด ์˜ค๋Š˜๋‚  CI / CD ๋ฐ ๊ตฌ์„ฑ ์‹œ์Šคํ…œ ์ˆ˜์—์„œ ์šฐ๋ฆฌ ์ฃผ๋ณ€์— ์žˆ๋‹ค๋Š” ๋ช…๋ฐฑํ•œ ์ด์ ์„ ํ™œ์šฉํ•˜์—ฌ ConvertTo-Yaml์˜ ์ถ”๊ฐ€ ์ด์ ์€ ์ง€๊ธˆ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ConvertTo-Json ์™€ ๋‹ฌ๋ฆฌ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜์žˆ๋Š” ํ˜•์‹์œผ๋กœ nasted HashTable์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ถœ๋ ฅ์„ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ Write-HashTable ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ OTB๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” yaml์„ ์‹ซ์–ดํ•œ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ •๋ง๋กœ ์‹ซ์–ดํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MS ํŒ€์ด ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ธก๋ฉด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ทธ๊ฒƒ์€ CI์˜ ์‚ฌ์‹ค์ƒ์˜ ์–ธ์–ด๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค : docker-compose.yaml, ansible, kuber, k8s, github, circle, azure, ... ๊ทธ๋ฆฌ๊ณ  CI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋กœ ํฌ๋กค๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
$config = Invoke-WebRequest https://$ciserver/api/projects/$project/config.yaml | ConvertFrom-Yaml
$config['started'] = Get-Date
$config['options'] = $options
Invoke-WebRequest -Method Post https://$ciserver/api/projects/$project/build -Body ($config | ConvertTo-Yaml)

์ด ๋ฐฐ๋ฅผ powershell๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด CI ๊ทธ๋ฃน์— ์ „ํŒŒํ•˜๋Š” ๋ฐ ๋ณ€ํ™”๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
"MS powershell๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."-> "์ถ”๊ฐ€ ์ •๋ณด?"
vs
"ms powershell๋กœ ์ „ํ™˜ํ•˜๊ณ  ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด"-> "์•„๋‹ˆ์š”"

  1. ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์ˆœ์กฐ ๋กญ์ง€ ๋งŒ yaml์€ json์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ด๋ฏ€๋กœ json์€ yaml์˜ ์ถ•์•ฝ ๋œ ํ˜•ํƒœ์ด๊ณ  ํšจ์œจ์ ์ธ yaml ํŒŒ์„œ๋Š” ํšจ์œจ์ ์ธ json ํŒŒ์„œ์ž…๋‹ˆ๋‹ค.

7.1์— ๋Œ€ํ•ด ์žฌ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜์—†๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ DevsOpsy๊ฐ€ ์‹ค์ œ๋กœ PowerShell์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

IMHO, YAML์€ JSON ๋ฐ CSV๋งŒํผ ์ธ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ PowerShell์— YAML ์šฉ๋ฐ›์€ ํŽธ์ง€ํ•จ ๋ณ€ํ™˜๊ธฐ๊ฐ€์—†๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์Šฌํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค. ๋ฐ›์€ ํŽธ์ง€ํ•จ YAML ๋ณ€ํ™˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ JSON ๋ณ€ํ™˜๊ธฐ์™€ ๋™์ผํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์‚ฌ๋žŒ๋“ค์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ์œ„ํ•œ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ, ํ˜„์žฌ ์„ธ์ƒ์—์„œ YAML ๋ณ€ํ™˜์€ ํ…Œ์ด๋ธ” ์Šคํ…Œ์ดํฌ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด JSON ๋ณ€ํ™˜์„ ์œ„ํ•ด ํƒ€์‚ฌ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œ ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

SteveL-MSFT picture SteveL-MSFT  ยท  3์ฝ”๋ฉ˜ํŠธ

JohnLBevan picture JohnLBevan  ยท  3์ฝ”๋ฉ˜ํŠธ

concentrateddon picture concentrateddon  ยท  3์ฝ”๋ฉ˜ํŠธ

lzybkr picture lzybkr  ยท  3์ฝ”๋ฉ˜ํŠธ

rudolfvesely picture rudolfvesely  ยท  3์ฝ”๋ฉ˜ํŠธ