Azure Devops + R ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ์ฐธ๊ณ ์ฌํญ๊ณผ ๊ฐ์ด๋๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค.
โ ์ด ์น์ ์ ํธ์งํ์ง ๋ง์ญ์์ค.
์๋ ํ์ธ์ @brshallo - ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ์์ฑ์์๊ฒ ํ ๋นํ์ฌ ๋ ๊ฒํ ํ๊ณ ์ฌ๋ฐ๋ฅธ ์กฐ์น๋ฅผ ์ทจํ๋๋ก ํ์ต๋๋ค.
์๋ ํ์ธ์ @brshallo์ ๋๋ค. ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ํด ์กฐ๊ธ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋ฅผ ๋ค์ด Azure DevOps ๋ด์์ ๊ด๋ฆฌํ๋ ค๋ R ์ฝ๋๊ฐ ์์ต๋๊น? CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํจ๊ป ๋ฐฐํฌํ๋ ค๋ R ๋ชจ๋ธ์ด ์์ต๋๊น?
์๋๋ฉด R๋ก Azure DevOps๋ฅผ ์ ์ดํ๋ ค๊ณ ํ์๋์? DevsOp API๋ฅผ ํธ์ถํ์ฌ ์ ๋น๋๋ฅผ ์์ํ๋ R ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์๊ฒ ์ต๋๊น?
@AnalyticJeremy ์ฆ์ ๋ด๋ถ์์ ๊ฐ๋ฐ๋ ์ผ๋ถ R ํจํค์ง๋ฅผ Azure Devops๋ก ์ด๋ํฉ๋๋ค. ์ฐ๋ฆฌ๋ Azure Devops๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํจํค์ง์ ๋ํ ํ ์คํธ ๋ฐ ๋ฌธ์ + ๋น๋คํธ ๊ตฌ์ถ์ ๊ด๋ฆฌํ๊ณ ์ถ์ต๋๋ค. (์ ํฌ ํ์ ์ด์ ๋ง ์ก์ธ์ค ๊ถํ์ ์ป์๊ณ ์ฅ๊ธฐ์ ์ผ๋ก๋ ํจ์ฌ ๋ ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก์ Azure Devops๋ฅผ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.)
@robertdj ๋ธ๋ก๊ทธ์์ Azure Devops + R ์์ต์(์: azure devops์ test r)๋ฅผ ์ฐพ์๊ณ Rstudio Community ํ์ด์ง ์์ ์ด ์ค๋ ๋๋ฅผ ์ฐพ์์ต๋๋ค. Microsoft ์ฌ์ดํธ์์ R + Azure Devops ๊ด๋ จ ๋ฌธ์๋ฅผ ์ฐพ์ ์๋ ์์ง๋ง ๋๋ฃ๊ฐ Azure Devops์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ค์นํ๋๋ก ์ง์ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๊ฐ๋จํ ์์ ์์๋ ์ด ํธ์ ์ธํธ๋ฅผ ์ ๋ํฉ๋๋ค. https://twitter.com /brshallo/status/1156260156503707648 .
Azure ๋ฐ ์ ํ ์ ๋ฐ์์ Microsoft์ ๊ฐ๋ ฅํ ์ง์์ ๊ณ ๋ คํ ๋ Azure Devops + R๊ณผ ๊ด๋ จ๋ ์๋ฃ/์์ ๊ฐ์ด๋๋ฅผ ์ฐพ์ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ต๋๋ค(๋ฐ๋ผ์ ๋ฌธ์ ํ์ด์ง์ ๋ด ๊ฒ์๋ฌผ/๋ฌธ์ ).
๋ฌธ์์์ ์ด๋ฌํ ์ฐจ์ด๋ฅผ ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. R ๊ฐ๋ฐ์ ์ค ์ผ๋ถ์ ์ด์ผ๊ธฐํ๊ณ ํ์ดํ๋ผ์ธ์์ ์ด ๊ธฐ์ฌ๋ฅผ ์ป์ ์ ์๋์ง ํ์ธํ ๊ฒ์ ๋๋ค.
๋๋ ๊ฐ์ ๋ฐฐ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ๋ ๋ฒ์งธ๋ก ์๋๋ค.
ํ์ง๋ง ์ถ๊ฐ ์์ฒญ์ ์ถ๊ฐํ ์ ์์ต๋๊น? IT/์ํํธ์จ์ด ๋ด๋น์๋ฅผ ์ํ ๋ฌธ์๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. R ํจํค์ง์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น? ์๋ฅผ ๋ค์ด, ๋น๋คํธ ๋ฐ/๋๋ ๋ฐ์ดํฐ๋ ์ข ์ข R ํจํค์ง์ ํฌํจ๋ฉ๋๋ค(๋ค๋ฅธ ์ธ์ด์์๋ ํด๋น๋๋์ง ํ์คํ์ง ์์). ๊ธฐ๋ณธ์ ์ผ๋ก R๊ณผ R ์ฌ์ฉ์์ ๋ํด ์ ํ ๋ชจ๋ฅด๋ IT/์ํํธ์จ์ด ์ฌ๋๋ค ์ฌ์ด์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ ์ ์๋ ๊ฒ์ ๋๋ค.
@brshallo ์ด ํญ๋ชฉ์ ์์ง ๋ฐฑ๋ก๊ทธ์ ์์ต๋๋ค. ๊ทธ ๋์ @revodavid์ ์ด ์๊ธฐ์ ์ ํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ํ์ธํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
https://blog.revolutionanalytics.com/2019/09/devops-and-r.html
@asbates ๊ทํ์ ์์ฒญ์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? R ํจํค์ง์ ์๋ ๋ฐฉ์์ ๋ํ ์ผ๋ฐ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ๊ณ์ญ๋๊น? ์๋๋ฉด R ํจํค์ง๊ฐ DevOps ํ์ดํ๋ผ์ธ์ ํฌํจ๋ ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ๊ณ์ญ๋๊น?
@AnalyticJeremy DevOps ํ์ดํ๋ผ์ธ์์ R ํจํค์ง์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก @brshallo ๊ฐ ์ฐพ๊ณ ์๋ ๊ฒ: ํ ์คํธ ์คํ ๋ฐ ๋ฌธ์ ์์ฑ + ๋น๋คํธ๋ฅผ ํฌํจํ R ํจํค์ง ๋น๋.
๊ทธ ์ธ์๋ ์ด ์ค์ ๋ฐฉ๋ฒ, ์ด๋ค ์ข ๋ฅ์ ์์คํ ์ค์ ์ด ํ์ํ์ง ๋ฑ์ ๋ํ ๊ฐ๋ตํ ์์ฝ์ด ํ์ํ์ง๋ง IT ๋ด๋น์๋ฅผ ๋์์ผ๋ก ํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก IT ๋ถ์๋ R์ ๋ํด ์ ์์ง ๋ชปํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ค์ ์ ๋์์ด ํ์ํ ์ ์์ผ๋ฉฐ R์ด ๋ฌด์์ธ์ง๋ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ์ฃผ์ ์์ ์กฐ๊ธ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ํ์ํ์ง ์๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ์๋ ๊ด์ฐฎ์ต๋๋ค. ํ์ง๋ง ํน์๋ ํด์ ๋ฌป๊ณ ์ถ์๋ค.
๋ด ์๊ตฌ ์ฌํญ์ ๋น์ทํ์ง๋ง ๋ ๊ฐ๋จํฉ๋๋ค. RStudio ๋ฒ์ ์ ์ด๋ฅผ Azure Devops ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ ์ถ์ต๋๋ค.
@athosfolk ์ ์๊ฒฌ์ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ํฅํ๊ณ ์์ต๋๋ค. IMHO
AB#160263 - ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ๊ฒํ ์ค์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ฐฑ๋ก๊ทธ ํญ๋ชฉ์ผ๋ก ์ฑํํ์ต๋๋ค. ๋ฐฑ๋ก๊ทธ ํญ๋ชฉ์ผ๋ก ํด๊ฒฐ๋ ์ด ์ฝํ ์ธ ์ ๋ํ ๋งํฌ๋ฅผ ์ํ ๋ณ๋์ ๊ธฐ์ฌ๋ฅผ ์์ฑํด์ผ ํ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ด ์๊ตฌ ์ฌํญ์ ๋น์ทํ์ง๋ง ๋ ๊ฐ๋จํฉ๋๋ค. RStudio ๋ฒ์ ์ ์ด๋ฅผ Azure Devops ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ ์ถ์ต๋๋ค.
์๋
ํ์ธ์,
@athosfolk ์ ๋ฌธ์์ ๋ต๋ณํ ์ ๋ณด๊ฐ ์๋์?
๋ํ RStudio์ ๋ฒ์ ์ ์ด๋ฅผ Azure DevOps ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค.
RStudio ์ ํ์ ๋ฒ์ ์ ์ด ๊ธฐ๋ฅ์ ์ต์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋์์ด ๋ ๋งํ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
https://support.rstudio.com/hc/en-us/articles/360045105794-How-to-setup-Git-backed-content-deployment-from-a-private-repository-in-RStudio-Connect
Azure DevOps๋ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช
์ Azure AD๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ง์ ํ์ฌ ์๋น์ค๊ฐ ์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Azure DevOps๋ DevOps git ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ํ์ฌ ์๋น์ค ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์๋ "๊ฐ์ธ ์ก์ธ์ค ํ ํฐ"์ ์ง์ํฉ๋๋ค.
https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page
์ด ๊ธฐ์ฌ ์ค ํ๋๊ฐ @LindsayDChristian์ ์ง๋ฌธ์ ๋ตํ๋ ๋ฐ ๋์์ด ๋ฉ๋๊น? ์๋๋ฉด ๋ด๊ฐ ๋น์ ์ ์์ฒญ์ ์๋ชป ์ดํด ํ์ต๋๊น?
@AnalyticJeremy ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํด๋น ๋งํฌ๋ ์ฑ ๋ฐฐํฌ์ ๋์์ด ๋ฉ๋๋ค. DevOps๊ฐ ๊ฐ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฒ์ ์ ์ด์ ๋๋ค.
์ด๊ธฐ ์ค์
์ ์ฅ์ ๊ฐ์ ธ์ค๊ธฐ:
์ ์ฅ์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ปดํจํฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ๋ฒ์ ๊ณผ ๋๊ธฐํํ๋ ๊ฒ์
๋๋ค.
"Environment", "History" ์์ ์๋ "Git" ์ฐฝ์ ์ฐพ์ต๋๋ค. ๋ฐ "์ฐ๊ฒฐ".
"๋น๊ธฐ๊ธฐ" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์ค์: ์ค๋ฅ ๋ฉ์์ง ์์ด ๋น๊ฒจ์ก๋์ง ํ์ธํ์ญ์์ค.
๋ณ๊ฒฝ - ์ ์ฅ, ์ปค๋ฐ ๋ฐ ํธ์
์ฝ๋๋ฅผ ์์ ํ ํ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
"Git" ์ฐฝ์๋ ์์ ๋ ํ์ผ์ด ํ์๋ฉ๋๋ค(.gitignore^์ ์ํด ์ ์ธ๋์ง ์๋ ํ).
์ปค๋ฐํ ํ์ผ ์์ ์๋ "๋จ๊ณ์ " ํ์ธ๋์ ์ ํํฉ๋๋ค.
"์ปค๋ฐ"์ ํด๋ฆญํฉ๋๋ค.
์ ์ฅ์๋ก ๋ณด๋ผ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ์ญ์์ค. ์์ ์๊ฒฌ์ ์
๋ ฅํฉ๋๋ค.
"์ปค๋ฐ"์ ํด๋ฆญํฉ๋๋ค.
์ค์: ์ค๋ฅ ๋ฉ์์ง ์์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๋์ง ๋ค์ ํ์ธํ์ญ์์ค.
"ํธ์"๋ฅผ ํด๋ฆญํ์ญ์์ค.
์ค์: ์ค๋ฅ ๋ฉ์์ง ์์ด ์ปค๋ฐ์ ํธ์ํ๋์ง ๋ค์ ํ ๋ฒ ํ์ธํ์ญ์์ค.
^์ ์ฅ์์์ ๊ณต์ ํ ํ์ผ์ ์ ์ธํ๋ ค๋ฉด .gitignore ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๊ณต์ ํ ๋งํฌ์ ํ์ฌ๊น์ง์ ๊ฒ์ ๊ฒฐ๊ณผ DevOps์ ์ ์ฌํ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ ๊ฐ์ต๋๊น?
@LindsayDChristian์ ์ถ๊ฐ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ข์ ์์์ด ์๋ ๊ฒ ๊ฐ์์!
Azure DevOps๋ ์์ค ์ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ Git ์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฒ์ํ RStudio ์ง์นจ์ ์ผ๋ฐ์ ์ผ๋ก ๋์ผํ๊ฒ ์๋ํฉ๋๋ค. ์ง์นจ์ ์ค๋ช ๋ ๋๋ก PC์ Windows์ฉ Git์ ์ค์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ RStudio๋ฅผ ์ฌ์ฉํ์ฌ Azure DevOps Git Repo๋ก PULL ๋ฐ PUSH๋ฅผ ์ํํฉ๋๋ค.
์ฃผ์ ์ฐจ์ด์ ์ 3๋จ๊ณ์์ GitHub URL์ ์ฌ์ฉํ๋ ๋์ Azure DevOps URL์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋๋ค. Azure DevOps์์ ํ๋ก์ ํธ๋ฅผ ์ด๊ณ ํ๋ฉด ์ค๋ฅธ์ชฝ ํจ๋์์ "Repos"๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ฅ์๋ก ์ด๋ํฉ๋๋ค. ์ค๋ฅธ์ชฝ ์๋จ ๋ชจ์๋ฆฌ์ "๋ณต์ "๋ผ๋ ๋ฒํผ์ด ์์ต๋๋ค. ํด๋น ๋ฒํผ์ ํด๋ฆญํ๋ฉด RStudio์ ์ ๋ ฅํด์ผ ํ๋ Git URL์ด ํ์๋ฉ๋๋ค.
URL์ https://<your org name>@dev.azure.com/<your org name>/<your project name>/_git/<your repo name>๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋์์ด ๋๋์?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด ์๊ตฌ ์ฌํญ์ ๋น์ทํ์ง๋ง ๋ ๊ฐ๋จํฉ๋๋ค. RStudio ๋ฒ์ ์ ์ด๋ฅผ Azure Devops ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ ์ถ์ต๋๋ค.