ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AzureWebApp에 ASP(.NETFramework)로 CI/CD 2 -사용할 yml파일 형태설명
    GitHub 2022. 2. 22. 12:00
    728x90

    기본적으로 사용할 yml파일 형태설명

    yml 파일은 Github actions, Azure PipeLine 등에서 사용할 CI/CD를 위해 가상머신에서 사용될 명령어 파일이다. 이번에는 Azure Apps에서 등록될시 기본형태를 보고 어떻게 구성되어 있는지 확인하자

    더 자세한 내용은 공식문서 확인

    Azure Apps 에서 등록시 기본 형태

    # Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
    # More GitHub Actions for Azure: https://github.com/Azure/actions
    
    name: Build and deploy ASP app to Azure Web App - 앱이름
    
    on:
      push:
        branches:
          - main
      workflow_dispatch:
    
    jobs:
      build:
        runs-on: windows-latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Setup MSBuild path
            uses: microsoft/setup-msbuild@v1.0.2
    
          - name: Setup NuGet
            uses: NuGet/setup-nuget@v1.0.5
    
          - name: Restore NuGet packages
            run: nuget restore
    
          - name: Publish to folder
            run: msbuild /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="\published\"
    
          - name: Upload artifact for deployment job
            uses: actions/upload-artifact@v2
            with:
              name: ASP-app
              path: '/published/**'
    
      deploy:
        runs-on: windows-latest
        needs: build
        environment:
          name: 'production'
          url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
        steps:
          - name: Download artifact from build job
            uses: actions/download-artifact@v2
            with:
              name: ASP-app
    
          - name: Deploy to Azure Web App
            id: deploy-to-webapp
            uses: azure/webapps-deploy@v2
            with:
              app-name: '앱이름'
              slot-name: 'production'
              publish-profile: ${{ secrets.AzureAppService_PublishProfile_1234 }}
              package: .

    실행순서 - name

    1. 가장 최상단에 name : 워크플로 이름 이런식으로 워크플로 이름을 지정한다. 지정한 워크플로 이름으로 Github Actions 탭에 생성한다.

    실행순서 - on

    on:
      push:
        branches:
          - main
      workflow_dispatch:
    1. Github 에 push 작업이 있을시 그리고 그 branch가 main일시. 위에서 지정한 워크플로에 새로 작업을 만드는 명령이다.
    2. Actions 탭의 해당 워크플로를 클릭하면

      image
    3. main에 push한 Commit 내용으로 새로운 이벤트가 생성된다.(아래그림은 '보이는 부분 수정'이라는 커밋내용으로 push해서 생성되었다))br>
      image

    실행순서 - Jobs

    jobs:
      build:
        #build 에서 실행할 작업
      deploy:
        #deploy 에서 실행할 작업
    1. jobs :는 이후 실행할 작업을 정의한다.
    2. 하위 단계에 위치한(탭 한번) 이름들(build, deploy)은 작업의 이름이다.
    3. 작업이 실행될시 작업의 이름으로 그룹화되어 보여준다(실행은 위에서 아래 순서대로 실행한다.)
    4. 그룹화된 작업은 워크플로의 커밋내용으로 생성된 이벤트를 클릭(commit 내용을 클릭)하면 좌측의 Jobs에 정의한 이름들이 보일것이다.(이벤트가 실행중이면 바로 보인다.)

      image

    실행순서 - build 작업

    build:
      runs-on: windows-latest
      steps:
        - uses: actions/checkout@v2
        - name: Setup MSBuild path
          uses: microsoft/setup-msbuild@v1.0.2
        - name: Setup NuGet
          uses: NuGet/setup-nuget@v1.0.5
        - name: Restore NuGet packages
          run: nuget restore
        - name: Publish to folder
          run: msbuild /nologo /verbosity:m /t:Build
    t:pipelinePreDeployCopyAllFilesToOneFolder
    p:_PackageTempDir="\published\"
        - name: Upload artifact for deployment job
          uses: actions/upload-artifact@v2
          with:
            name: ASP-app
            path: '/published/**'

    자세한건 공식문서를 확인하자

    1. runs-on:은 현재 작업할 환경이 어떠한 환경에서 실행될지를 정의한다. .NetFrameWork의 경우 윈도우 환경에서만 돌아가니 windows-latest를 사용해야만 한다.
    2. steps: 작업 순서를 정의한다. 순서는 위에서 아래로 실행한다. 작업구분은 -로 구분한다.
    3. name : 실행할 작업의 이름을 정의한다. 정의한 이름에 따라 아래그림과 같이 'Set up job' 아래의 작업들은 name에 해당되는 이름을 같는다(없으면 Run uses 작업)

      image
    4. uses : Github Actions 작업을 실행한다. 아래에는 이번에 사용한 것만 설명한다.
    작업명 작업내용
    actions/checkout@v2 가상머신으로 현 상황(여기선 master 에 Commit된 내용 전부) 버전을 옮긴다.
    microsoft/setup-msbuild@v1.0.2 가상머신에서 사용할 msbuild 를 세팅
    NuGet/setup-nuget@v1.0.5 가상머신에서 사용할 Nuget 패키지 세팅
    actions/upload-artifact@v2 배포를 위한 세팅
    1. run : 가상머신 콘솔에서 실행될 명령이다. msbuild 등을 사용시 미리 세팅이 필요하다.
    작업명 작업내용
    nuget restore 현재위치에서 sln파일을 찾아(없다면 솔루션 경로를 적자) 솔루션에 서 지정한 프로젝트에 맞게 패키지를 설치한다
    msbuild 'msbuild'설정들 현재 위치한 sln파일을 찾아(없다면 솔루션 혹은 배포할 프로젝트의 경로를 적자) 빌드를 실행하며 배포폴더로 옮긴다

    실행순서 - deploy 작업

    deploy:
      runs-on: windows-latest
      needs: build
      environment:
        name: 'production'
        url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
      steps:
        - name: Download artifact from build job
          uses: actions/download-artifact@v2
          with:
            name: ASP-app
        - name: Deploy to Azure Web App
          id: deploy-to-webapp
          uses: azure/webapps-deploy@v2
          with:
            app-name: '앱이름'
            slot-name: 'production'
            publish-profile: ${{ secrets.AzureAppService_PublishProfile_1234 }}
            package: .
    1. runs-on:은 현재 작업할 환경이 어떠한 환경에서 실행될지를 정의한다.
    2. needs: 해당 작업을 실행할시 미리 실행되어야 하는 작업 여기선 build가 실행이 끝나야(에러없이) 실행이 가능
    3. environment 환경변수를 정의한다. 여기서는 production이라는 이름이 url을 갖는 변수를 만든다. ${{}}은 환경변수 설정을 가져온다.

      image
    4. uses : Github Actions 작업을 실행한다. 아래에는 이번에 사용한 것만 설명한다.
    작업명 작업내용
    actions/download-artifact@v2 빌드 결과를 배포를 위해 만든 위치에서 가져온다(actions/upload-artifact@v2)
    azure/webapps-deploy@v2 배포작업을 실행한다. 여기서는 설정해놓은 환경변수인 production위치에 프로필을 가져와 현재위치의 파일들을 패키징해서 배포한다.
    728x90
    반응형

    댓글

Designed by Tistory.