forked from Azure/azure-storage-azcopy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
116 lines (110 loc) · 4.5 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
trigger:
branches:
include:
- dev
- master
pr:
branches:
include:
- dev
- master
jobs:
- job: Linux_and_Windows_Builds
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: GoTool@0
inputs:
version: '1.12'
- script: |
GOARCH=amd64 GOOS=linux go build -o "$(Build.ArtifactStagingDirectory)/azcopy_linux_amd64"
GOARCH=amd64 GOOS=linux go build -tags "se_integration" -o "$(Build.ArtifactStagingDirectory)/azcopy_linux_se_amd64"
GOARCH=amd64 GOOS=windows go build -o "$(Build.ArtifactStagingDirectory)/azcopy_windows_amd64.exe"
GOARCH=386 GOOS=windows go build -o "$(Build.ArtifactStagingDirectory)/azcopy_windows_386.exe"
displayName: 'Generate builds'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts'
condition: succeededOrFailed()
- job: MacOS_Build
pool:
vmImage: 'xcode9-macos10.13'
steps:
- task: GoTool@0
inputs:
version: '1.12'
- script: |
go build -o "$(Build.ArtifactStagingDirectory)/azcopy_darwin_amd64"
displayName: 'Generate builds'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts'
condition: succeededOrFailed()
- job: Test_On_Ubuntu
variables:
isMutexSet: 'false'
# allow maximum build time, in case we have build congestion
timeoutInMinutes: 360
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: UsePythonVersion@0
name: 'Set_up_Python'
inputs:
versionSpec: '3.7'
- task: GoTool@0
name: 'Set_up_Golang'
inputs:
version: '1.12'
- script: |
pip install azure-storage-blob==12.0.0b3
# the recent release 1.0.0b4 has a breaking change
pip install azure-core==1.0.0b3
# acquire the mutex before running live tests to avoid conflicts
python ./tool_distributed_mutex.py lock "$(MUTEX_URL)"
# set the variable to indicate that the mutex was actually acquired
echo '##vso[task.setvariable variable=isMutexSet]true'
name: 'Acquire_the_distributed_mutex'
- script: |
# run unit test and build executable
# the set -e line is needed so that the unit tests failure would cause the job to fail properly
# -timeout 25m as our tests typically run between 10-15m and I'd rather have some headroom.
# "-check.v" (must be after package list) outputs timings
set -e
go test -timeout 25m -race -short -cover ./cmd ./common ./ste ./azbfs "-check.v"
GOARCH=amd64 GOOS=linux go build -o azcopy_linux_amd64
name: 'Run_unit_tests'
env:
ACCOUNT_NAME: $(ACCOUNT_NAME)
ACCOUNT_KEY: $(ACCOUNT_KEY)
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
- script: |
go build -o test-validator ./testSuite/
mkdir test-temp
export AZCOPY_EXECUTABLE_PATH=$(pwd)/azcopy_linux_amd64
export TEST_SUITE_EXECUTABLE_LOCATION=$(pwd)/test-validator
export TEST_DIRECTORY_PATH=$(pwd)/test-temp
python ./testSuite/scripts/run.py
name: 'Run_smoke_tests'
env:
ACCOUNT_NAME: $(ACCOUNT_NAME)
ACCOUNT_KEY: $(ACCOUNT_KEY)
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
AZCOPY_OAUTH_TOKEN_INFO: $(AZCOPY_OAUTH_TOKEN_INFO)
CONTAINER_OAUTH_URL: $(CONTAINER_OAUTH_URL)
CONTAINER_OAUTH_VALIDATE_SAS_URL: $(CONTAINER_OAUTH_VALIDATE_SAS_URL)
CONTAINER_SAS_URL: $(CONTAINER_SAS_URL)
FILESYSTEM_SAS_URL: $(FILESYSTEM_SAS_URL)
FILESYSTEM_URL: $(FILESYSTEM_URL)
OAUTH_AAD_ENDPOINT: $(OAUTH_AAD_ENDPOINT)
OAUTH_TENANT_ID: $(OAUTH_TENANT_ID)
PREMIUM_CONTAINER_SAS_URL: $(PREMIUM_CONTAINER_SAS_URL)
S2S_DST_BLOB_ACCOUNT_SAS_URL: $(S2S_DST_BLOB_ACCOUNT_SAS_URL)
S2S_SRC_BLOB_ACCOUNT_SAS_URL: $(S2S_SRC_BLOB_ACCOUNT_SAS_URL)
S2S_SRC_FILE_ACCOUNT_SAS_URL: $(S2S_SRC_FILE_ACCOUNT_SAS_URL)
S2S_SRC_S3_SERVICE_URL: $(S2S_SRC_S3_SERVICE_URL)
SHARE_SAS_URL: $(SHARE_SAS_URL)
- script: python ./tool_distributed_mutex.py unlock "$(MUTEX_URL)"
name: 'Release_the_distributed_mutex'
# this runs even if the job was canceled (only if the mutex was acquired by this job)
condition: and(always(), eq(variables['isMutexSet'], 'true'))