Power Apps 솔루션을 지원하는 GitHub 작업

내 워크플로우



Power Apps에서는 자산을 솔루션으로 패키징합니다. 솔루션은 사용자 정의가 한 환경에서 다른 환경으로 이동하는 방법입니다. Solution Packager를 사용하여 솔루션의 포장을 풀고 다시 포장합니다.

Azure DevOps에서 이 작업을 쉽게 수행할 수 있습니다. 이를 지원하는 Microsoft 및 타사 도구가 있기 때문입니다. 현재 GitHub Marketplace에는 이를 도와줄 Action이 없기 때문에 PowerShell만 사용하여 이를 수행하는 것이 재미있는 프로젝트가 될 것이라고 생각하여 이 두 가지 Action을 개발했습니다.

  • Power Apps Extract Solution - 이 작업은 Solution Packager를 사용하여 솔루션 파일을 자산으로 압축 해제하고 저장소에 커밋합니다
  • .

  • Power Apps Deploy Solution - 이 작업은 솔루션 파일을 Power Apps 환경에 배포합니다.

  • PowerShell만 사용하여 이 작업을 수행하고 싶었기 때문에 PowerShell 갤러리의 오픈 소스 commandlet을 사용하여 이 작업을 비교적 쉽게 수행할 수 있음을 알았습니다composite run steps.

    샘플 워크플로



    다음은 GitHub 워크플로에서 이 두 작업을 사용하는 방법에 대한 샘플 워크플로입니다.

    # This workflow is run only manually, as it uses a workflow_dispatch. It is recommended to use cron or push into main branch to trigger this. Since this workflow also commits into the repo, use ignore tags to prevent infinite loop. Refer https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-ignoring-branches-and-tags
    
    name: extract-and-deploy
    on:
      workflow_dispatch:
        inputs:
          solutionName:
            description: "Solution Name"
            required: true
            default: "GitHubSolution"
          sourceEnvironmentUrl:
            description: "Source Environment URL"
            required: true
            default: "https://xxxx.crm.dynamics.com"
          targetEnvironmentUrl:
            description: "Target Environment URL"
            required: true
            default: "https://xxxx.crm.dynamics.com"
          release:
            description: "Release?"
            required: true
            default: true
          managed:
            description: "Managed?"
            required: true
            default: true
          debug:
            description: "Debug?"
            required: true
            default: "true"
    
    jobs:
      build:
        # The type of runner that the job will run on. This needs to be Windows runner.
        runs-on: windows-latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Dump GitHub context
            if: github.event.inputs.debug == 'true'
            env:
              GITHUB_CONTEXT: ${{ toJson(github) }}
            run: echo "$GITHUB_CONTEXT"
    
          - name: Extract Solution
            id: extract-solution
            uses: rajyraman/[email protected]
            with:
              token: ${{ secrets.GITHUB_TOKEN }}
              solutionName: ${{ github.event.inputs.solutionName }}
              sourceEnvironmentUrl: ${{ github.event.inputs.sourceEnvironmentUrl }}
              applicationId: ${{ secrets.APPLICATION_ID }}
              applicationSecret: ${{ secrets.APPLICATION_SECRET }}
              releaseSolution: ${{ github.event.inputs.release }}
    
          - name: Deploy Solution
            id: deploy-solution
            uses: rajyraman/[email protected]
            with:
              token: ${{ secrets.GITHUB_TOKEN }}
              solutionName: ${{ github.event.inputs.solutionName }}
              targetEnvironmentUrl: ${{ github.event.inputs.targetEnvironmentUrl }}
              applicationId: ${{ secrets.APPLICATION_ID }}
              applicationSecret: ${{ secrets.APPLICATION_SECRET }}
              tag: ${{ steps.extract-solution.outputs.solutionVersion }}
              managed: ${{ github.event.inputs.managed }}
    
    
            # This step below can be removed, if you do not want to send a notification to Teams about this solution deployment.
          - name: Notify Teams
            uses: fjogeleit/[email protected]
            with:
              # Url to Power Automate Flow to notify about Solution Deployment
              url: "${{ secrets.FLOW_HTTP_URL }}"
              # Request body to be sent the Flow with HTTP Trigger
              data: >-
                {
                    "solutionFile": "${{ steps.deploy-solution.outputs.solution }}",
                    "tag": "${{ steps.deploy-solution.outputs.solutionVersion }}",
                    "environmentUrl": "${{ github.event.inputs.targetEnvironmentUrl }}",
                    "repoUrl": "https://github.com/${{ github.repository }}",
                    "runId": "${{ github.run_id }}",
                    "sha": "${{ github.sha }}"
                }
    

    샘플 워크플로 실행




    Power Apps 추출 솔루션 작업으로 생성된 릴리스 및 자산




    Power Automate를 사용하는 Teams 알림




    제출 카테고리:



    엉뚱한 와일드카드

    Yaml 파일 또는 코드 링크




    라지라만 / powerapps-배포-솔루션


    Power Apps 솔루션을 배포하기 위한 GitHub 작업





    Power Apps 배포 솔루션


    이 작업은 일치하는 태그가 있는 릴리스의 솔루션 파일을 대상 환경에 배포합니다.

    입력



    입력
    필수의
    기본
    설명


    토큰

    -

    GitHub Personal Access Token . 릴리스에서 솔루션 파일을 다운로드하는 데 필요합니다.

    꼬리표

    -
    릴리스와 연결된 Git 태그입니다. Power Apps Solution Extract Action 을 사용하는 경우 솔루션의 버전 번호로 릴리스에 태그를 지정합니다.

    솔루션 이름

    -
    솔루션의 고유 이름입니다. 관리형 솔루션을 배포하는 경우 솔루션 업그레이드 단계에서 사용됩니다.

    targetEnvironmentUrl

    -
    솔루션이 배포될 환경 URL입니다.

    애플리케이션 ID

    -
    Power Apps 환경에 연결하는 데 사용할 애플리케이션 ID입니다. 이를 용이하게 하기 위해 Azure에서 애플리케이션 등록 및 범위를 설정하는 방법을 모르는 경우 참조하세요.

    응용비밀

    -
    사용될 비밀



    View on GitHub




    라지라만 / powerapps-솔루션-추출


    Power Apps 솔루션을 추출, 커밋 및 릴리스하기 위한 GitHub 작업입니다.





    Power Apps 추출 솔루션


    이 작업은 소스 환경에서 지정된 솔루션을 내보내고 이를 개별 구성 요소로 추출 및 분해하고 repo에 커밋합니다. 이 작업은 리포지토리의 개별 구성 요소에서 관리형 및 비관리형 솔루션을 빌드하고 이러한 파일을 릴리스에 자산으로 게시할 수도 있습니다.

    입력



    입력
    필수의
    기본
    설명


    토큰

    -

    GitHub Personal Access Token . 릴리스에서 솔루션 파일을 다운로드하는 데 필요합니다.

    솔루션 이름

    -
    솔루션의 고유 이름입니다. 관리형 솔루션을 배포하는 경우 솔루션 업그레이드 단계에서 사용됩니다.

    소스 환경 URL

    -
    솔루션을 다운로드할 환경 URL입니다.

    애플리케이션 ID

    -
    Power Apps 환경에 연결하는 데 사용할 애플리케이션 ID입니다. 이를 용이하게 하기 위해 Azure에서 애플리케이션 등록 및 범위를 설정하는 방법을 모르는 경우 참조하세요.

    응용비밀




    View on GitHub

    좋은 웹페이지 즐겨찾기