Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Бұл мақалада құбырларды ұзарту үшін GitHub әрекеттері және Power Automate бұлт ағындарын пайдалану көрсетілген Power Platform. Құбырларды орналастыру жіберілгенде, бұлт ағыны GitHub тармағына артефакттың бастапқы кодын жүктеп алу, орамнан шығару және тапсыру үшін GitHub жұмыс процесін іске қосады.
Жұмыс ағыны туралы мәліметтер
Жұмыс процесі a workflow_dispatch оқиға арқылы іске қосылады. Жұмыс процесі ubuntu-latest жұмыс істейді және contents: write GitHub репозиторий тармағына өзгертулер енгізуге рұқсаты бар.
Жұмыс процесі келесі қадамдардан тұрады:
-
actions/checkout@v3: Репозиторийді тексереді. -
create new branch if specified: Егер кірістерде atarget_branchкөрсетілсе, жаңа тармақ жасайды. -
download solution from artifact: Құбырлар арқылы жасалған артефакттен шешімді жүктеп алады. -
unpack solution: Шешімді қаптамадан шығарады. -
commit changes: Бар немесе жаңа филиалға өзгертулер енгізеді. -
push to branch: Орындалған өзгертулерді бастапқы тармаққа итереді.
Жұмыс процесінің кірістері
Келесі жұмыс процесі кірістері міндетті немесе қосымша болып табылады:
-
artifact_url(міндетті): Құбырлар арқылы жасалған артефакт үшін Microsoft Dataverse жол (жазба) идентификаторының URL мекенжайы. -
solution_name(міндетті): Dataverse ортадағы шешімнің атауы. -
source_branch(міндетті): Шешім қабылдауға арналған бөлім. -
target_branch(міндетті емес): шешім қабылдау үшін жасалатын бөлім. Егер көрсетілмесе,source_branchқолданылады. -
commit_message(міндетті): Міндеттемені қамтамасыз ететін хабарлама.
Жұмыс процесінің құпиялары
Келесі құпиялар Dataverse қосылу үшін Dataverse және Microsoft Entra ID (AD) ішінде конфигурацияланған Қолданба пайдаланушысын пайдалану үшін қажет. Бұл құпияларды GitHub репозиторий параметрлерінде конфигурациялаңыз.
-
CLIENT_ID: Тіркелген Microsoft Entra қолданбаның клиент идентификаторы. -
TENANT_ID: Microsoft Entra қолданбамен байланысты Microsoft Entra каталогының жалға алушы идентификаторы. -
CLIENT_SECRET: Тіркелген Microsoft Entra қолданбаның клиенттік құпиясы.
Қосымша ақпарат алу үшін Шифрланған құпияларды жасау және пайдалану және Қолданба пайдаланушысын жасау бөліміне өтіңіз.
Жұмыс процесінің коды
Төменде GitHub Actions жұмыс процесінің коды берілген.
name: Download, unpack and commit the solution to git
run-name: Getting ${{ github.event.inputs.solution_name }} from pipelines host environment and committing
on:
workflow_dispatch:
inputs:
artifact_url:
description: "The url of the Dataverse record ID for the artifact created by the pipelines (Example: https://[your-env].crm.dynamics.com/api/data/v9.0/deploymentartifacts([your-artifact-id])/artifactfile/$value)."
required: true
solution_name:
description: "Name of the Solution in Dataverse environment"
required: true
user_name:
description: "User name for the commit"
required: true
source_branch:
description: "Branch for the solution commit"
required: true
target_branch:
description: "Branch to create for the solution commit"
required: false
commit_message:
description: "Message to provide for the commit"
required: true
permissions:
contents: write
jobs:
export-unpack-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.source_branch }}
# Commit changes to the existing or new branch
- name: create new branch if specified
shell: pwsh
run: |
if('${{ github.event.inputs.target_branch }}' -ne '') {
git checkout -b ${{ github.event.inputs.target_branch }} ${{ github.event.inputs.source_branch }}
}
# Export the solution from the artifact created by pipelines
- name: download solution from artifact
env:
CLIENT_ID: ${{secrets.CLIENT_ID}}
TENANT_ID: ${{secrets.TENANT_ID}}
CLIENT_SECRET: ${{secrets.CLIENT_SECRET}}
shell: pwsh
run: |
$aadHost = "login.microsoftonline.com"
$url = "${{ github.event.inputs.artifact_url }}"
$options = [System.StringSplitOptions]::RemoveEmptyEntries
$dataverseHost = $url.Split("://", $options)[1].Split("/")[0]
$body = @{client_id = $env:CLIENT_ID; client_secret = $env:CLIENT_SECRET; grant_type = "client_credentials"; scope = "https://$dataverseHost/.default"; }
$OAuthReq = Invoke-RestMethod -Method Post -Uri "https://$aadHost/$env:TENANT_ID/oauth2/v2.0/token" -Body $body
$spnToken = $OAuthReq.access_token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $spnToken")
$headers.Add("Content-Type", "application/json")
# Download the managed solution
$response = Invoke-RestMethod "${{ github.event.inputs.artifact_url }}" -Method 'GET' -Headers $headers
$bytes = [Convert]::FromBase64String($response.value)
[IO.File]::WriteAllBytes("${{ github.event.inputs.solution_name }}_managed.zip", $bytes)
# Download the unmanaged solution (for now we will need to use string manipulation to get the unmanaged solution URL, until the API provides this value)
$unmanaged_artifact_url = "${{ github.event.inputs.artifact_url }}".Replace("artifactfile", "artifactfileunmanaged")
$response = Invoke-RestMethod "$unmanaged_artifact_url" -Method 'GET' -Headers $headers
$bytes = [Convert]::FromBase64String($response.value)
[IO.File]::WriteAllBytes("${{ github.event.inputs.solution_name }}.zip", $bytes)
# Unpack the solution
- name: unpack solution
uses: microsoft/powerplatform-actions/unpack-solution@v0
with:
solution-file: "${{ github.event.inputs.solution_name }}.zip"
solution-folder: "${{ github.event.repository.name }}"
solution-type: 'Both'
process-canvas-apps: false
overwrite-files: true
# Commit changes to the existing or new branch
- name: commit changes
shell: pwsh
run: |
rm -rf ${{ github.event.inputs.solution_name }}.zip
rm -rf ${{ github.event.inputs.solution_name }}_managed.zip
git config user.name ${{ github.event.inputs.user_name }}
git pull
git add --all
git commit -am "${{ github.event.inputs.commit_message }}" --allow-empty
# Push the committed changes to the source branch
- name: push to branch
shell: pwsh
run: |
if('${{ github.event.inputs.target_branch }}' -ne '') {
git push origin ${{ github.event.inputs.target_branch }}
} else {
git push origin ${{ github.event.inputs.source_branch }}
}
Ескертпе
Шешім артефактісін жүктеп алу үшін пайдаланылатын Dataverse web API файлының максималды өлшемі 16 МБ шегіне ие.
Мысал Power Automate ағыны
GitHub жұмыс процесін шақыру үшін Power Automate ішінде орналастыру сұрауы жасалған кезде іске қосылатын Dataverseағын жасауға болады. Ағынды GitHub жұмыс үрдісіне қажетті кірістерді беру үшін конфигурациялауға болады. Power Automate ағын жасау жолы туралы қосымша ақпарат алу үшін Ағын жасау бөліміне өтіңіз.
Ағын мәліметтері
Ағын OnDeploymentRequested әрекет Dataverse ішінде іске қосылғанда іске қосылады. Ағын GitHub жұмыс процесін іске қосу үшін HTTP қосқышын шақырады. Ағын қажетті кірістерді GitHub жұмыс процесіне өткізеді. Сұрау мәтініне келесі енгізулерді қосыңыз:
-
artifact_url: құбырлар арқылы жасалған Dataverse шешім артефактісінің URL мекенжайы. -
solution_name: Dataverse ортадағы шешімнің атауы. -
user_name: міндеттемеге арналған пайдаланушы аты. -
source_branch: Шешімді орындауға арналған бастапқы бөлім. -
target_branch: Шешім қабылдау үшін жасалатын бөлім. -
commit_message: Міндеттемені қамтамасыз ететін хабарлама.
artifact_url, solution_name және user_name ге берілген мәндер құбырды іске қосқан әрекеттің шығыстарынан алынады.
commit_message орналастыру сатысының іске қосу жолынан алынады Dataverse.
-
artifact_url:@{triggerOutputs()?['body/OutputParameters/ArtifactFileDownloadLink']} -
solution_name:@{triggerOutputs()?['body/OutputParameters/ArtifactName']} -
user_name:@{triggerOutputs()?['body/OutputParameters/DeployAsUser']} -
commit_message:@{outputs('Retrieve_the_Deployment_Stage_Run')?['body/deploymentnotes']}
Сондай-ақ, ағын GitHub көмегімен аутентификация үшін жеке қол жеткізу таңбалауышын (PAT) пайдаланады. GitHub жеке қол жеткізу таңбалауышын жасау жолы туралы қосымша ақпарат алу үшін Жеке қол жеткізу таңбалауышын жасау бөліміне өтіңіз. PAT HTTP сұрауының Authorization тақырыбында жіберіледі.
Ағында келесі мәндерді жаңартыңыз:
-
[GitHub Personal Access Token]- GitHub жеке қол жеткізу белгісімен ауыстырыңыз. -
[GitHub Organization]- GitHub ұйымыңыздың атымен ауыстырыңыз. -
[GitHub Repository]- GitHub репозиторийінің атауымен ауыстырыңыз. -
[GitHub Workflow YAML File]- GitHub жұмыс процесі YAML файл атауымен ауыстырыңыз. -
[Source Branch]- Шешімді орындау үшін Git тармағымен ауыстырыңыз. -
[Target Branch]- Шешімді орындау үшін жасау үшін Git тармағымен ауыстырыңыз.Target Branchміндетті емес. Егер мақсатты тармақты көрсетпесеңіз, шешіміңізSource Branchүшін бекітілген.
Келесі қадамдар
Құбырларды кіргізіңіз Power Platform
Келесіні де қараңыз:
GitHub әрекеттеріне арналған жылдам бастау
Құбырларды ұзарту Power Platform
Бұлт ағындары дегеніміз не?