-
Notifications
You must be signed in to change notification settings - Fork 434
/
Copy pathaz-distro-release.yml
126 lines (114 loc) · 5.44 KB
/
az-distro-release.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
parameters:
arch:
demands: []
jobs:
- job: Build_${{ parameters.arch }}
displayName: Build
variables:
${{ if eq(variables['Build.Reason'], 'ResourceTrigger') }}:
POSTFIX: ucx-${{ replace(variables['Build.SourceBranch'], 'refs/heads/', '') }}
${{ if eq(variables['Build.Reason'], 'IndividualCI') }}:
POSTFIX: ucx-${{ replace(variables['Build.SourceBranch'], 'refs/tags/v', '') }}
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
POSTFIX: ucx-pr$(System.PullRequest.PullRequestNumber)
strategy:
matrix:
# common for both x86 and ARM
centos8_cuda11_${{ parameters.arch }}:
build_container: centos8_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-centos8-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
ubuntu18_cuda11_${{ parameters.arch }}:
build_container: ubuntu18_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu18.04-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
ubuntu20_cuda11_${{ parameters.arch }}:
build_container: ubuntu20_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu20.04-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
ubuntu22_cuda11_${{ parameters.arch }}:
build_container: ubuntu22_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu22.04-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
ubuntu20_cuda12_${{ parameters.arch }}:
build_container: ubuntu20_cuda12_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu20.04-mofed5-cuda12-${{ parameters.arch }}.tar.bz2
ubuntu22_cuda12_${{ parameters.arch }}:
build_container: ubuntu22_cuda12_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu22.04-mofed5-cuda12-${{ parameters.arch }}.tar.bz2
# x86 only
${{ if eq(parameters.arch, 'x86_64') }}:
centos7_cuda11_${{ parameters.arch }}:
build_container: centos7_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-centos7-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
centos7_cuda12_${{ parameters.arch }}:
build_container: centos7_cuda12_${{ parameters.arch }}
artifact_name: $(POSTFIX)-centos7-mofed5-cuda12-${{ parameters.arch }}.tar.bz2
ubuntu16_cuda11_${{ parameters.arch }}:
build_container: ubuntu16_cuda11_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu16.04-mofed5-cuda11-${{ parameters.arch }}.tar.bz2
ubuntu18_cuda12_${{ parameters.arch }}:
build_container: ubuntu18_cuda12_${{ parameters.arch }}
artifact_name: $(POSTFIX)-ubuntu18.04-mofed5-cuda12-${{ parameters.arch }}.tar.bz2
container: $[ variables['build_container'] ]
pool:
name: MLNX
demands: ${{ parameters.demands }}
steps:
- checkout: self
clean: true
fetchDepth: 100
path: "we/need/to/go/deeper"
# ^ Avoid rpmbuild error: Dest dir longer than base dir is not supported
- bash: |
set -eEx
./autogen.sh
mkdir -p pkg-build
cd pkg-build
../contrib/configure-release --with-cuda --with-java=no
../contrib/buildrpm.sh -s -t -b --noclean
cd rpm-dist/$(uname -m)
tar -cjf "../../../${AZ_ARTIFACT_NAME}" *.rpm
cd ../../..
tar -tjf "${AZ_ARTIFACT_NAME}"
displayName: Build RPM package
condition: and(succeeded(), contains(variables['artifact_name'], 'centos'))
env:
AZ_ARTIFACT_NAME: $(artifact_name)
- bash: |
set -eEx
# Build
./autogen.sh
./contrib/configure-release --with-cuda --with-java=no
make dist
tarball=$(echo ucx*.tar.gz)
tar -xzvf ${tarball} # extract the sources in a subdirectory
cd $(tar tf ${tarball} | head -1) # go to extracted tarball directory
echo 10 > debian/compat # https://www.debian.org/doc/manuals/maint-guide/dother.en.htmdpl#compat
dpkg-buildpackage -us -uc -Pcuda,xpmem
cd .. # Move back to the working directory
# Rename DEB files
VER="${POSTFIX#ucx-}" # Remove 'ucx-' prefix from the POSTFIX string
find . -name "ucx*.deb" -exec bash -c 'mv "$1" "${1%%_*}-'"${VER}"'.deb"' _ {} \;
find . -name '*.deb' # Show new names
# Remove superfluous dependency
dpkg-deb -R "ucx-cuda-${VER}.deb" tmp # Extract
sed -i 's/libnvidia-compute-[0-9]* | libnvidia-ml1, //g' tmp/DEBIAN/control
dpkg-deb -b tmp "ucx-cuda-${VER}.deb" # Rebuild
dpkg-deb -I "ucx-cuda-${VER}.deb"
dpkg-deb -I "ucx-${VER}.deb"
# Package
tar -cjf "${AZ_ARTIFACT_NAME}" *.deb # Package all DEBs
tar -tjf "${AZ_ARTIFACT_NAME}"
displayName: Build DEB package
condition: and(succeeded(), contains(variables['artifact_name'], 'ubuntu'))
env:
AZ_ARTIFACT_NAME: $(artifact_name)
- task: GithubRelease@0
condition: eq(variables['Build.Reason'], 'IndividualCI')
displayName: Upload artifacts
inputs:
githubConnection: release
repositoryName: openucx/ucx
action: edit
tag: $(Build.SourceBranchName)
isDraft: true
addChangeLog: false
assetUploadMode: replace
assets: "./$(artifact_name)"