Compare commits

..

6 Commits

Author SHA1 Message Date
aparnajyothi-y
ff809fd183 Update build-python-packages.yml 2024-06-19 15:40:11 +05:30
aparnajyothi-y
d61647554c Update build-python-packages.yml 2024-06-17 15:26:25 +05:30
aparnajyothi-y
34303ccc22 Update build-python-packages.yml 2024-06-14 17:46:37 +05:30
aparnajyothi-y
6de7c9a0ec Update build-python-packages.yml 2024-06-14 17:33:39 +05:30
aparnajyothi-y
465890b8c8 Update win-python-builder.psm1 2024-06-14 16:06:22 +05:30
aparnajyothi-y
0526828581 Update build-python-packages.yml 2024-06-14 15:36:35 +05:30
2 changed files with 106 additions and 40 deletions

View File

@@ -15,7 +15,7 @@ on:
PLATFORMS: PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)' description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true required: true
default: 'setup-actions-windows-arm64-4-core' default: 'ubuntu-20.04,ubuntu-20.04_arm64,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-11_x64,macos-14_arm64,windows-2019_x64,windows-2019_x86'
pull_request: pull_request:
paths-ignore: paths-ignore:
- 'versions-manifest.json' - 'versions-manifest.json'
@@ -28,36 +28,19 @@ env:
VERSION: ${{ inputs.VERSION || '3.12.3' }} VERSION: ${{ inputs.VERSION || '3.12.3' }}
defaults: defaults:
run: run:
shell: 'C:\Program Files\PowerShell\7\pwsh.exe -Command {0}' shell: pwsh
jobs: jobs:
install_Pwsh_git: generate_matrix:
runs-on: setup-actions-windows-arm64-4-core
steps:
- run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install -y pwsh
choco install -y git --version=2.18.0
'C:\Program Files\PowerShell\7\' | Out-File $env:GITHUB_PATH -Append
'C:\Program Files\Git\bin' | Out-File $env:GITHUB_PATH -Append
shell: powershell
generate_matrix:
needs: [install_Pwsh_git]
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
matrix: ${{ steps.generate-matrix.outputs.matrix }} matrix: ${{ steps.generate-matrix.outputs.matrix }}
steps: steps:
- name: Generate execution matrix - name: Generate execution matrix
id: generate-matrix id: generate-matrix
run: | run: |
[String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-22.04,ubuntu-24.04,macos-11,macos-11_arm64,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim() [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-20.04_arm64,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-11,macos-14_arm64,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim()
$matrix = @() $matrix = @()
foreach ($configuration in $configurations) { foreach ($configuration in $configurations) {
$parts = $configuration.Split("_") $parts = $configuration.Split("_")
$os = $parts[0] $os = $parts[0]
@@ -74,10 +57,8 @@ jobs:
} }
} }
echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT
build_python:
build_python: needs: generate_matrix
needs: [install_Pwsh_git, generate_matrix]
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -86,16 +67,60 @@ jobs:
env: env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Install Chocolatey
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install PowerShell
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install powershell-core -y
- name: Add PowerShell to PATH
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install Git
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install git -y
- name: Add Git to PATH
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Check git version
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
run: |
git --version
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
submodules: false submodules: true
- name: Install 7-Zip
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install 7zip -y
- name: Add 7-Zip to PATH
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Build Python ${{ env.VERSION }} - name: Build Python ${{ env.VERSION }}
run: | run: |
./builders/build-python.ps1 -Version $env:VERSION ` ./builders/build-python.ps1 -Version $env:VERSION `
-Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }} -Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }}
- name: Publish artifact - name: Publish artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@@ -103,8 +128,8 @@ jobs:
path: ${{ runner.temp }}/artifact path: ${{ runner.temp }}/artifact
if-no-files-found: error if-no-files-found: error
test_python: test_python:
needs: [install_Pwsh_git, generate_matrix, build_python] needs: [generate_matrix, build_python]
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -114,10 +139,43 @@ jobs:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Install Chocolatey
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install PowerShell
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install powershell-core -y
- name: Add PowerShell to PATH
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install Git
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install git -y
- name: Add Git to PATH
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: powershell
run: |
echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Check git version
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
run: |
git --version
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
submodules: false submodules: true
- name: Fully cleanup the toolcache directory before testing - name: Fully cleanup the toolcache directory before testing
run: ./helpers/clean-toolcache.ps1 -ToolName "Python" run: ./helpers/clean-toolcache.ps1 -ToolName "Python"
@@ -133,6 +191,15 @@ jobs:
name: ${{ env.ARTIFACT_NAME }} name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Install 7-Zip
if: runner.os == 'Windows' && runner.architecture == 'ARM64'
shell: cmd
run: |
choco install 7zip -y
- name: Add 7-Zip to PATH
shell: powershell
run: |
echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Extract files - name: Extract files
run: | run: |
if ('${{ matrix.platform }}' -eq 'win32') { if ('${{ matrix.platform }}' -eq 'win32') {
@@ -171,10 +238,9 @@ jobs:
run: | run: |
$pythonLocation = which python $pythonLocation = which python
if ('${{ matrix.platform }}' -eq 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation } if ('${{ matrix.platform }}' -eq 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation }
- name: Run tests - name: Run tests
run: | run: |
Install-Module Pester -Force -Scope CurrentUser Install-Module Pester -Force -Scope CurrentUser -SkipPublisherCheck
Import-Module Pester Import-Module Pester
$pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{ $pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{
Version="${{ env.VERSION }}"; Version="${{ env.VERSION }}";
@@ -188,7 +254,7 @@ jobs:
} }
working-directory: ${{ github.workspace }}/tests working-directory: ${{ github.workspace }}/tests
publish_release: publish_release:
name: Publish release name: Publish release
if: github.event_name == 'workflow_dispatch' && inputs.PUBLISH_RELEASES if: github.event_name == 'workflow_dispatch' && inputs.PUBLISH_RELEASES
needs: test_python needs: test_python
@@ -196,7 +262,6 @@ jobs:
steps: steps:
- uses: actions/download-artifact@v4 - uses: actions/download-artifact@v4
- name: Publish Release ${{ env.VERSION }} - name: Publish Release ${{ env.VERSION }}
id: create_release id: create_release
uses: actions/create-release@v1 uses: actions/create-release@v1
@@ -207,7 +272,6 @@ jobs:
release_name: ${{ env.VERSION }} release_name: ${{ env.VERSION }}
body: | body: |
Python ${{ env.VERSION }} Python ${{ env.VERSION }}
- name: Generate hash for packages - name: Generate hash for packages
run: | run: |
$childItems = Get-Childitem -Path '.' $childItems = Get-Childitem -Path '.'
@@ -239,7 +303,7 @@ jobs:
}); });
} }
trigger_pr: trigger_pr:
name: Trigger "Create Pull Request" workflow name: Trigger "Create Pull Request" workflow
needs: publish_release needs: publish_release
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -255,4 +319,3 @@ jobs:
workflow_id: 'create-pr.yml', workflow_id: 'create-pr.yml',
ref: 'main' ref: 'main'
}); });

View File

@@ -60,8 +60,11 @@ class WinPythonBuilder : PythonBuilder {
} else { } else {
$ArchitectureExtension = ".amd64" $ArchitectureExtension = ".amd64"
} }
}elseif ($this.Architecture -eq "arm64") {
$ArchitectureExtension = "-arm64"
} }
return $ArchitectureExtension return $ArchitectureExtension
} }