Merge 57c76f1935 into cc2ef5ff7d
				
					
				
			
						commit
						bb6f0ca48b
					
				@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					name: 'Send Slack notification'
 | 
				
			||||||
 | 
					description: 'SendSlack notification about new versions of a tool'
 | 
				
			||||||
 | 
					inputs:
 | 
				
			||||||
 | 
					  url:
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					    description: 'Slack channel url'
 | 
				
			||||||
 | 
					  tool-name:
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					    description: 'Name of a tool to send notification for. Like Xamarin or Python'
 | 
				
			||||||
 | 
					    default: 'Xamarin'
 | 
				
			||||||
 | 
					  tool-version:
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    description: 'New versions of a tool'
 | 
				
			||||||
 | 
					  pipeline-url:
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    description: 'Url of a pipeline'
 | 
				
			||||||
 | 
					  image-url:
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    description: 'Image url for message'
 | 
				
			||||||
 | 
					    default: 'https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png'
 | 
				
			||||||
 | 
					  text:
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    description: 'Message text'
 | 
				
			||||||
 | 
					  add-to-toolset-flag:
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    description: 'Flag to use notification for adding new versions to toolset'
 | 
				
			||||||
 | 
					runs:
 | 
				
			||||||
 | 
					  using: "composite"
 | 
				
			||||||
 | 
					  steps:
 | 
				
			||||||
 | 
					    - id: send-slack-notification
 | 
				
			||||||
 | 
					      name: Send Slack notification
 | 
				
			||||||
 | 
					      shell: pwsh
 | 
				
			||||||
 | 
					      run: ./get-new-tool-versions/send-slack-notification.ps1 -Url "${{ inputs.url }}" `
 | 
				
			||||||
 | 
					                                                                      -ToolName "${{ inputs.tool-name }}" `
 | 
				
			||||||
 | 
					                                                                      -ToolVersion "${{ inputs.tool-version }}" `
 | 
				
			||||||
 | 
					                                                                      -PipelineUrl "${{ inputs.pipeline-url }}" `
 | 
				
			||||||
 | 
					                                                                      -ImageUrl "${{ inputs.image-url }}" `
 | 
				
			||||||
 | 
					                                                                      -Text "${{ inputs.text }}" `
 | 
				
			||||||
 | 
					                                                                      ${{ inputs.add-to-toolset-flag }}
 | 
				
			||||||
@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					# This workflow will build and push a node.js application to an Azure Web App when a commit is pushed to your default branch.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This workflow assumes you have already created the target Azure App Service web app.
 | 
				
			||||||
 | 
					# For instructions see https://docs.microsoft.com/en-us/azure/app-service/quickstart-nodejs?tabs=linux&pivots=development-environment-cli
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# To configure this workflow:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 1. Download the Publish Profile for your Azure Web App. You can download this file from the Overview page of your Web App in the Azure Portal.
 | 
				
			||||||
 | 
					#    For more information: https://docs.microsoft.com/en-us/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2. Create a secret in your repository named AZURE_WEBAPP_PUBLISH_PROFILE, paste the publish profile contents as the value of the secret.
 | 
				
			||||||
 | 
					#    For instructions on obtaining the publish profile see: https://docs.microsoft.com/azure/app-service/deploy-github-actions#configure-the-github-secret
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 3. Change the value for the AZURE_WEBAPP_NAME. Optionally, change the AZURE_WEBAPP_PACKAGE_PATH and NODE_VERSION environment variables below.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# For more information on GitHub Actions for Azure: https://github.com/Azure/Actions
 | 
				
			||||||
 | 
					# For more information on the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
 | 
				
			||||||
 | 
					# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - main
 | 
				
			||||||
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					env:
 | 
				
			||||||
 | 
					  AZURE_WEBAPP_NAME: your-app-name    # set this to your application's name
 | 
				
			||||||
 | 
					  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
 | 
				
			||||||
 | 
					  NODE_VERSION: '14.x'                # set this to the node version to use
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Set up Node.js
 | 
				
			||||||
 | 
					      uses: actions/setup-node@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        node-version: ${{ env.NODE_VERSION }}
 | 
				
			||||||
 | 
					        cache: 'npm'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: npm install, build, and test
 | 
				
			||||||
 | 
					      run: |
 | 
				
			||||||
 | 
					        npm install
 | 
				
			||||||
 | 
					        npm run build --if-present
 | 
				
			||||||
 | 
					        npm run test --if-present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Upload artifact for deployment job
 | 
				
			||||||
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        name: node-app
 | 
				
			||||||
 | 
					        path: .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  deploy:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: build
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      name: 'Development'
 | 
				
			||||||
 | 
					      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Download artifact from build job
 | 
				
			||||||
 | 
					      uses: actions/download-artifact@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        name: node-app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: 'Deploy to Azure WebApp'
 | 
				
			||||||
 | 
					      id: deploy-to-webapp 
 | 
				
			||||||
 | 
					      uses: azure/webapps-deploy@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        app-name: ${{ env.AZURE_WEBAPP_NAME }}
 | 
				
			||||||
 | 
					        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
 | 
				
			||||||
 | 
					        package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					# This is a basic workflow to help you get started with Actions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name: CI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Controls when the workflow will run
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  # Triggers the workflow on push or pull request events but only for the main branch
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches: [ main ]
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					    branches: [ main ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Allows you to run this workflow manually from the Actions tab
 | 
				
			||||||
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# A workflow run is made up of one or more jobs that can run sequentially or in parallel
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  # This workflow contains a single job called "build"
 | 
				
			||||||
 | 
					  build:
 | 
				
			||||||
 | 
					    # The type of runner that the job will run on
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Steps represent a sequence of tasks that will be executed as part of the job
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Runs a single command using the runners shell
 | 
				
			||||||
 | 
					      - name: Run a one-line script
 | 
				
			||||||
 | 
					        run: echo Hello, world!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Runs a set of commands using the runners shell
 | 
				
			||||||
 | 
					      - name: Run a multi-line script
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          echo Add other actions to build,
 | 
				
			||||||
 | 
					          echo test, and deploy your project.
 | 
				
			||||||
@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					name: Get tools new versions
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  schedule:
 | 
				
			||||||
 | 
					    - cron: '0 8 * * THU'
 | 
				
			||||||
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defaults:
 | 
				
			||||||
 | 
					  run:
 | 
				
			||||||
 | 
					    shell: pwsh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  find-new-tool-versions:
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      fail-fast: false
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        tool:
 | 
				
			||||||
 | 
					          - name: 'Xamarin'
 | 
				
			||||||
 | 
					            image: 'https://avatars.githubusercontent.com/u/790012?s=200&v=4'
 | 
				
			||||||
 | 
					            releases-url: 'null'
 | 
				
			||||||
 | 
					            filter-parameter: 'null'
 | 
				
			||||||
 | 
					            filter-arch: 'null'
 | 
				
			||||||
 | 
					          - name: 'Python'
 | 
				
			||||||
 | 
					            image: 'https://avatars.githubusercontent.com/u/1525981?s=200&v=4'
 | 
				
			||||||
 | 
					            releases-url: 'https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json'
 | 
				
			||||||
 | 
					            filter-parameter: 'version'
 | 
				
			||||||
 | 
					            filter-arch: 'x64'
 | 
				
			||||||
 | 
					          - name: 'PyPy'
 | 
				
			||||||
 | 
					            image: 'https://avatars.githubusercontent.com/u/318667?s=200&v=4'
 | 
				
			||||||
 | 
					            releases-url: 'https://downloads.python.org/pypy/versions.json'
 | 
				
			||||||
 | 
					            filter-parameter: 'python_version'
 | 
				
			||||||
 | 
					            filter-arch: 'x86'
 | 
				
			||||||
 | 
					          - name: 'Node'
 | 
				
			||||||
 | 
					            image: 'https://avatars.githubusercontent.com/u/9950313?s=200&v=4'
 | 
				
			||||||
 | 
					            releases-url: 'https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json'
 | 
				
			||||||
 | 
					            filter-parameter: 'version'
 | 
				
			||||||
 | 
					            filter-arch: 'x64'
 | 
				
			||||||
 | 
					          - name: 'Go'
 | 
				
			||||||
 | 
					            image: 'https://avatars.githubusercontent.com/u/4314092?s=200&v=4'
 | 
				
			||||||
 | 
					            releases-url: 'https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json'
 | 
				
			||||||
 | 
					            filter-parameter: 'version'
 | 
				
			||||||
 | 
					            filter-arch: 'x64'
 | 
				
			||||||
 | 
					    name: 'Searching for new versions of ${{ matrix.tool.name }}'
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      - id: get-new-tool-versions
 | 
				
			||||||
 | 
					        name: Get new tool versions
 | 
				
			||||||
 | 
					        run: | 
 | 
				
			||||||
 | 
					          $versionsOutput = ./get-new-tool-versions/verify-new-tool-version-added-to-image.ps1 `
 | 
				
			||||||
 | 
					            -ToolName ${{ matrix.tool.name }} `
 | 
				
			||||||
 | 
					            -ReleasesUrl ${{ matrix.tool.releases-url }} `
 | 
				
			||||||
 | 
					            -FilterParameter ${{ matrix.tool.filter-parameter }} `
 | 
				
			||||||
 | 
					            -FilterArch ${{ matrix.tool.filter-arch }}
 | 
				
			||||||
 | 
					          echo "::set-output name=versions-output::$versionsOutput"
 | 
				
			||||||
 | 
					      - name: Check versions
 | 
				
			||||||
 | 
					        if: steps.get-new-tool-versions.outputs.versions-output == ''
 | 
				
			||||||
 | 
					        run: Write-Host "No new versions found"
 | 
				
			||||||
 | 
					      - uses: ./.github/actions/send-slack-notification
 | 
				
			||||||
 | 
					        name: Send Slack notification
 | 
				
			||||||
 | 
					        if: steps.get-new-tool-versions.outputs.versions-output != ''
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          url: ${{ secrets.SLACK_CHANNEL_URL }}
 | 
				
			||||||
 | 
					          tool-name: '${{ matrix.tool.name }}'
 | 
				
			||||||
 | 
					          tool-version: ${{ steps.get-new-tool-versions.outputs.versions-output }}
 | 
				
			||||||
 | 
					          image-url: '${{ matrix.tool.image }}'
 | 
				
			||||||
 | 
					          add-to-toolset-flag: '-AddToToolsetFlag'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  check_build:
 | 
				
			||||||
 | 
					    name: Check build for failures 
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [find-new-tool-versions]
 | 
				
			||||||
 | 
					    if: failure()
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      - id: get-failed-jobs
 | 
				
			||||||
 | 
					        name: Get failed jobs
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          $jobs_url = "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID/jobs"
 | 
				
			||||||
 | 
					          $failedJobs = (Invoke-RestMethod -Uri $jobs_url).jobs |
 | 
				
			||||||
 | 
					            Where-Object conclusion -eq "failure" |
 | 
				
			||||||
 | 
					            ForEach-Object {"\n\t" + $_.name.split(" ")[-1] + ": $($_.html_url)"}
 | 
				
			||||||
 | 
					          echo "::set-output name=failed-jobs::$failedJobs"
 | 
				
			||||||
 | 
					      - uses: ./.github/actions/send-slack-notification
 | 
				
			||||||
 | 
					        name: Send Slack notification about failure
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          url: ${{ secrets.SLACK_CHANNEL_URL }}
 | 
				
			||||||
 | 
					          tool-name: 'Tool name'
 | 
				
			||||||
 | 
					          pipeline-url: '$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID'
 | 
				
			||||||
 | 
					          text: "Missing toolset tool versions checker pipeline has failed jobs:/n/t${{ steps.get-failed-jobs.outputs.failed-jobs }}"
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					function Search-ToolsVersionsNotOnImage {
 | 
				
			||||||
 | 
					    param (
 | 
				
			||||||
 | 
					        [string]$ToolName,
 | 
				
			||||||
 | 
					        [string]$ReleasesUrl,
 | 
				
			||||||
 | 
					        [string]$FilterParameter,
 | 
				
			||||||
 | 
					        [string]$FilterArch
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    $stableReleases = (Invoke-RestMethod $ReleasesUrl) | Where-Object stable -eq $true
 | 
				
			||||||
 | 
					    $stableReleaseVersions = $stableReleases | ForEach-Object {
 | 
				
			||||||
 | 
					        if ($ToolName -eq "Node") { 
 | 
				
			||||||
 | 
					            $_.$FilterParameter.split(".")[0] + ".0"
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $_.$FilterParameter.split(".")[0,1] -join"."
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } | Select-Object -Unique
 | 
				
			||||||
 | 
					    $toolsetUrl = "https://raw.githubusercontent.com/actions/virtual-environments/main/images/win/toolsets/toolset-2022.json"
 | 
				
			||||||
 | 
					    $latestMinorVersion = (Invoke-RestMethod $toolsetUrl).toolcache |
 | 
				
			||||||
 | 
					        Where-Object {$_.name -eq $ToolName -and $_.arch -eq $FilterArch} | 
 | 
				
			||||||
 | 
					        ForEach-Object {$_.versions.Replace("*","0")} |
 | 
				
			||||||
 | 
					        Select-Object -Last 1
 | 
				
			||||||
 | 
					    $versionsToAdd = $stableReleaseVersions | Where-Object {[version]$_ -gt [version]$latestMinorVersion}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $versionsToAdd
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					function Search-XamarinVersionsNotOnImage {
 | 
				
			||||||
 | 
					    param (
 | 
				
			||||||
 | 
					        [string]$ReleasesUrl,
 | 
				
			||||||
 | 
					        [array]$FilterProducts
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $xamarinReleases = (Invoke-RestMethod $ReleasesUrl).items
 | 
				
			||||||
 | 
					    $filteredReleases = $xamarinReleases | Where-Object {$_.name -in $FilterProducts.name} | Sort-Object name | Select-Object name, version
 | 
				
			||||||
 | 
					    $toolsetUrl = "https://raw.githubusercontent.com/actions/virtual-environments/main/images/macos/toolsets/toolset-11.json"
 | 
				
			||||||
 | 
					    $uploadedReleases = (Invoke-RestMethod $toolsetUrl).xamarin
 | 
				
			||||||
 | 
					    $releasesOnImage = @()
 | 
				
			||||||
 | 
					    foreach ($FilterProduct in $FilterProducts) {
 | 
				
			||||||
 | 
					        $releasesOnImage += @{$FilterProduct.name = $uploadedReleases.($FilterProduct.property)}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $versionsToAdd = $filteredReleases | Where-Object {$releasesOnImage.($_.name) -notcontains $_.version} | ForEach-Object {[string]::Empty} {
 | 
				
			||||||
 | 
					        '{0,-15} : {1}' -f $_.name, $_.version
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $versionsToAdd
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					<#
 | 
				
			||||||
 | 
					.SYNOPSIS
 | 
				
			||||||
 | 
					Check and return list of new available tool versions that not added to toolsets yet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PARAMETER ToolName
 | 
				
			||||||
 | 
					Required parameter. The name of tool for which parser is available (Python, Xamarin, PyPy, Node, Go)
 | 
				
			||||||
 | 
					#>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					param (
 | 
				
			||||||
 | 
					    [Parameter(Mandatory)]
 | 
				
			||||||
 | 
					    [ValidateSet("Python", "Xamarin", "PyPy", "Node", "Go")]
 | 
				
			||||||
 | 
					    [string] $ToolName,
 | 
				
			||||||
 | 
					    [string] $ReleasesUrl,
 | 
				
			||||||
 | 
					    [string] $FilterParameter,
 | 
				
			||||||
 | 
					    [string] $FilterArch
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get-ChildItem "$PSScriptRoot/parsers/verify-added-to-image/" | ForEach-Object {Import-Module $_.FullName}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($ToolName -in "Python", "PyPy", "Node", "Go") {
 | 
				
			||||||
 | 
					    $versionsToAdd = Search-ToolsVersionsNotOnImage -ToolName $ToolName -ReleasesUrl $ReleasesUrl -FilterParameter $FilterParameter -FilterArch $FilterArch
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($ToolName -eq "Xamarin") {
 | 
				
			||||||
 | 
					    $xamarinReleases = "http://aka.ms/manifest/stable"
 | 
				
			||||||
 | 
					    $xamarinProducts = @(
 | 
				
			||||||
 | 
					        [PSCustomObject] @{name = 'Mono Framework'; property = 'mono-versions'}
 | 
				
			||||||
 | 
					        [PSCustomObject] @{name = 'Xamarin.Android'; property = 'android-versions'}
 | 
				
			||||||
 | 
					        [PSCustomObject] @{name = 'Xamarin.iOS'; property = 'ios-versions'}
 | 
				
			||||||
 | 
					        [PSCustomObject] @{name = 'Xamarin.Mac'; property = 'mac-versions'}
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    $versionsToAdd = Search-XamarinVersionsNotOnImage -ReleasesUrl $xamarinReleases -FilterProducts $xamarinProducts
 | 
				
			||||||
 | 
					    $joinChars = "\n\t"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$versionsToAdd = $versionsToAdd -join $joinChars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $versionsToAdd
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue