Nix로 재현 가능한 데이터 과학 7편 — Github Actions에서 Nix로 Quarto 책 만들기

R-Blogger · 블로그·해설 · 2023-10-18

R-Blogger블로그·해설한국어2023-10-18

Nix로 재현 가능한 데이터 과학 7편 — Github Actions에서 Nix로 Quarto 책 만들기

R과 Quarto를 이용한 재현 가능한 분석 파이프라인 책 만들기 지난 6월, 저는 Amazon’s Kindle Direct Publishing 서비스를 통해 책을 직접 출판했고, 이곳에서 Quarto를 사용해 어떻게 이를 실현할 수 있는지 상세히 설명한 블로그 글을 작성했습니다. 이 책은 R을 활용해 재현 가능한 분석 파이프라인을 구축하는 방법을 다룹니다. 본 포스트를 위해 저는 GitHub에 템플릿을 만들었으며, 이 템플릿을 fork하면 자신의 책을 작성할 때 출발점으로 활용할 수 있습니다. 책은 GitHub Actions를 사용해 새로운 변경 사항이 푸시될 때마다 자동으로 빌드됩니다: 웹사이트, e-ink 장치용 전자책, 인쇄용 Amazon KDP 준비 PDF가 동시에 생성됩니다. 해당 템플릿은 R, Quarto, 그리고 R 패키지( {renv} 사용) 설치를 위한 전용 액션을 사용했습니다. 워크플로우 파일을 살펴보겠습니다. on: push: branches: - main name: Render and Publish jobs: build-deploy: runs-on: ubuntu-22.04 steps: - name: Checkout repo uses: actions/checkout@v3 - name: Setup pandoc uses: r-lib/actions/setup-pandoc@v2 - name: Setup R uses: r-lib/actions/setup-r@v2 with: r-version: '4.3.1' - name: Setup renv uses: r-lib/actions/setup-renv@v2 - name: Set up Quarto uses: quarto-dev/quarto-actions/setup@v2 with: # To install LaTeX to build PDF book tinytex: true # uncomment below and fill to pin a version # version: 1.3.353 - name: Publish to GitHub Pages (and render) uses: quarto-dev/quarto-actions/publish@v2 with: target: gh-pages env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # this secret is always available for github actions 보시다시피, 이 작업을 제대로 동작시키려면 여러 개의 서로 다른 이동 조각이 필요합니다. 그 이후로 저는 Nix를 발견했습니다(제가 진행한 여정을 아직 따라오지 않으셨다면, 현재까지 이 시리즈에는 6개의 다른 파트가 있습니다). 이제 전용 액션과 {renv} 대신 Nix를 사용해 책의 의존성을 처리하는 또 다른 템플릿을 작성했습니다. 저장소는 여기에 있습니다. 워크플로우 파일은 다음과 같습니다. name: Build book using Nix on: push: branches: - main - master jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Install Nix uses: DeterminateSystems/nix-installer-action@main with: logger: pretty log-directives: nix_installer=trace backtrace=full - name: Nix cache uses: DeterminateSystems/magic-nix-cache-action@main - name: Build development environment run: | nix-build - name: Publish to GitHub Pages (and render) uses: b-rodrigues/quarto-nix-actions/publish@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 우선 눈에 띄는 점은 이 파일이 훨씬 짧다는 것입니다. 첫 번째 단계인 Checkout Code는 나머지 단계에서 사용할 코드를 확보합니다. 그 다음, Determinate Systems nix-installer-action을 이용해 이 러너에 Nix를 설치하고, magic-nix-cache-action을 사용해 모든 패키지를 캐시합니다. 이렇게 하면 변경 사항이 푸시될 때마다 패키지를 다시 빌드할 필요가 없어 과정을 크게 가속화할 수 있습니다. 개발 환경은 nix-build를 통해 생성됩니다. 마지막으로 제가 정의한 액션 quarto-nix-actions/publish이 실행됩니다. 이 액션은 quarto-actions/publish를 포크한 것이며, 프로젝트에 정의된 Nix 환경 안에서 quarto render와 quarto publish 명령이 실행되도록 보장합니다. 책 웹사이트는 여기
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
원문에서 전체 글 읽기
작성자
R-Blogger
출처
R-Blogger
플랫폼
R-Blogger
분류
블로그·해설
언어
한국어
발행일
2023-10-18