Compare commits

..
Author SHA1 Message Date
MaksimZhukov 6468490367 Merge pull request #64 from actions/v-mazhuk/fix-powerhell-issue-with-paths
Fix PowerShell issue with relative paths
2020-11-23 17:35:28 +03:00
MaksimZhukov 4be9a4cca1 Update overwriteExistingFiles input 2020-11-23 16:47:07 +03:00
MaksimZhukov 89a619f4b9 Fix PowerShell issue with relative paths 2020-11-23 13:29:46 +03:00
MaksimZhukov ac42875cb8 Merge pull request #63 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/09/2020
2020-11-09 16:00:27 +03:00
Service account 280f63ac35 Update versions-manifest 2020-11-09 12:34:15 +00:00
MaksimZhukov f85839ce0d Merge pull request #62 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/04/2020
2020-11-06 09:35:07 +03:00
Service account 594273ac16 Update versions-manifest 2020-11-04 17:39:24 +00:00
MaksimZhukov bc57fd3c5f Merge pull request #59 from actions/update-versions-manifest-file
[versions-manifest] Build main Python versions with 1.1 version of openssl
2020-10-29 15:51:35 +03:00
Service account a887886318 Update versions-manifest 2020-10-29 08:58:36 +00:00
Dmitry ShibanovandDmitry Shibanov ff4ca0b2e5 skip test for python 2 (#60)
Co-authored-by: Dmitry Shibanov <[email protected]>
2020-10-29 10:39:08 +03:00
MaksimZhukov 0b6a06284d Merge pull request #58 from dmitry-shibanov/v-dmshib/rebuild-python-openssl
Change version of openssl for python building.
2020-10-28 15:17:45 +03:00
Dmitry Shibanov 50e47adc8b remove debug lines 2020-10-27 11:56:49 +03:00
Dmitry Shibanov 99a84463ad revert test changes 2020-10-27 11:45:49 +03:00
Dmitry Shibanov a7aea91c95 change links 2020-10-21 19:18:35 +03:00
Dmitry Shibanov cdd1351989 change to static path 2020-10-21 15:55:45 +03:00
Dmitry Shibanov 2aa5c75cf9 change connection 2020-10-21 10:58:28 +03:00
Dmitry Shibanov 13b26039fa add fix to confirm uninstalling 2020-10-20 15:47:44 +03:00
Dmitry Shibanov aa8915507a add new openssl 2020-10-20 13:12:41 +03:00
MaksimZhukov 57bf4da3a5 Merge pull request #57 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/14/2020
2020-10-14 12:06:42 +03:00
Service account 085cf7607e Update versions-manifest 2020-10-14 08:52:18 +00:00
MaksimZhukov ae06e9c90f Merge pull request #56 from dmitry-shibanov/v-dmshib/exclude-symbol-from3.10
Exclude symbol module from python 3.10 and higher.
2020-10-14 11:27:17 +03:00
Dmitry Shibanov c4030498aa add version compare 2020-10-13 19:56:27 +03:00
Dmitry Shibanov 6701f7c8b0 add new exclude 2020-10-13 16:42:04 +03:00
github-actions[bot]andService account 1430296346 Add 3.9.0 (#55)
Co-authored-by: Service account <[email protected]>
2020-10-06 15:48:59 +03:00
MaksimZhukov abc7af4881 Merge pull request #54 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/24/2020
2020-09-25 11:21:23 +03:00
Service account c2464b5d82 Update versions-manifest 2020-09-24 12:26:29 +00:00
MaksimZhukov ff07bfffbb Merge pull request #53 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/21/2020
2020-09-21 18:06:30 +03:00
Service account 46856eea96 Update versions-manifest 2020-09-21 14:48:39 +00:00
MaksimZhukov 1c92aa7fd8 Merge pull request #52 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/07/2020
2020-09-07 12:22:42 +03:00
Service account 4e23e7ccf5 Update versions-manifest 2020-09-07 09:07:48 +00:00
MaksimZhukov e643db6cb1 Merge pull request #50 from actions/v-mazhuk/move-release-creation-to-github-actions
Move release and PR creation to GitHub Actions
2020-08-28 18:01:59 +03:00
MaksimZhukov 15099a8cbe Add link to the created PR 2020-08-28 15:24:47 +03:00
MaksimZhukov a3078ebf0c Move release and PR creation to the GitHub Actions 2020-08-28 14:14:38 +03:00
MaksimZhukov 87b41b829e Merge pull request #47 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/18/2020
2020-08-18 16:40:37 +03:00
Service account b41aabd79c Update versions-manifest based on build from 20200818.1 2020-08-18 13:25:10 +00:00
MaksimZhukov ca3edf5446 Merge pull request #46 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/12/2020
2020-08-12 12:55:08 +03:00
Service account 04b0679602 Update versions-manifest based on build from 20200812.1 2020-08-12 08:45:37 +00:00
MaksimZhukovandMaksimZhukov 6204b3717e Update Git submodule (#45)
Co-authored-by: MaksimZhukov <[email protected]>
2020-07-30 14:22:24 +03:00
Maxim Lobanov d20146a86c Update versions-manifest.json 2020-07-28 22:12:47 +03:00
MaksimZhukovandService account 4df41f4916 Update versions-manifest based on build from 20200721.2 (#44)
Co-authored-by: Service account <[email protected]>
2020-07-24 14:15:21 +03:00
MaksimZhukovandService account 636e550e78 Update versions-manifest based on build from 20200721.2 (#43)
Co-authored-by: Service account <[email protected]>
2020-07-21 16:04:40 +03:00
MaksimZhukovandService account bbbf87f2cf Update versions-manifest based on build from 20200715.1 (#42)
Co-authored-by: Service account <[email protected]>
2020-07-17 16:45:08 +03:00
MaksimZhukovandService account 1cb5ff2fb0 Update versions-manifest based on build from 20200715.1 (#40)
Co-authored-by: Service account <[email protected]>
2020-07-15 20:49:07 +03:00
MaksimZhukovandMaksimZhukov 654b037263 Fix python tests (#41)
Co-authored-by: MaksimZhukov <[email protected]>
2020-07-15 15:54:30 +03:00
Maxim Lobanov 06e3e6702d Update README.md 2020-07-15 13:37:07 +03:00
5c851d6172 Add support for unstable Python versions (#38)
* Add support of unstable versions to package generation (#2)
* Add support of symver versions to Python setup scripts and tests

Co-authored-by: Maksim Petrov <[email protected]>
Co-authored-by: MaksimZhukov <[email protected]>
Co-authored-by: Maxim Lobanov <[email protected]>
2020-07-15 13:13:21 +03:00
Maxim Lobanov 67794a4d5f switch default branch (#37) 2020-07-14 17:22:51 +03:00
MaksimZhukov 58a9c4b1d9 Merge pull request #35 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/29/2020
2020-06-29 18:14:43 +03:00
Service account 9b7480ff6d Update versions-manifest based on build from 20200629.6 2020-06-29 11:51:19 +00:00
MaksimZhukov 7ef20701e6 Merge pull request #34 from actions/v-mazhuk/validate-version-manifest
Add test workflow to validate versions-manifest.json file
2020-06-17 10:45:17 +03:00
MaksimZhukov 4dee72fe2f Remove checkout and update git submodules 2020-06-16 20:10:32 +03:00
MaksimZhukov 94ccfe8b74 Add test workflow to validate versions-manifest.json file 2020-06-16 18:39:00 +03:00
Alena Sviridenko 6e82fdd5b2 Merge pull request #32 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/10/2020
2020-06-10 12:32:33 +03:00
Service account 0baa79c808 Update versions-manifest based on build from 20200610.1 2020-06-10 08:43:43 +00:00
Alena Sviridenko 614a9e29eb Merge pull request #31 from vmapetr/v-mapetr/build-with-loadable-sqlite-extensions
Build Python3 for nix and darwin with enabled loadable sqlite extensions
2020-06-09 15:14:26 +03:00
Maksim Petrov 22860d08aa Build Python3 for nix and darwin with enabled loadable sqlite extensions 2020-06-08 16:00:25 +03:00
MaksimZhukovandService account d0bb4295e9 Upload Ubuntu 20.04 binaries (#28)
Co-authored-by: Service account <[email protected]>
2020-06-04 08:54:29 +03:00
Maxim Lobanov 2a3a8176d7 Update platform for new version manifest generator (#29)
* Update build-python-packages.yml

* update platforms

* fix platform conditions

* add clean up
2020-06-03 20:38:34 +03:00
Maxim Lobanov 06026eac83 add ubuntu 2004 to definitions (#27) 2020-06-03 09:45:50 +03:00
Dmitry Shibanov 572e346b1c Add helpers' submodule (#26)
* add common helpers
Co-authored-by: Dmitry Shibanov <[email protected]>
2020-06-02 18:23:40 +03:00
MaksimZhukovandService account 10f5e8e4f5 Update versions-manifest based on build from 20200514.1 (#25)
Co-authored-by: Service account <[email protected]>
2020-05-14 13:11:17 +03:00
Konrad PabjanandBrian Cristante 1c756eb429 Update nix-setup-template comments (#24)
* Update nix-setup-template.sh

* Update installers/nix-setup-template.sh

Co-authored-by: Brian Cristante <[email protected]>

Co-authored-by: Brian Cristante <[email protected]>
2020-05-08 18:07:16 +03:00
MaksimZhukov 95394a105a Merge pull request #23 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/06/2020
2020-05-06 15:31:14 +03:00
Service account eb1676d8ac Update versions-manifest based on build from 20200505.19 2020-05-06 11:46:24 +00:00
41 changed files with 1557 additions and 1269 deletions
+33
View File
@@ -0,0 +1,33 @@
name: Create Pull Request
on:
workflow_dispatch:
defaults:
run:
shell: pwsh
jobs:
create_pr:
name: Create Pull Request
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Create versions-manifest.json
run: |
./helpers/packages-generation/manifest-generator.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-GitHubAccessToken "${{secrets.GITHUB_TOKEN}}" `
-OutputFile "./versions-manifest.json" `
-ConfigurationFile "./config/python-manifest-config.json"
- name: Create GitHub PR
run: |
$formattedDate = Get-Date -Format "MM/dd/yyyy"
./helpers/github/create-pull-request.ps1 `
-RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{secrets.GITHUB_TOKEN}}" `
-BranchName "update-versions-manifest-file" `
-CommitMessage "Update versions-manifest" `
-PullRequestTitle "[versions-manifest] Update for release from ${formattedDate}" `
-PullRequestBody "Update versions-manifest.json for release from ${formattedDate}"
+18
View File
@@ -0,0 +1,18 @@
name: Create release
on:
repository_dispatch:
types: [create-release]
jobs:
create_release:
name: Create release ${{ github.event.client_payload.ToolVersion }}
runs-on: ubuntu-latest
steps:
- name: Create release for Python ${{ github.event.client_payload.ToolVersion }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.client_payload.TagName }}
release_name: ${{ github.event.client_payload.ToolVersion }}
body: ${{ github.event.client_payload.ReleaseBody }}
@@ -0,0 +1,32 @@
name: Manifest config tests
on:
pull_request:
branches:
- main
paths-ignore:
- 'versions-manifest.json'
jobs:
RunTests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: true
- name: Install Pester
shell: pwsh
run: |
Install-Module Pester -Force -Scope CurrentUser
- name: Run tests
shell: pwsh
run: |
Import-Module Pester
Invoke-Pester -Configuration @{
Run = @{
Path = "tests/ManifestConfig.Tests.ps1"
Exit = $true
}
}
+35
View File
@@ -0,0 +1,35 @@
name: Validate 'versions-manifest.json' file
on:
push:
branches:
- main
paths:
- 'versions-manifest.json'
jobs:
setup-versions-from-manifest:
name: Setup ${{ matrix.python }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
python: [3.5.4, 3.6.7, 3.7.5, 3.8.1]
steps:
- name: setup-python ${{ matrix.python }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Validate version
run: |
$pythonVersion = (python --version)
if ("Python ${{ matrix.python }}" -ne "$pythonVersion"){
Write-Host "The current version is $pythonVersion; expected version is ${{ matrix.python }}"
exit 1
}
$pythonVersion
shell: pwsh
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'
+4
View File
@@ -0,0 +1,4 @@
[submodule "helpers"]
path = helpers
url = https://github.com/actions/versions-package-tools
branch = main
+1 -1
View File
@@ -10,7 +10,7 @@ Some versions are pre-installed on [virtual-environments](https://github.com/act
More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action. More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action.
## Adding new versions ## Adding new versions
We are trying to build and release new versions of Python as soon as they are released. Please open an issue if any versions are missing. We are trying to build and release new versions of Python as soon as they are released. Please open an issue in [actions/virtual-environments](https://github.com/actions/virtual-environments) if any versions are missing.
## Contribution ## Contribution
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure
+43 -10
View File
@@ -7,7 +7,7 @@ stages:
dependsOn: [] dependsOn: []
variables: variables:
VmImage: 'macOS-10.14' VmImage: 'macOS-10.14'
Platform: macos-1014 Platform: darwin
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/build-job.yml - template: /azure-pipelines/templates/build-job.yml
@@ -17,7 +17,7 @@ stages:
dependsOn: Build_Python_MacOS dependsOn: Build_Python_MacOS
variables: variables:
VmImage: 'macOS-10.14' VmImage: 'macOS-10.14'
Platform: macos-1014 Platform: darwin
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/test-job.yml - template: /azure-pipelines/templates/test-job.yml
@@ -26,7 +26,7 @@ stages:
dependsOn: [] dependsOn: []
variables: variables:
VmImage: 'ubuntu-16.04' VmImage: 'ubuntu-16.04'
Platform: ubuntu-1604 Platform: linux-16.04
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/build-job.yml - template: /azure-pipelines/templates/build-job.yml
@@ -36,7 +36,7 @@ stages:
dependsOn: Build_Python_Ubuntu_1604 dependsOn: Build_Python_Ubuntu_1604
variables: variables:
VmImage: 'ubuntu-16.04' VmImage: 'ubuntu-16.04'
Platform: ubuntu-1604 Platform: linux-16.04
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/test-job.yml - template: /azure-pipelines/templates/test-job.yml
@@ -45,7 +45,7 @@ stages:
dependsOn: [] dependsOn: []
variables: variables:
VmImage: 'ubuntu-18.04' VmImage: 'ubuntu-18.04'
Platform: ubuntu-1804 Platform: linux-18.04
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/build-job.yml - template: /azure-pipelines/templates/build-job.yml
@@ -55,7 +55,26 @@ stages:
dependsOn: Build_Python_Ubuntu_1804 dependsOn: Build_Python_Ubuntu_1804
variables: variables:
VmImage: 'ubuntu-18.04' VmImage: 'ubuntu-18.04'
Platform: ubuntu-1804 Platform: linux-18.04
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_2004
dependsOn: []
variables:
VmImage: 'ubuntu-20.04'
Platform: linux-20.04
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_Ubuntu_2004
condition: succeeded()
dependsOn: Build_Python_Ubuntu_2004
variables:
VmImage: 'ubuntu-20.04'
Platform: linux-20.04
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/test-job.yml - template: /azure-pipelines/templates/test-job.yml
@@ -64,7 +83,7 @@ stages:
dependsOn: [] dependsOn: []
variables: variables:
VmImage: 'vs2017-win2016' VmImage: 'vs2017-win2016'
Platform: windows-2016 Platform: win32
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/build-job.yml - template: /azure-pipelines/templates/build-job.yml
@@ -74,7 +93,7 @@ stages:
dependsOn: Build_Python_X64_Windows dependsOn: Build_Python_X64_Windows
variables: variables:
VmImage: 'vs2017-win2016' VmImage: 'vs2017-win2016'
Platform: windows-2016 Platform: win32
Architecture: x64 Architecture: x64
jobs: jobs:
- template: /azure-pipelines/templates/test-job.yml - template: /azure-pipelines/templates/test-job.yml
@@ -83,7 +102,7 @@ stages:
dependsOn: [] dependsOn: []
variables: variables:
VmImage: 'vs2017-win2016' VmImage: 'vs2017-win2016'
Platform: windows-2016 Platform: win32
Architecture: x86 Architecture: x86
jobs: jobs:
- template: /azure-pipelines/templates/build-job.yml - template: /azure-pipelines/templates/build-job.yml
@@ -93,7 +112,21 @@ stages:
dependsOn: Build_Python_x86_Windows dependsOn: Build_Python_x86_Windows
variables: variables:
VmImage: 'vs2017-win2016' VmImage: 'vs2017-win2016'
Platform: windows-2016 Platform: win32
Architecture: x86 Architecture: x86
jobs: jobs:
- template: /azure-pipelines/templates/test-job.yml - template: /azure-pipelines/templates/test-job.yml
- stage: Publish_Release
dependsOn: [Test_Python_MacOS, Test_Python_Ubuntu_1604, Test_Python_Ubuntu_1804, Test_Python_Ubuntu_2004, Test_Python_x64_Windows, Test_Python_x86_Windows]
jobs:
- deployment: Publish_Release
pool:
name: Azure Pipelines
vmImage: ubuntu-18.04
environment: 'Get Available Tools Versions - Publishing Approval'
strategy:
runOnce:
deploy:
steps:
- template: /azure-pipelines/templates/publish-release-steps.yml
+6 -2
View File
@@ -3,7 +3,7 @@ pr:
autoCancel: true autoCancel: true
branches: branches:
include: include:
- master - main
paths: paths:
exclude: exclude:
- versions-manifest.json - versions-manifest.json
@@ -29,6 +29,10 @@ jobs:
-AzureDevOpsProjectName $(System.TeamProject) ` -AzureDevOpsProjectName $(System.TeamProject) `
-AzureDevOpsAccessToken $(System.AccessToken) ` -AzureDevOpsAccessToken $(System.AccessToken) `
-SourceBranch $(Build.SourceBranch) ` -SourceBranch $(Build.SourceBranch) `
-DefinitionId $(DEFINITION_ID) `
-SourceVersion $(Build.SourceVersion) ` -SourceVersion $(Build.SourceVersion) `
-ManifestLink $(MANIFEST_LINK) `
-WaitForBuilds $(WAIT_FOR_BUILDS) `
-ToolVersions "$(PYTHON_VERSIONS)" ` -ToolVersions "$(PYTHON_VERSIONS)" `
-DefinitionId $(DEFINITION_ID) -RetryIntervalSec $(RETRY_INTERVAL_SEC) `
-RetryCount $(RETRY_COUNT)
+11
View File
@@ -8,12 +8,23 @@ jobs:
- checkout: self - checkout: self
submodules: true submodules: true
# We need this temporary step to have a consistent version of PowerShell on all images.
- task: PowerShell@2
displayName: 'Update PowerShell version for macOS'
condition: eq(variables['Platform'], 'darwin')
inputs:
TargetType: inline
script: |
brew update
brew cask upgrade powershell
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Build Python $(VERSION)' displayName: 'Build Python $(VERSION)'
inputs: inputs:
targetType: filePath targetType: filePath
filePath: './builders/build-python.ps1' filePath: './builders/build-python.ps1'
arguments: '-Version $(VERSION) -Platform $(Platform) -Architecture $(Architecture)' arguments: '-Version $(VERSION) -Platform $(Platform) -Architecture $(Architecture)'
pwsh: true
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
displayName: 'Publish Artifact: Python $(VERSION)' displayName: 'Publish Artifact: Python $(VERSION)'
@@ -0,0 +1,47 @@
steps:
- download: none
- checkout: self
submodules: true
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
path: $(Build.BinariesDirectory)
- task: PowerShell@2
displayName: 'Create release Python $(VERSION)'
inputs:
TargetType: inline
script: |
$tagName = "$(VERSION)-$(Build.BuildId)"
$releaseBody = "Python $(VERSION)"
./helpers/github/create-release.ps1 -RepositoryFullName "$(Build.Repository.Name)" `
-AccessToken "$(GITHUB_TOKEN)" `
-ToolVersion "$(VERSION)" `
-TagName "$tagName" `
-ReleaseBody "$releaseBody" `
-EventType "$(EVENT_TYPE)"
- task: GitHubRelease@1
displayName: 'Upload release assets'
inputs:
gitHubConnection: 'Github Connection'
action: edit
tag: '$(VERSION)-$(Build.BuildId)'
title: '$(VERSION)'
releaseNotesSource: inline
releaseNotesInline: '$(RELEASE_NOTES_CONTENT)'
assets: '$(Build.BinariesDirectory)/*/*'
assetUploadMode: replace
addChangeLog: false
- task: PowerShell@2
displayName: 'Trigger "Create Pull Request" workflow'
inputs:
TargetType: inline
script: |
Import-Module (Join-Path (Get-Location).Path "github-api.psm1")
$gitHubApi = Get-GitHubApi -RepositoryFullName "$(Build.Repository.Name)" -AccessToken "$(GITHUB_TOKEN)"
$gitHubApi.CreateWorkflowDispatch("$(WORKFLOW_FILE_NAME)", "$(WORKFLOW_DISPATCH_REF)", "$(INPUTS)")
Write-Host "Please find created Pull request here: $(Build.Repository.Uri)/pulls"
workingDirectory: '$(Build.SourcesDirectory)/helpers/github'
+16 -5
View File
@@ -3,10 +3,19 @@ jobs:
pool: pool:
name: Azure Pipelines name: Azure Pipelines
vmImage: $(VmImage) vmImage: $(VmImage)
variables:
TestRunTitle: 'python-$(Platform)-$(Architecture)'
steps: steps:
- checkout: self - checkout: self
submodules: true submodules: true
- task: PowerShell@2
displayName: Fully cleanup the toolcache directory before testing
inputs:
targetType: filePath
filePath: helpers/clean-toolcache.ps1
arguments: -ToolName "Python"
- task: DownloadPipelineArtifact@2 - task: DownloadPipelineArtifact@2
inputs: inputs:
source: 'current' source: 'current'
@@ -18,13 +27,14 @@ jobs:
archiveFilePatterns: '$(Build.BinariesDirectory)/python-$(VERSION)-$(Platform)-$(Architecture).*' archiveFilePatterns: '$(Build.BinariesDirectory)/python-$(VERSION)-$(Platform)-$(Architecture).*'
destinationFolder: $(Build.BinariesDirectory) destinationFolder: $(Build.BinariesDirectory)
cleanDestinationFolder: false cleanDestinationFolder: false
overwriteExistingFiles: true
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Apply build artifact to the local machines' displayName: 'Apply build artifact to the local machines'
inputs: inputs:
TargetType: inline TargetType: inline
script: | script: |
if ($env:PLATFORM -match 'windows') { powershell ./setup.ps1 } else { sh ./setup.sh } if ($env:PLATFORM -match 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh }
workingDirectory: '$(Build.BinariesDirectory)' workingDirectory: '$(Build.BinariesDirectory)'
- task: UsePythonVersion@0 - task: UsePythonVersion@0
@@ -40,7 +50,7 @@ jobs:
script: | script: |
Invoke-Expression "python ./sources/python-config-output.py" Invoke-Expression "python ./sources/python-config-output.py"
workingDirectory: '$(Build.SourcesDirectory)/tests' workingDirectory: '$(Build.SourcesDirectory)/tests'
condition: ne(variables['Platform'], 'windows-2016') condition: ne(variables['Platform'], 'win32')
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Verbose python binary links' displayName: 'Verbose python binary links'
@@ -48,16 +58,16 @@ jobs:
TargetType: inline TargetType: inline
script: | script: |
$pythonLocation = which python $pythonLocation = which python
if ($env:PLATFORM -match 'macos') { otool -L $pythonLocation } else { ldd $pythonLocation } if ($env:PLATFORM -match 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation }
workingDirectory: '$(Build.BinariesDirectory)' workingDirectory: '$(Build.BinariesDirectory)'
condition: ne(variables['Platform'], 'windows-2016') condition: ne(variables['Platform'], 'win32')
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Run tests' displayName: 'Run tests'
inputs: inputs:
TargetType: inline TargetType: inline
script: | script: |
Install-Module Pester -Force -Scope CurrentUser Install-Module Pester -Force -Scope CurrentUser -RequiredVersion 4.10.1
Import-Module Pester Import-Module Pester
$pesterParams = @{ $pesterParams = @{
Path="./python-tests.ps1"; Path="./python-tests.ps1";
@@ -67,6 +77,7 @@ jobs:
} }
} }
Invoke-Pester -Script $pesterParams -OutputFile "test_results.xml" -OutputFormat NUnitXml Invoke-Pester -Script $pesterParams -OutputFile "test_results.xml" -OutputFormat NUnitXml
pwsh: true
workingDirectory: '$(Build.SourcesDirectory)/tests' workingDirectory: '$(Build.SourcesDirectory)/tests'
- task: PublishTestResults@2 - task: PublishTestResults@2
+11 -11
View File
@@ -1,6 +1,6 @@
using module "./builders/win-python-builder.psm1" using module "./win-python-builder.psm1"
using module "./builders/ubuntu-python-builder.psm1" using module "./ubuntu-python-builder.psm1"
using module "./builders/macos-python-builder.psm1" using module "./macos-python-builder.psm1"
<# <#
.SYNOPSIS .SYNOPSIS
@@ -21,7 +21,7 @@ Required parameter. The platform for which Python will be built.
#> #>
param( param(
[Parameter (Mandatory=$true)][Version] $Version, [Parameter (Mandatory=$true)][semver] $Version,
[Parameter (Mandatory=$true)][string] $Platform, [Parameter (Mandatory=$true)][string] $Platform,
[string] $Architecture = "x64" [string] $Architecture = "x64"
) )
@@ -29,6 +29,7 @@ param(
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "common-helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "common-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "nix-helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "nix-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "python-version.psm1") -DisableNameChecking
function Get-PythonBuilder { function Get-PythonBuilder {
<# <#
@@ -49,18 +50,17 @@ function Get-PythonBuilder {
#> #>
param ( param(
[version] $Version, [semver] $Version,
[string] $Architecture, [string] $Architecture,
[string] $Platform [string] $Platform
) )
$Platform = $Platform.ToLower() if ($Platform -match 'win32') {
if ($Platform -match 'windows') {
$builder = [WinPythonBuilder]::New($Version, $Architecture, $Platform) $builder = [WinPythonBuilder]::New($Version, $Architecture, $Platform)
} elseif ($Platform -match 'ubuntu') { } elseif ($Platform -match 'linux') {
$builder = [UbuntuPythonBuilder]::New($Version, $Architecture, $Platform) $builder = [UbuntuPythonBuilder]::New($Version, $Architecture, $Platform)
} elseif ($Platform -match 'macos') { } elseif ($Platform -match 'darwin') {
$builder = [macOSPythonBuilder]::New($Version, $Architecture, $Platform) $builder = [macOSPythonBuilder]::New($Version, $Architecture, $Platform)
} else { } else {
Write-Host "##vso[task.logissue type=error;] Invalid platform: $Platform" Write-Host "##vso[task.logissue type=error;] Invalid platform: $Platform"
@@ -71,5 +71,5 @@ function Get-PythonBuilder {
} }
### Create Python builder instance, and build artifact ### Create Python builder instance, and build artifact
$Builder = Get-PythonBuilder -Version $Version -Architecture $Architecture -Platform $Platform $Builder = Get-PythonBuilder -Version $Version -Architecture $Architecture -Platform $Platform
$Builder.Build() $Builder.Build()
+18 -6
View File
@@ -1,4 +1,4 @@
using module "./builders/nix-python-builder.psm1" using module "./nix-python-builder.psm1"
class macOSPythonBuilder : NixPythonBuilder { class macOSPythonBuilder : NixPythonBuilder {
<# <#
@@ -17,7 +17,7 @@ class macOSPythonBuilder : NixPythonBuilder {
#> #>
macOSPythonBuilder( macOSPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { } ) : Base($version, $architecture, $platform) { }
@@ -29,17 +29,29 @@ class macOSPythonBuilder : NixPythonBuilder {
#> #>
$pythonBinariesLocation = $this.GetFullPythonToolcacheLocation() $pythonBinariesLocation = $this.GetFullPythonToolcacheLocation()
$configureString = "./configure --prefix=$pythonBinariesLocation --enable-optimizations --enable-shared --with-lto" $configureString = "./configure"
$configureString += " --prefix=$pythonBinariesLocation"
$configureString += " --enable-optimizations"
$configureString += " --enable-shared"
$configureString += " --with-lto"
### OS X 10.11, Apple no longer provides header files for the deprecated system version of OpenSSL. ### OS X 10.11, Apple no longer provides header files for the deprecated system version of OpenSSL.
### Solution is to install these libraries from a third-party package manager, ### Solution is to install these libraries from a third-party package manager,
### and then add the appropriate paths for the header and library files to configure command. ### and then add the appropriate paths for the header and library files to configure command.
### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies) ### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies)
if ($this.Version -lt "3.7.0") { if ($this.Version -lt "3.7.0") {
$env:LDFLAGS="-L$(brew --prefix openssl)/lib" $env:LDFLAGS = "-L/usr/local/opt/[email protected]/lib"
$env:CFLAGS="-I$(brew --prefix openssl)/include" $env:CFLAGS = "-I/usr/local/opt/[email protected]/include"
} else { } else {
$configureString += " --with-openssl=/usr/local/opt/openssl" $configureString += " --with-openssl=/usr/local/opt/openssl@1.1"
}
### Compile with support of loadable sqlite extensions. Unavailable for Python 2.*
### Link to documentation (https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension)
if ($this.Version -ge "3.2.0") {
$configureString += " --enable-loadable-sqlite-extensions"
$env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib"
$env:CFLAGS += " -I$(brew --prefix sqlite3)/include"
} }
Execute-Command -Command $configureString Execute-Command -Command $configureString
+6 -7
View File
@@ -1,4 +1,4 @@
using module "./builders/python-builder.psm1" using module "./python-builder.psm1"
class NixPythonBuilder : PythonBuilder { class NixPythonBuilder : PythonBuilder {
<# <#
@@ -33,13 +33,12 @@ class NixPythonBuilder : PythonBuilder {
[string] $OutputArtifactName [string] $OutputArtifactName
NixPythonBuilder( NixPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { ) : Base($version, $architecture, $platform) {
$this.InstallationTemplateName = "nix-setup-template.sh" $this.InstallationTemplateName = "nix-setup-template.sh"
$this.InstallationScriptName = "setup.sh" $this.InstallationScriptName = "setup.sh"
$this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz" $this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz"
} }
@@ -50,8 +49,10 @@ class NixPythonBuilder : PythonBuilder {
#> #>
$base = $this.GetBaseUri() $base = $this.GetBaseUri()
$versionName = $this.GetBaseVersion()
$nativeVersion = Convert-Version -version $this.Version
return "${base}/$($this.Version)/Python-$($this.Version).tgz" return "${base}/${versionName}/Python-${nativeVersion}.tgz"
} }
[string] GetPythonBinary() { [string] GetPythonBinary() {
@@ -95,9 +96,7 @@ class NixPythonBuilder : PythonBuilder {
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw $installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
$variablesToReplace = @{ $variablesToReplace = @{
"{{__VERSION_MAJOR__}}" = $this.Version.Major; "{{__VERSION_FULL__}}" = $this.Version;
"{{__VERSION_MINOR__}}" = $this.Version.Minor;
"{{__VERSION_BUILD__}}" = $this.Version.Build;
} }
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) } $variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }
+16 -6
View File
@@ -29,7 +29,7 @@ class PythonBuilder {
#> #>
[version] $Version [semver] $Version
[string] $Architecture [string] $Architecture
[string] $Platform [string] $Platform
[string] $HostedToolcacheLocation [string] $HostedToolcacheLocation
@@ -38,17 +38,17 @@ class PythonBuilder {
[string] $ArtifactFolderLocation [string] $ArtifactFolderLocation
[string] $InstallationTemplatesLocation [string] $InstallationTemplatesLocation
PythonBuilder ([version] $version, [string] $architecture, [string] $platform) { PythonBuilder ([semver] $version, [string] $architecture, [string] $platform) {
$this.Version = $version $this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
$this.Architecture = $architecture
$this.Platform = $platform
$this.HostedToolcacheLocation = $env:AGENT_TOOLSDIRECTORY $this.HostedToolcacheLocation = $env:AGENT_TOOLSDIRECTORY
$this.TempFolderLocation = $env:BUILD_SOURCESDIRECTORY $this.TempFolderLocation = $env:BUILD_SOURCESDIRECTORY
$this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY $this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY
$this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY $this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers" $this.Version = $version
$this.Architecture = $architecture
$this.Platform = $platform
} }
[uri] GetBaseUri() { [uri] GetBaseUri() {
@@ -79,11 +79,21 @@ class PythonBuilder {
return "$pythonToolcacheLocation/$($this.Version)/$($this.Architecture)" return "$pythonToolcacheLocation/$($this.Version)/$($this.Architecture)"
} }
[string] GetBaseVersion() {
<#
.SYNOPSIS
Return Major.Minor.Patch version string.
#>
return "$($this.Version.Major).$($this.Version.Minor).$($this.Version.Patch)"
}
[void] PreparePythonToolcacheLocation() { [void] PreparePythonToolcacheLocation() {
<# <#
.SYNOPSIS .SYNOPSIS
Prepare system hostedtoolcache folder for new Python version. Prepare system hostedtoolcache folder for new Python version.
#> #>
$pythonBinariesLocation = $this.GetFullPythonToolcacheLocation() $pythonBinariesLocation = $this.GetFullPythonToolcacheLocation()
if (Test-Path $pythonBinariesLocation) { if (Test-Path $pythonBinariesLocation) {
+45
View File
@@ -0,0 +1,45 @@
function Convert-Label() {
<#
.SYNOPSIS
Convert generic semver label to native Python label.
#>
param(
[Parameter(Mandatory)]
[string] $label
)
switch ($label) {
"alpha" { return "a" }
"beta" { return "b" }
"rc" { return "rc" }
default { throw "Invalid version label '$label'" }
}
}
function Convert-Version {
<#
.SYNOPSIS
Convert generic semver version to native Python version.
#>
param(
[Parameter(Mandatory)]
[semver] $version,
[char] $delimiter = "."
)
$nativeVersion = "{0}.{1}.{2}" -f $version.Major, $version.Minor, $version.Patch
if ($version.PreReleaseLabel)
{
$preReleaseLabel = $version.PreReleaseLabel.Split($delimiter)
$preReleaseLabelName = Convert-Label -Label $preReleaseLabel[0]
$preReleaseLabelVersion = $preReleaseLabel[1]
$nativeVersion += "${preReleaseLabelName}${preReleaseLabelVersion}"
}
return $nativeVersion
}
+15 -5
View File
@@ -1,4 +1,4 @@
using module "./builders/nix-python-builder.psm1" using module "./nix-python-builder.psm1"