Azure Static Web Apps에 Hugo 사이트 배포

이 문서에서는 Azure Static Web AppsHugo 웹 애플리케이션을 만들고 배포하는 방법을 보여줍니다. 최종 결과는 앱이 빌드되고 게시되는 방식을 제어하는 관련 GitHub Actions를 포함하는 새로운 Azure Static Web App입니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • Hugo 앱 만들기
  • Azure Static Web Apps 설정
  • Azure에 Hugo 앱 배포

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

Hugo 앱 만들기

Hugo CLI(명령줄 인터페이스)를 사용하여 Hugo 앱을 만듭니다.

  1. OS에서 Hugo에 대한 설치 가이드를 따르세요.

  2. 터미널 열기

  3. Hugo CLI를 실행하여 새 앱을 만듭니다.

    hugo new site static-app
    
  4. 새로 만든 앱으로 이동합니다.

    cd static-app
    
  5. Git 리포지토리를 초기화합니다.

    git init
    
  6. 분기 이름이 main인지 확인합니다.

    git branch -M main
    
  7. 다음으로, 테마를 git 하위 모듈로 설치한 다음, Hugo 구성 파일에서 테마를 지정하여 사이트에 테마를 추가합니다.

    git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
    echo 'theme = "ananke"' >> config.toml
    
  8. 변경 내용을 커밋합니다.

    git add -A
    git commit -m "initial commit"
    

GitHub에 애플리케이션 푸시

Azure Static Web Apps에 연결하려면 GitHub의 리포지토리가 필요합니다. 다음 단계에서는 사이트용 리포지토리를 만드는 방법을 보여줍니다.

  1. hugo-static-app이라는 https://github.com/new에서 빈 GitHub 리포지토리(추가 정보를 만들지 않음)를 만듭니다.

  2. 로컬 리포지토리에 GitHub 리포지토리를 원격으로 추가합니다. 다음 명령에서 <YOUR_USER_NAME> 자리 표시자 대신 GitHub 사용자 이름을 추가해야 합니다.

    git remote add origin https://github.com/<YOUR_USER_NAME>/hugo-static-app
    
  3. 로컬 리포지토리를 GitHub로 푸시합니다.

    git push --set-upstream origin main
    

웹앱 배포

다음 단계에서는 새 정적 사이트 앱을 만들어 프로덕션 환경에 배포하는 방법을 보여줍니다.

애플리케이션 만들기

  1. Azure Portal로 이동

  2. 리소스 만들기 선택

  3. Static Web Apps를 검색합니다.

  4. Static Web Apps를 선택합니다.

  5. 만들기를 선택합니다.

  6. 기본 탭에서 다음 값을 입력합니다.

    속성
    구독 Azure 구독 이름.
    리소스 그룹 my-hugo-group
    이름 hugo-static-app
    플랜 유형 무료
    Azure Functions API 및 스테이징 환경을 위한 영역 가장 가까운 지역을 선택합니다.
    Source GitHub
  7. GitHub로 로그인을 선택하고 GitHub로 인증합니다.

  8. 다음 GitHub 값을 입력합니다.

    속성
    조직 원하는 GitHub 조직을 선택합니다.
    리포지토리 hugo-static-app을 선택합니다.
    Branch 기본을 선택합니다.

    참고 항목

    리포지토리가 표시되지 않는 경우 GitHub에서 Azure Static Web Apps에 권한을 부여해야 할 수 있습니다. GitHub 리포지토리로 이동하여 설정 > 애플리케이션 > 권한 부여된 OAuth 앱으로 이동하고 Azure Static Web Apps를 선택한 다음, 권한 부여를 선택합니다. 조직 리포지토리의 경우 사용 권한을 부여하려면 조직의 소유자여야 합니다.

  9. 빌드 세부 정보 섹션의 빌드 사전 설정 드롭다운에서 Hugo를 선택하고 기본값을 유지합니다.

검토 후 만들기

  1. 검토 + 만들기를 선택하여 세부 정보가 모두 올바른지 확인합니다.

  2. 만들기를 선택하여 App Service Static Web App 만들기를 시작하고 배포를 위한 GitHub Actions를 프로비전합니다.

  3. 배포가 완료되면 리소스로 이동을 선택합니다.

  4. 리소스 화면에서 URL 링크를 선택하여 배포된 애플리케이션을 엽니다. GitHub Actions가 완료되려면 1~2분 정도 기다려야 할 수 있습니다.

    Deployed application

사용자 지정 Hugo 버전

정적 웹앱을 생성하면 애플리케이션에 대한 게시 구성 설정이 포함된 워크플로 파일이 생성됩니다. env 섹션의 HUGO_VERSION에 대한 값을 제공하여 워크플로 파일에서 특정 Hugo 버전을 지정할 수 있습니다. 다음 예제 구성에서는 Hugo를 특정 버전으로 설정하는 방법을 보여줍니다.

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match you app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/" # App source code path
          api_location: "api" # Api source code path - optional
          output_location: "public" # Built app content directory - optional
          ###### End of Repository/Build Configurations ######
        env:
          HUGO_VERSION: 0.58.0

Hugo 애플리케이션에서 Git 정보 기능 사용

Hugo 애플리케이션이 Git 정보 기능을 사용하는 경우 정적 웹앱에 대해 만든 기본 워크플로 파일체크 아웃 GitHub Actions를 사용하여 기본 깊이가 1인 얕은 버전의 Git 리포지토리를 가져옵니다. 이 시나리오에서 Hugo는 모든 콘텐츠 파일이 단일 커밋에서 오는 것으로 간주하므로 작성자, 마지막 수정 타임스탬프, 기타 .GitInfo 변수가 동일합니다.

fetch-depth0(제한 없음)로 설정하는 actions/checkout 단계 아래에 새 매개 변수를 추가하여 전체 Git 기록을 가져오기하도록 워크플로 파일을 업데이트합니다.

      - uses: actions/checkout@v3
        with:
          submodules: true
          fetch-depth: 0

전체 기록을 가져오면 GitHub Actions 워크플로의 빌드 시간이 늘어나지만 각 콘텐츠 파일에 대해 .Lastmod.GitInfo 변수가 정확하고 사용할 수 있습니다.

리소스 정리

이 애플리케이션을 계속 사용하지 않을 경우 다음 단계를 통해 Azure Static Web App 리소스를 삭제할 수 있습니다.

  1. Azure Portal을 엽니다.
  2. 위쪽 검색 창에서 이전에 제공한 이름으로 애플리케이션을 검색합니다.
  3. 앱을 클릭합니다.
  4. 삭제 단추를 클릭합니다.
  5. 를 클릭하여 작업을 확인합니다.

다음 단계