forked from cloudflare/wrangler-legacy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
172 lines (164 loc) · 5.28 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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
trigger:
branches:
include:
- refs/heads/master
- refs/tags/*
jobs:
- job: test_wrangler
displayName: "Run wrangler tests, fmt, and clippy"
steps:
- template: ci/azure-install-rust.yml
- template: ci/azure-install-node.yml
- script: cargo test --locked
displayName: "cargo test --locked"
- script: rustup component add rustfmt
displayName: rustup component add rustfmt
- script: cargo fmt --all -- --check
displayName: "cargo fmt --all -- --check"
- script: rustup component add clippy
displayName: rustup component add clippy
- script: cargo clippy
displayName: "cargo clippy --all --all-features -- -D warnings"
- job: test_wrangler_windows
displayName: "Run wrangler tests (Windows)"
pool:
vmImage: vs2017-win2016
steps:
- template: ci/azure-install-rust.yml
- template: ci/azure-install-node.yml
- script: cargo test --locked
displayName: "cargo test --locked"
env:
RUST_LOG: warn,wrangler=info
RUST_BACKTRACE: 1
- job: test_wrangler_nightly
displayName: "Run wrangler tests (nightly)"
steps:
- template: ci/azure-install-rust.yml
parameters:
toolchain: 'nightly'
- template: ci/azure-install-node.yml
- script: cargo test --locked
displayName: "cargo test --locked"
env:
RUST_LOG: warn,wrangler=info
RUST_BACKTRACE: 1
- job: dist_linux
displayName: "Dist Linux binary"
steps:
- template: ci/azure-install-rust.yml
- script: rustup target add x86_64-unknown-linux-musl
- script: |
sudo apt update -y
sudo apt install musl-tools -y
displayName: "Install musl-tools"
- script: |
set -ex
cargo build --target x86_64-unknown-linux-musl --features vendored-openssl --release
- template: ci/azure-create-tarball.yml
parameters:
artifacts: target/x86_64-unknown-linux-musl/release/wrangler
name: dist_linux
- job: dist_darwin
displayName: "Dist Darwin binary"
pool:
vmImage: macOS-10.13
steps:
- template: ci/azure-install-rust.yml
- script: cargo build --release
env:
MACOSX_DEPLOYMENT_TARGET: 10.7
- template: ci/azure-create-tarball.yml
parameters:
name: dist_darwin
- job: dist_windows
displayName: "Dist Windows binary"
pool:
vmImage: vs2017-win2016
steps:
- template: ci/azure-install-rust.yml
- script: cargo build --release
env:
RUSTFLAGS: -Ctarget-feature=+crt-static
- template: ci/azure-create-tarball.yml
parameters:
name: dist_windows
- job: dist_wranglerjs
displayName: "Dist wranglerjs"
steps:
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: wranglerjs
includeRootFolder: false
archiveType: tar
tarCompression: gz
archiveFile: wranglerjs.tar.gz
verbose: true
- template: ci/azure-create-tarball.yml
parameters:
artifacts: wranglerjs.tar.gz
name: dist_wranglerjs
- job: deploy
dependsOn:
- dist_linux
- dist_darwin
- dist_windows
- dist_wranglerjs
displayName: "Deploy release binaries"
steps:
- template: ci/azure-install-rust.yml
- task: DownloadPipelineArtifact@0
displayName: "Download dist - windows"
inputs:
artifactName: dist_windows
targetPath: tmp/windows
- task: DownloadPipelineArtifact@0
displayName: "Download dist - wranglerjs"
inputs:
artifactName: dist_wranglerjs
targetPath: tmp/wranglerjs
- task: DownloadPipelineArtifact@0
displayName: "Download dist - linux"
inputs:
artifactName: dist_linux
targetPath: tmp/linux
- task: DownloadPipelineArtifact@0
displayName: "Download dist - darwin"
inputs:
artifactName: dist_darwin
targetPath: tmp/darwin
- script: |
set -ex
mkdir -p gh-release
find .
tag=`git describe --tags`
mk() {
target=$1
src=$2
name=wrangler-$tag-$target
mkdir -p tmp/$name
cp README.md \
LICENSE-MIT \
LICENSE-APACHE \
tmp/$src/wrangler* \
tmp/$name/
chmod +x tmp/$name/wrangler*
tar czvf gh-release/$name.tar.gz -C tmp $name
}
mk x86_64-unknown-linux-musl linux
mk x86_64-apple-darwin darwin
mk x86_64-pc-windows-msvc windows
mv -v tmp/wranglerjs/* gh-release/wranglerjs-$tag.tar.gz
displayName: "prepare the github releases tarball artifacts"
- task: PublishPipelineArtifact@0
displayName: "publish gh_release artifact"
inputs:
artifactName: gh_release
targetPath: gh-release
- task: GithubRelease@0
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Create GitHub Release'
inputs:
gitHubConnection: ashleygwilliams-token
repositoryName: cloudflare/wrangler
assets: gh-release/*.tar.gz