首页 文章

用于为Azure数据工厂构建CI / CD的Powershell脚本

提问于
浏览
0

我计划使用PowerShell为Azure数据工厂构建持续集成和部署 . 因此,使用VSTS完成的所有构建和发布过程都必须使用Powershell完成 . 如果任何人都可以共享任何链接或PowerShell脚本,那将会很有帮助 . 谢谢

1 回答

  • 0

    如果您的意思是通过PowerShell创建构建/发布定义,您可以通过PowerShell执行VSTS REST,简单代码:

    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "","{personal access token}")))
    $body='{
        "variables": {
            "system.debug": {
                "value": "false",
                "allowOverride": true
            }
        },
        "retentionRules": [
            {
                "branches": [
                    "+refs/heads/*"
                ],
                "artifacts": [],
                "artifactTypesToDelete": [
                    "FilePath",
                    "SymbolStore"
                ],
                "daysToKeep": 10,
                "minimumToKeep": 1,
                "deleteBuildRecord": true,
                "deleteTestResults": true
            }
        ],
        "properties": {},
        "tags": [],
        "jobAuthorizationScope": "projectCollection",
        "jobTimeoutInMinutes": 60,
        "jobCancelTimeoutInMinutes": 5,
        "process": {
            "phases": [
                {
                    "steps": [
                        {
                            "environment": {},
                            "enabled": true,
                            "continueOnError": false,
                            "alwaysRun": false,
                            "displayName": "Azure PowerShell script: FilePath",
                            "timeoutInMinutes": 0,
                            "condition": "succeeded()",
                            "task": {
                                "id": "72a1931b-effb-4d2e-8fd8-f8472a07cb62",
                                "versionSpec": "2.*",
                                "definitionType": "task"
                            },
                            "inputs": {
                                "ConnectedServiceNameSelector": "ConnectedServiceNameARM",
                                "ConnectedServiceName": "",
                                "ConnectedServiceNameARM": "aad18bbf-0333-41bf-99ea-674181d17ada",
                                "ScriptType": "FilePath",
                                "ScriptPath": "$/Scrum2015/ClassLibraryA/dbtest.ps1",
                                "Inline": "# You can write your azure powershell scripts inline here. \n# You can also pass predefined and custom variables to this script using arguments",
                                "ScriptArguments": "",
                                "TargetAzurePs": "LatestVersion",
                                "CustomTargetAzurePs": ""
                            }
                        }
                    ],
                    "name": "Phase 1",
                    "refName": "Phase_1",
                    "condition": "succeeded()",
                    "target": {
                        "executionOptions": {
                            "type": 0
                        },
                        "allowScriptsAuthAccessOption": false,
                        "type": 1
                    },
                    "jobAuthorizationScope": "projectCollection",
                    "jobCancelTimeoutInMinutes": 1
                }
            ],
            "type": 1
        },
        "repository": {
            "properties": {
                "cleanOptions": "0",
                "tfvcMapping": "{\"mappings\":[{\"serverPath\":\"$/Scrum2015/ClassLibraryA\",\"mappingType\":\"map\",\"localPath\":\"\\\\\"},{\"serverPath\":\"$/Scrum2015/ClassLibraryA/VS2010UltimTrial.iso\",\"mappingType\":\"cloak\",\"localPath\":\"\"},{\"serverPath\":\"$/Scrum2015/ClassLibraryA/tools\",\"mappingType\":\"cloak\",\"localPath\":\"\"}]}",
                "labelSources": "0",
                "labelSourcesFormat": "$(build.buildNumber)"
            },
            "id": "$/",
            "type": "TfsVersionControl",
            "name": "Scrum2015",
            "defaultBranch": "$/Scrum2015/ClassLibraryA",
            "rootFolder": "$/Scrum2015",
            "clean": "false",
            "checkoutSubmodules": false
        },
        "processParameters": {},
        "quality": "definition",
        "drafts": [],
        "queue": { 
            "id": 179
        },
    
        "name": "PowerShellRest2VNext",
        "path": "\\",
        "type": "build",
        "queueStatus": "enabled"
    }'
    $result = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body
    

    注意,您可以创建示例构建/发布定义,然后通过VSTS REST API获取它以获取JSON内容 .

    一个可以帮助您的博客:VSTS/TFS REST API: The basics and working with builds and releases

    如果您的意思是自定义构建/发布任务,您可以参考Add a build or release task,对于powershell,更改执行如下:

    "execution": {
        "PowerShell3": {
          "target": "Hello.ps1",
          "argumentFormat": ""
        }
    }
    

    关于部署azure数据工厂,您可以参考:How to deploy Azure Data Factory pipeline and its dependencies programatically using PowerShell(不需要调用 Login-AzureRMAccountSelect-AzureRMSubscrition ,只需添加Azure PowerShell任务即可构建/发布定义) .

    第3次延期:Azure Data Factory

相关问题