https://github.com/python/cpython
Raw File
Tip revision: 72f00f420afaba3bc873c2a986ca6d07e99fae1f authored by Pablo Galindo on 30 May 2022, 21:16:21 UTC
Python 3.11.0b2
Tip revision: 72f00f4
windows-release.yml
name: Release_$(Build.SourceBranchName)_$(SourceTag)_$(Date:yyyyMMdd)$(Rev:.rr)

parameters:
- name: GitRemote
  displayName: "Git remote"
  type: string
  default: python
  values:
  - 'python'
  - 'pablogsal'
  - 'ambv'
  - '(Other)'
- name: GitRemote_Other
  displayName: "If Other, specify Git remote"
  type: string
  default: 'python'
- name: SourceTag
  displayName: "Git tag"
  type: string
  default: main
- name: DoPublish
  displayName: "Publish release"
  type: boolean
  default: false
- name: SigningCertificate
  displayName: "Code signing certificate"
  type: string
  default: 'Python Software Foundation'
  values:
  - 'Python Software Foundation'
  - 'TestSign'
  - 'Unsigned'
- name: SigningDescription
  displayName: "Signature description"
  type: string
  default: 'Built: $(Build.BuildNumber)'
- name: DoARM64
  displayName: "Publish ARM64 build"
  type: boolean
  default: true
# Because there is no ARM64 Tcl/Tk pre-3.11, we need a separate option
# to keep those builds working when the files are going to be absent.
# Eventually when we stop releasing anything that old, we can drop this
# argument (and make it implicitly always 'true')
- name: ARM64TclTk
  displayName: "Use Tcl/Tk for ARM64 (3.11 and later)"
  type: boolean
  default: true
- name: DoPGO
  displayName: "Run PGO"
  type: boolean
  default: true
- name: DoCHM
  displayName: "Produce compiled help document (pre-3.11)"
  type: boolean
  default: false
- name: DoLayout
  displayName: "Produce full layout artifact"
  type: boolean
  default: true
- name: DoMSIX
  displayName: "Produce Store packages"
  type: boolean
  default: true
- name: DoNuget
  displayName: "Produce Nuget packages"
  type: boolean
  default: true
- name: DoEmbed
  displayName: "Produce embeddable package"
  type: boolean
  default: true
- name: DoMSI
  displayName: "Produce EXE/MSI installer"
  type: boolean
  default: true
- name: BuildToPublish
  displayName: "Build number to publish (0 to skip)"
  type: number
  default: '0'

variables:
  __RealSigningCertificate: 'Python Software Foundation'
  ${{ if ne(parameters.GitRemote, '(Other)') }}:
    GitRemote: ${{ parameters.GitRemote }}
  ${{ else }}:
    GitRemote: ${{ parameters.GitRemote_Other }}
  SourceTag: ${{ parameters.SourceTag }}
  DoPGO: ${{ parameters.DoPGO }}
  ${{ if ne(parameters.SigningCertificate, 'Unsigned') }}:
    SigningCertificate: ${{ parameters.SigningCertificate }}
  SigningDescription: ${{ parameters.SigningDescription }}
  DoCHM: ${{ parameters.DoCHM }}
  DoLayout: ${{ parameters.DoLayout }}
  DoMSIX: ${{ parameters.DoMSIX }}
  DoNuget: ${{ parameters.DoNuget }}
  DoEmbed: ${{ parameters.DoEmbed }}
  DoMSI: ${{ parameters.DoMSI }}
  DoPublish: ${{ parameters.DoPublish }}
  PublishARM64: ${{ parameters.DoARM64 }}
# QUEUE TIME VARIABLES
#  PyDotOrgUsername: ''
#  PyDotOrgServer: ''

trigger: none
pr: none

stages:
- ${{ if eq(parameters.BuildToPublish, '0') }}:
  - stage: Build
    displayName: Build binaries
    jobs:
    - template: windows-release/stage-build.yml
      parameters:
        ARM64TclTk: ${{ parameters.ARM64TclTk }}

  - stage: Sign
    displayName: Sign binaries
    dependsOn: Build
    jobs:
    - template: windows-release/stage-sign.yml

  - stage: Layout
    displayName: Generate layouts
    dependsOn: Sign
    jobs:
    - template: windows-release/stage-layout-full.yml
      parameters:
        ARM64TclTk: ${{ parameters.ARM64TclTk }}
    - template: windows-release/stage-layout-embed.yml
    - template: windows-release/stage-layout-nuget.yml

  - stage: Pack
    dependsOn: Layout
    jobs:
    - template: windows-release/stage-pack-nuget.yml

  - stage: Test
    dependsOn: Pack
    jobs:
    - template: windows-release/stage-test-embed.yml
    - template: windows-release/stage-test-nuget.yml

  - ${{ if eq(parameters.DoMSIX, 'true') }}:
    - stage: Layout_MSIX
      displayName: Generate MSIX layouts
      dependsOn: Sign
      jobs:
      - template: windows-release/stage-layout-msix.yml
        parameters:
          ARM64TclTk: ${{ parameters.ARM64TclTk }}

    - stage: Pack_MSIX
      displayName: Package MSIX
      dependsOn: Layout_MSIX
      jobs:
      - template: windows-release/stage-pack-msix.yml

  - ${{ if eq(parameters.DoMSI, 'true') }}:
    - stage: Build_MSI
      displayName: Build MSI installer
      dependsOn: Sign
      jobs:
      - template: windows-release/stage-msi.yml
        parameters:
          ARM64TclTk: ${{ parameters.ARM64TclTk }}

    - stage: Test_MSI
      displayName: Test MSI installer
      dependsOn: Build_MSI
      jobs:
      - template: windows-release/stage-test-msi.yml

  - ${{ if eq(parameters.DoPublish, 'true') }}:
    - ${{ if eq(parameters.DoMSI, 'true') }}:
      - stage: PublishPyDotOrg
        displayName: Publish to python.org
        dependsOn: ['Test_MSI', 'Test']
        jobs:
        - template: windows-release/stage-publish-pythonorg.yml

    - ${{ if eq(parameters.DoNuget, 'true') }}:
      - stage: PublishNuget
        displayName: Publish to nuget.org
        ${{ if eq(parameters.DoMSI, 'true') }}:
          dependsOn: ['Test_MSI', 'Test']
        ${{ else }}:
          dependsOn: 'Test'
        jobs:
        - template: windows-release/stage-publish-nugetorg.yml

    - ${{ if eq(parameters.DoMSIX, 'true') }}:
      - stage: PublishStore
        displayName: Publish to Store
        ${{ if eq(parameters.DoMSI, 'true') }}:
          dependsOn: ['Test_MSI', 'Pack_MSIX']
        ${{ else }}:
          dependsOn: 'Pack_MSIX'
        jobs:
        - template: windows-release/stage-publish-store.yml

- ${{ else }}:
  - stage: PublishExisting
    displayName: Publish existing build
    dependsOn: []
    jobs:
    - ${{ if eq(parameters.DoMSI, 'true') }}:
      - template: windows-release/stage-publish-pythonorg.yml
        parameters:
          BuildToPublish: ${{ parameters.BuildToPublish }}

    - ${{ if eq(parameters.DoNuget, 'true') }}:
      - template: windows-release/stage-publish-nugetorg.yml
        parameters:
          BuildToPublish: ${{ parameters.BuildToPublish }}

    - ${{ if eq(parameters.DoMSIX, 'true') }}:
      - template: windows-release/stage-publish-store.yml
        parameters:
          BuildToPublish: ${{ parameters.BuildToPublish }}
back to top