forked from Azure/iotedgedev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
152 lines (134 loc) · 4.77 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
trigger:
branches:
include:
- refs/tags/v*
pool:
name: Azure-IoT-EdgeExperience-1ES-Hosted-Linux
demands:
- ImageOverride -equals MMSUbuntu18.04TLS
steps:
- task: UsePythonVersion@0
displayName: "Install Python"
inputs:
versionSpec: '3.7'
addToPath: true
architecture: 'x64'
- task: Bash@3
displayName: "Install Python packages"
inputs:
targetType: 'inline'
script: |
pip install tox
pip install twine
sudo apt-get install gcc libpq-dev -y
sudo apt-get install python-dev python-pip -y
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
pip3 install wheel
- task: Bash@3
displayName: "Update AIKey"
inputs:
targetType: 'inline'
script: 'sed -i "/__AIkey__/c __AIkey__ = ''$(AIKEY)''" ./iotedgedev/__init__.py'
- task: Bash@3
inputs:
targetType: 'inline'
script: |
if [[ $(Build.SourceBranch) =~ ^refs/tags/v?[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "##vso[task.setvariable variable=WHEEL_PUBLISH_FLAG;]true"
fi
VERSION=$(cat ./iotedgedev/__init__.py | grep '__version__' | grep -oP "'\K[^']+")
echo "##vso[task.setvariable variable=VERSION;]$VERSION"
- task: Bash@3
displayName: "Build wheel"
inputs:
targetType: 'inline'
script: |
python setup.py bdist_wheel
pip install dist/iotedgedev-${VERSION}-py3-none-any.whl && iotedgedev --version
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.SourcesDirectory)'
archiveFile: '$(Build.ArtifactStagingDirectory)/iotedgedev-$(VERSION)-win32-ia32.zip'
- task: Bash@3
displayName: "Revert AIKey to Original"
inputs:
targetType: 'inline'
script: 'sed -i "/__AIkey__/c __AIkey__ = ''$(TEST_AIKEY)''" ./iotedgedev/__init__.py'
- task: AzureKeyVault@2
displayName: 'Azure Key Vault: azure-iot-edgetools-kv'
inputs:
azureSubscription: 'Azure IoT DDE team subscription (377c3343-75bb-4244-98a3-0fb84a830c4b)-IoTEdgeDev'
KeyVaultName: 'azure-iot-edgetools-kv'
SecretsFilter: '*'
RunAsPreJob: true
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'SBOM Generation Task'
inputs:
BuildDropPath: '$(Build.SourcesDirectory)/dist'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/dist'
ArtifactName: 'drop'
publishLocation: 'Container'
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)/dist/'
Contents: '*'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: Bash@3
displayName: 'Upload to Blob'
condition: and(succeeded(), eq(variables['WHEEL_PUBLISH_FLAG'], 'true'))
inputs:
targetType: 'inline'
script: |
export AZCOPY_SPA_CLIENT_SECRET=$(AZURESDKPARTNERDROPS-SERVICE-PRINCIPAL-KEY)
azcopy login --service-principal --application-id $(APPID)
azcopy copy "$(Build.ArtifactStagingDirectory)/*" "https://azuresdkpartnerdrops.blob.core.windows.net/drops/azure-iot-edge-tools-iotedgedev/python/$(VERSION)/"
- task: GitHubRelease@0
condition: and(succeeded(), eq(variables['WHEEL_PUBLISH_FLAG'], 'true'))
inputs:
gitHubConnection: 'github.com_marianan'
repositoryName: '$(Build.Repository.Name)'
action: 'create'
target: '$(Build.SourceVersion)'
tagSource: 'manual'
tag: '$(Build.SourceBranch)'
releaseNotesSource: 'input'
isPreRelease: true
addChangeLog: false
- task: Bash@3
displayName: "Build Docker image"
inputs:
targetType: 'inline'
script: './build-docker.sh iotedgetoolscontainerregistry.azurecr.io/public/iotedge/iotedgedev linux'
workingDirectory: 'docker/tool'
- task: Bash@3
displayName: "Test local Docker image"
inputs:
targetType: 'inline'
script: |
PACKAGEVERSION=$(cat ../../iotedgedev/__init__.py | grep '__version__' | grep -oP "'\K[^']+")
echo "##vso[task.setvariable variable=VERSION]$PACKAGEVERSION"
mkdir /home/vsts/iotedge
docker run -v /var/run/docker.sock:/var/run/docker.sock -v /home/vsts/iotedge:/home/iotedge iotedgetoolscontainerregistry.azurecr.io/public/iotedge/iotedgedev:${PACKAGEVERSION}
workingDirectory: 'docker/tool'
- task: Docker@2
condition: and(succeeded(), eq(variables['WHEEL_PUBLISH_FLAG'], 'true'))
displayName: "Push docker image to acr"
inputs:
containerRegistry: 'IoTEdgeDev-Docker'
repository: 'public/iotedge/iotedgedev'
command: 'push'
tags: |
$(VERSION)
latest
- task: Bash@3
condition: and(succeeded(), eq(variables['WHEEL_PUBLISH_FLAG'], 'true'))
displayName: "Test last uploaded Docker image"
inputs:
targetType: 'inline'
script: |
docker pull mcr.microsoft.com/iotedge/iotedgedev
docker run mcr.microsoft.com/iotedge/iotedgedev
iotedgedev --version
workingDirectory: 'docker/tool'