forked from Xilinx/XRT
-
Notifications
You must be signed in to change notification settings - Fork 5
271 lines (229 loc) · 15.7 KB
/
tarrr_file.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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
name: Test 1 build
env:
RELEASE: '2021.1'
PIPELINE: 'xrt'
ENV: 'test'
on:
workflow_dispatch:
jobs:
# build:
# strategy:
# matrix:
# include:
# - os: centos8
# packageType: rpm
# os_ver: centos_8.1
# - os: ubuntu2004
# packageType: deb
# os_ver: ubuntu_20.04
# - os: ubuntu2204
# packageType: deb
# os_ver: ubuntu_22.04
# - os: amazonlinux-20202011111
# packageType: rpm
# os_ver: amazonlinux20202011111
# - os: ubuntu1804
# packageType: deb
# os_ver: ubuntu_18.04
# runs-on: [self-hosted, Ubuntu-22.04]
# steps:
# - name: Set env variables
# run: |
# echo "Setting environment variables..."
# echo "XRT_VERSION_PATCH=$(($GITHUB_RUN_NUMBER+717))" >> $GITHUB_ENV
# echo "PATH=/usr/bin:$PATH" >> $GITHUB_ENV
# - name: Checkout PR
# uses: actions/checkout@v3
# with:
# ref: '2021.1'
# fetch-depth: 0
# path: ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}
# submodules: recursive
# - name: Checkout private repository
# uses: actions/checkout@v3
# with:
# repository: actions-int/composite-workflows
# github-server-url: ${{ secrets.SERVER_URL }}
# token: ${{ secrets.ACCESS_TOKEN }}
# path: composite-workflows
# ref: image
# - name: XRT build
# uses: ./composite-workflows/build
# with:
# pipeline: ${{ env.PIPELINE }}
# osVersion: ${{ matrix.os }}
# packageType: ${{ matrix.packageType }}
# os_ver: ${{ matrix.os_ver }}
# workspace: ${{ github.workspace }}
# buildNumber: ${{ env.XRT_VERSION_PATCH }}
# accessToken: ${{ secrets.ACCESS_TOKEN }}
# github-server-url: ${{ secrets.SERVER_URL }}
# appConfig: ${{ secrets.APP_CONFIG }}
# appConfig1: ${{ secrets.APP_CONFIG1 }}
# appConfig2: ${{ secrets.APP_CONFIG2 }}
# appConfig3: ${{ secrets.APP_CONFIG3 }}
package-download:
# needs: [build]
runs-on: [self-hosted, Ubuntu-22.04]
steps:
- name: Set env variables
run: |
echo "Setting environment variables..."
echo "XRT_VERSION_PATCH=$(($GITHUB_RUN_NUMBER+717))" >> $GITHUB_ENV
echo "PATH=/usr/bin:$PATH" >> $GITHUB_ENV
- name: Checkout PR
uses: actions/checkout@v3
with:
fetch-depth: 0
path: ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}
submodules: recursive
- name: List contents of Repo
run: |
echo "Contents of Repo directory:"
ls -al ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}
shell: bash
# - name: Checkout private repository
# uses: actions/checkout@v3
# with:
# repository: actions-int/composite-workflows
# token: ${{ secrets.ACCESS_TOKEN }}
# github-server-url: ${{ secrets.SERVER_URL }}
# path: composite-workflows
# ref: '2021.1'
# - name: Use composite action package download
# uses: ./composite-workflows/package-download
# with:
# runNumber: ${{ env.XRT_VERSION_PATCH }}
# pipeline: ${{ env.PIPELINE }}
# env: ${{ env.ENV }}
# release: ${{ env.RELEASE }}
# sshKey: ${{ secrets.CI_PRIVATE_SSH_KEY }}
# accessToken: ${{ secrets.ACCESS_TOKEN }}
# NPATH: ${{ secrets.NPATH }}
# USER: ${{ secrets.USER }}
# github-server-url: ${{ secrets.SERVER_URL }}
# - name: List contents of artifact directory
# run: |
# cd ${{ env.PATH_DIR }}/artifact
# ls -al
# shell: bash
- name: Find and copy packages
run: |
cd ${{ secrets.NPATH }}/xrt/test_pipeline/builds/2021.1/859/staging/artifact
ls -al
rm -rf xrt_202110.2.11.859_amzn2-x86_64-xrt.rpm
for package_file in *-xrt.rpm *-xrt.deb; do
echo "Found package: $package_file"
cp $package_file ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
done
# Copy only the required XCR and XRM packages
base_path="${{ secrets.APP_CONFIG4 }}"
cp $base_path/XCR/master/202220.1.1.27/packages/xcr_202220.1.1.27_18.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XCR/master/202220.1.1.27/packages/xcr_202220.1.1.27_20.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XCR/master/202220.1.1.27/packages/xcr_202220.1.1.27_22.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XCR/master/202220.1.1.27/packages/xcr_202220.1.1.27_7.9.2009-x86_64.rpm ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XCR/master/202220.1.1.27/packages/xcr_202220.1.1.27_2-x86_64.rpm ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XRM/master/202220.1.5.103/packages/xrm_202220.1.5.103_18.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XRM/master/202220.1.5.103/packages/xrm_202220.1.5.103_20.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XRM/master/202220.1.5.103/packages/xrm_202220.1.5.103_22.04-x86_64.deb ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XRM/master/202220.1.5.103/packages/xrm_202220.1.5.103_8.1.1911-x86_64.rpm ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
cp $base_path/XRM/master/202220.1.5.103/packages/xrm_202220.1.5.103_2-x86_64.rpm ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/
echo "Copied required XCR and XRM packages"
shell: bash
- name: List contents of Dockerfile directory
run: |
echo "Contents of Dockerfile directory:"
ls -al ${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile
shell: bash
- name: Build Docker images
run: |
set -e # Exit on any error
package_files=("$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.rpm "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.deb)
if [ ${#package_files[@]} -eq 0 ]; then
echo "No package files found."
exit 1
fi
for package_file in "${package_files[@]}"; do
echo "Building image for $package_file"
image_tag=$(basename "$package_file" | sed 's/\.[^.]*$//')
if [[ "$package_file" == *"18.04"* ]]; then
base_image="ubuntu:18.04"
install_commands='apt-get update && apt-get install -y wget && dpkg -i /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_18.04-x86_64.deb /tmp/xrm_202220.1.5.103_18.04-x86_64.deb || apt-get install -f -y && rm -f /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_18.04-x86_64.deb /tmp/xrm_202220.1.5.103_18.04-x86_64.deb && dpkg -l | grep xrt'
elif [[ "$package_file" == *"20.04"* ]]; then
base_image="ubuntu:20.04"
install_commands='apt-get update && apt-get install -y wget && dpkg -i /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_20.04-x86_64.deb /tmp/xrm_202220.1.5.103_20.04-x86_64.deb || apt-get install -f -y && rm -f /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_20.04-x86_64.deb /tmp/xrm_202220.1.5.103_20.04-x86_64.deb && dpkg -l | grep xrt'
elif [[ "$package_file" == *"22.04"* ]]; then
base_image="ubuntu:22.04"
install_commands='apt-get update && apt-get install -y wget && dpkg -i /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_22.04-x86_64.deb /tmp/xrm_202220.1.5.103_22.04-x86_64.deb || apt-get install -f -y && rm -f /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_22.04-x86_64.deb /tmp/xrm_202220.1.5.103_22.04-x86_64.deb && dpkg -l | grep xrt'
elif [[ "$package_file" == *"8.1.1911"* ]]; then
base_image="centos:8"
install_commands='sed -i "s|^mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* && sed -i "s|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-* && yum install -y epel-release && yum install -y dnf-plugins-core wget && yum config-manager --set-enabled powertools && yum clean all && yum install -y /tmp/${PACKAGE_FILE} /tmp/xrm_202220.1.5.103_8.1.1911-x86_64.rpm && rm -f /tmp/${PACKAGE_FILE} /tmp/xrm_202220.1.5.103_8.1.1911-x86_64.rpm'
# install_commands='yum upgrade && yum install -y wget && yum install -y dnf-plugins-core wget && yum config-manager --set-enabled powertools && yum config-manager --set-enabled appstream && yum install -y /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_7.9.2009-x86_64.rpm /tmp/xrm_202220.1.5.103_7.8.2003-x86_64.rpm && rm -f /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_7.9.2009-x86_64.rpm /tmp/xrm_202220.1.5.103_7.8.2003-x86_64.rpm'
# install_commands='sed -i "s|^mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* && sed -i "s|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-* && yum install -y epel-release && yum install -y dnf-plugins-core wget && yum config-manager --set-enabled powertools && yum clean all && yum install -y /tmp/${PACKAGE_FILE} && rm -f /tmp/${PACKAGE_FILE}'
elif [[ "$package_file" == *"amzn2"* ]]; then
base_image="amazonlinux:2"
install_commands='yum update -y && yum install -y wget gnupg2 && amazon-linux-extras install epel -y && yum install -y ocl-icd ocl-icd-devel && yum install -y tar && yum install -y /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_2-x86_64.rpm /tmp/xrm_202220.1.5.103_2-x86_64.rpm && rm -f /tmp/${PACKAGE_FILE} /tmp/xcr_202220.1.1.27_2-x86_64.rpm /tmp/xrm_202220.1.5.103_2-x86_64.rpm'
else
echo "No matching base image found for $package_file"
exit 1
fi
echo "Using base image: $base_image"
docker build --build-arg BASE_IMAGE="$base_image" --build-arg PACKAGE_FILE=$(basename "$package_file") --build-arg INSTALL_COMMANDS="$install_commands" -t "xrt_image:$image_tag" -f "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/Dockerfile" "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile"
done
- name: Authenticate with Harbor
run: |
echo "${{ secrets.HARBOR_PASSWORD }}" | docker login registry.amd.com -u '${{ secrets.HARBOR_USERNAME }}' --password-stdin
shell: bash
- name: Push Docker images to AMD Harbor
run: |
for package_file in "${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.rpm "${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.deb; do
image_tag=$(basename "$package_file" | sed 's/\.[^.]*$//')
echo "Pushing image xrt_image:$image_tag"
docker tag "xrt_image:$image_tag" "registry.amd.com/buildops/xrt_image:$image_tag"
docker push "registry.amd.com/buildops/xrt_image:$image_tag"
done
shell: bash
# - name: Build Docker images
# run: |
# set -e # Exit on any error
# package_files=("$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.rpm "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.deb)
# if [ ${#package_files[@]} -eq 0 ]; then
# echo "No package files found."
# exit 1
# fi
# for package_file in "${package_files[@]}"; do
# echo "Building image for $package_file"
# image_tag=$(basename "$package_file" | sed 's/\.[^.]*$//')
# # Use [[ ... ]] for Bash pattern matching
# if [[ "$package_file" == *"18.04"* ]]; then
# base_image="ubuntu:18.04"
# elif [[ "$package_file" == *"20.04"* ]]; then
# base_image="ubuntu:20.04"
# elif [[ "$package_file" == *"22.04"* ]]; then
# base_image="ubuntu:22.04"
# elif [[ "$package_file" == *"8.1.1911"* ]]; then
# base_image="centos:8"
# elif [[ "$package_file" == *"amzn2"* ]]; then
# base_image="amazonlinux:2"
# # elif [[ "$package_file" == *"7.8.2003"* ]]; then
# # base_image="centos:8"
# else
# echo "No matching base image found for $package_file"
# exit 1
# fi
# echo "Using base image: $base_image"
# docker build --build-arg BASE_IMAGE="$base_image" --build-arg PACKAGE_FILE=$(basename "$package_file") -t "xrt_image:$image_tag" -f "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile/Dockerfile" "$GITHUB_WORKSPACE/${{ env.XRT_VERSION_PATCH }}/Dockerfile"
# done
# - name: Authenticate with Harbor
# run: |
# echo "${{ secrets.HARBOR_PASSWORD }}" | docker login registry.amd.com -u '${{ secrets.HARBOR_USERNAME }}' --password-stdin
# shell: bash
# - name: Push Docker images to AMD Harbor
# run: |
# for package_file in "${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.rpm "${{ github.workspace }}/${{ env.XRT_VERSION_PATCH }}/Dockerfile/"*-xrt.deb; do
# image_tag=$(basename "$package_file" | sed 's/\.[^.]*$//')
# echo "Pushing image xrt_image:$image_tag"
# docker tag "xrt_image:$image_tag" "registry.amd.com/buildops/xrt_image:$image_tag"
# docker push "registry.amd.com/buildops/xrt_image:$image_tag"
# done
# shell: bash