Skip to content

Commit d4f8a3b

Browse files
committed
feat(pipeline): add Azure Pipelines configuration for building and publishing library
1 parent 33be665 commit d4f8a3b

2 files changed

Lines changed: 137 additions & 33 deletions

File tree

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
# Build, package, and deploy msgraph-sdk-python to PyPI.
5+
6+
name: $(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)
7+
8+
trigger:
9+
branches:
10+
include:
11+
- main
12+
tags:
13+
include:
14+
- v*
15+
16+
pr: none
17+
18+
variables:
19+
pythonVersion: '3.14'
20+
21+
resources:
22+
repositories:
23+
- repository: 1ESPipelineTemplates
24+
type: git
25+
name: 1ESPipelineTemplates/1ESPipelineTemplates
26+
ref: refs/tags/release
27+
28+
extends:
29+
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
30+
parameters:
31+
pool:
32+
name: Azure-Pipelines-1ESPT-ExDShared
33+
image: ubuntu-latest
34+
os: linux
35+
sdl:
36+
sourceAnalysisPool:
37+
name: Azure-Pipelines-1ESPT-ExDShared
38+
image: windows-2022
39+
os: windows
40+
stages:
41+
- stage: build
42+
displayName: Build and Package msgraph-sdk-python
43+
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), eq(variables['Build.Reason'], 'Manual'))
44+
jobs:
45+
- job: build_python
46+
displayName: Build and Package
47+
pool:
48+
name: Azure-Pipelines-1ESPT-ExDShared
49+
image: ubuntu-latest
50+
os: linux
51+
steps:
52+
- checkout: self
53+
54+
- task: UsePythonVersion@0
55+
displayName: Install Python $(pythonVersion)
56+
inputs:
57+
versionSpec: $(pythonVersion)
58+
addToPath: true
59+
60+
- script: python -m pip install --upgrade pip
61+
displayName: Upgrade pip
62+
63+
- task: PipAuthenticate@1
64+
displayName: "Authenticate pip to Azure Artifacts"
65+
inputs:
66+
artifactFeeds: "$(System.TeamProject)/msgraph-python-dev"
67+
68+
- script: pip install -r requirements-dev.txt
69+
displayName: Install dependencies
70+
71+
- script: pylint msgraph --disable=W --rcfile=.pylintrc
72+
displayName: Lint with Pylint
73+
74+
- script: python -m build
75+
displayName: Build package artifacts
76+
77+
- task: CopyFiles@2
78+
displayName: Copy package artifacts to staging
79+
inputs:
80+
CleanTargetFolder: true
81+
sourceFolder: $(Build.SourcesDirectory)
82+
targetFolder: $(Build.ArtifactStagingDirectory)/python/msgraph_sdk
83+
Contents: |
84+
dist/*.tar.gz
85+
dist/*.whl
86+
flattenFolders: true
87+
88+
templateContext:
89+
outputs:
90+
- output: pipelineArtifact
91+
displayName: Stage msgraph-sdk package artifacts
92+
artifactName: pypi_msgraph_sdk_package
93+
targetPath: $(Build.ArtifactStagingDirectory)/python/msgraph_sdk
94+
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), eq(variables['Build.Reason'], 'Manual'))
95+
96+
- stage: deploy
97+
displayName: Publish msgraph-sdk-python to PyPI
98+
dependsOn: build
99+
condition: or(and(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), succeeded()), eq(variables['Build.Reason'], 'Manual'))
100+
jobs:
101+
- deployment: publish_python_package
102+
displayName: Publish msgraph-sdk package
103+
environment: pypi_prod
104+
pool:
105+
name: Azure-Pipelines-1ESPT-ExDShared
106+
image: ubuntu-latest
107+
os: linux
108+
templateContext:
109+
type: releaseJob
110+
isProduction: true
111+
inputs:
112+
- input: pipelineArtifact
113+
artifactName: pypi_msgraph_sdk_package
114+
targetPath: $(Build.ArtifactStagingDirectory)/python
115+
strategy:
116+
runOnce:
117+
deploy:
118+
steps:
119+
- task: EsrpRelease@9
120+
displayName: Publish msgraph-sdk package via ESRP Release
121+
inputs:
122+
connectedservicename: Federated DevX ESRP Managed Identity Connection
123+
usemanagedidentity: false
124+
keyvaultname: akv-prod-eastus
125+
authcertname: ReferenceLibraryPrivateCert
126+
signcertname: ReferencePackagePublisherCertificate
127+
clientid: 65035b7f-7357-4f29-bf25-c5ee5c3949f8
128+
intent: PackageDistribution
129+
contenttype: PYPI
130+
contentsource: Folder
131+
folderlocation: $(Build.ArtifactStagingDirectory)/python
132+
waitforreleasecompletion: true
133+
owners: graphtooling+python@microsoft.com
134+
approvers: graphtooling+python@microsoft.com
135+
serviceendpointurl: https://api.esrp.microsoft.com
136+
mainpublisher: ESRPRELPACMAN
137+
domaintenantid: cdc5aeea-15c5-4db6-b079-fcadd2505dc2

.github/workflows/publish.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)