mirror of
https://github.com/actions/python-versions.git
synced 2025-12-16 15:58:16 +00:00
update debug logs
This commit is contained in:
179
.github/workflows/build-python-packages.yml
vendored
179
.github/workflows/build-python-packages.yml
vendored
@@ -29,7 +29,82 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- 'main'
|
- 'main'
|
||||||
|
|
||||||
# ... all previous jobs remain unchanged
|
env:
|
||||||
|
VERSION: ${{ inputs.VERSION || '3.12.3' }}
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate_matrix:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.generate-matrix.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
- name: Generate execution matrix
|
||||||
|
id: generate-matrix
|
||||||
|
run: |
|
||||||
|
[String[]]$configurations = "${{ inputs.platforms || 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13,macos-14_arm64,windows-2022_x64,windows-2022_x86,windows-11_arm64' }}".Split(",").Trim()
|
||||||
|
[String[]]$buildModes = "${{ inputs.threading_build_modes || 'default' }}".Split(",").Trim()
|
||||||
|
$matrix = @()
|
||||||
|
|
||||||
|
foreach ($configuration in $configurations) {
|
||||||
|
foreach ($buildMode in $buildModes) {
|
||||||
|
$parts = $configuration.Split("_")
|
||||||
|
$os = $parts[0]
|
||||||
|
$arch = if ($parts[1]) {$parts[1]} else {"x64"}
|
||||||
|
switch -wildcard ($os) {
|
||||||
|
"*ubuntu*" { $platform = $os.Replace("ubuntu","linux"); if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
|
||||||
|
"*macos*" { $platform = 'darwin' }
|
||||||
|
"*windows*" { $platform = 'win32'; if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($buildMode -eq "freethreaded") {
|
||||||
|
if ([semver]"${{ inputs.VERSION }}" -lt [semver]"3.13.0") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$arch += "-freethreaded"
|
||||||
|
}
|
||||||
|
|
||||||
|
$matrix += @{
|
||||||
|
'platform' = $platform
|
||||||
|
'os' = $os
|
||||||
|
'arch' = $arch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT
|
||||||
|
|
||||||
|
build_python:
|
||||||
|
needs: generate_matrix
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Adding Symlink
|
||||||
|
if: matrix.os == 'macos-13'
|
||||||
|
run: ln -sf /usr/local/opt/tcl-tk@8 /usr/local/opt/tcl-tk
|
||||||
|
|
||||||
|
- name: Build Python ${{ env.VERSION }}
|
||||||
|
run: |
|
||||||
|
./builders/build-python.ps1 -Version $env:VERSION `
|
||||||
|
-Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Publish artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT_NAME }}
|
||||||
|
path: ${{ runner.temp }}/artifact
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
test_python:
|
test_python:
|
||||||
needs: [generate_matrix, build_python]
|
needs: [generate_matrix, build_python]
|
||||||
@@ -60,7 +135,7 @@ on:
|
|||||||
name: ${{ env.ARTIFACT_NAME }}
|
name: ${{ env.ARTIFACT_NAME }}
|
||||||
path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
|
path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
|
||||||
|
|
||||||
- name: Debug: Check OS Architecture and Python Binary
|
- name: Check OS Architecture and Python Binary
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
Write-Host "OS Architecture:"
|
Write-Host "OS Architecture:"
|
||||||
@@ -97,10 +172,10 @@ on:
|
|||||||
$PSNativeCommandUseErrorActionPreference = $true
|
$PSNativeCommandUseErrorActionPreference = $true
|
||||||
if ('${{ matrix.platform }}' -eq 'win32') {
|
if ('${{ matrix.platform }}' -eq 'win32') {
|
||||||
powershell ./setup.ps1
|
powershell ./setup.ps1
|
||||||
} else {
|
} else {
|
||||||
sh ./setup.sh
|
sh ./setup.sh
|
||||||
cp ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}/build_output.txt ${{ runner.temp }}
|
cp ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}/build_output.txt ${{ runner.temp }}
|
||||||
}
|
}
|
||||||
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
|
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
|
||||||
|
|
||||||
- name: Setup Python ${{ env.VERSION }}
|
- name: Setup Python ${{ env.VERSION }}
|
||||||
@@ -125,16 +200,84 @@ on:
|
|||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
Install-Module Pester -Force -Scope CurrentUser -SkipPublisherCheck
|
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 }}";
|
||||||
Platform="${{ matrix.platform }}";
|
Platform="${{ matrix.platform }}";
|
||||||
Architecture="${{ matrix.arch }}";
|
Architecture="${{ matrix.arch }}";
|
||||||
}
|
}
|
||||||
$Result = Invoke-Pester -Container $pesterContainer -PassThru
|
$Result = Invoke-Pester -Container $pesterContainer -PassThru
|
||||||
if ($Result.FailedCount -gt 0) {
|
if ($Result.FailedCount -gt 0) {
|
||||||
$host.SetShouldExit($Result.FailedCount)
|
$host.SetShouldExit($Result.FailedCount)
|
||||||
exit $Result.FailedCount
|
exit $Result.FailedCount
|
||||||
}
|
}
|
||||||
working-directory: ${{ github.workspace }}/tests
|
working-directory: ${{ github.workspace }}/tests
|
||||||
|
|
||||||
|
|
||||||
|
publish_release:
|
||||||
|
name: Publish release
|
||||||
|
if: github.event_name == 'workflow_dispatch' && inputs.PUBLISH_RELEASES
|
||||||
|
needs: test_python
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
|
||||||
|
- name: Publish Release ${{ env.VERSION }}
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ env.VERSION }}-${{ github.run_id }}
|
||||||
|
release_name: ${{ env.VERSION }}
|
||||||
|
body: |
|
||||||
|
Python ${{ env.VERSION }}
|
||||||
|
|
||||||
|
- name: Generate hash for packages
|
||||||
|
run: |
|
||||||
|
$childItems = Get-Childitem -Path '.'
|
||||||
|
$childItems | Foreach-Object {
|
||||||
|
$packageObj = Get-Childitem -Path $_.FullName | Select-Object -First 1
|
||||||
|
Write-Host "Package: $($packageObj.Name)"
|
||||||
|
$actualHash = (Get-FileHash -Path $packageObj.FullName -Algorithm sha256).Hash
|
||||||
|
$hashString = "$actualHash $($packageObj.Name)"
|
||||||
|
Write-Host "$hashString"
|
||||||
|
Add-Content -Path ./hashes.sha256 -Value "$hashString"
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Upload release assets
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
for (let artifactDir of fs.readdirSync('.')) {
|
||||||
|
let artifactName = fs.lstatSync(artifactDir).isDirectory() ? fs.readdirSync(`${artifactDir}`)[0] : artifactDir;
|
||||||
|
|
||||||
|
console.log(`Upload ${artifactName} asset`);
|
||||||
|
github.rest.repos.uploadReleaseAsset({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: ${{ steps.create_release.outputs.id }},
|
||||||
|
name: artifactName,
|
||||||
|
data: fs.lstatSync(artifactDir).isDirectory() ? fs.readFileSync(`./${artifactDir}/${artifactName}`) : fs.readFileSync(`./${artifactName}`).toString()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger_pr:
|
||||||
|
name: Trigger "Create Pull Request" workflow
|
||||||
|
needs: publish_release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Trigger "Create Pull Request" workflow
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
script: |
|
||||||
|
github.rest.actions.createWorkflowDispatch({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
workflow_id: 'create-pr.yml',
|
||||||
|
ref: 'main'
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user