forked from lf-edge/eve
-
Notifications
You must be signed in to change notification settings - Fork 0
151 lines (144 loc) · 5.11 KB
/
buildondemand.yml
File metadata and controls
151 lines (144 loc) · 5.11 KB
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
---
name: build and publish packages on demand
on: # yamllint disable-line rule:truthy
workflow_dispatch:
inputs:
force:
description: 'Force build even if no changes'
type: boolean
required: false
default: false
env:
FORCE_BUILD: FORCE_BUILD=${{ inputs.force && '--force' || '' }}
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
packages:
# Only run for the default branch
if: github.ref_name == github.event.repository.default_branch
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: buildjet-4vcpu-ubuntu-2204-arm
arch: arm64
- os: buildjet-4vcpu-ubuntu-2204
arch: amd64
- os: buildjet-4vcpu-ubuntu-2204
arch: riscv64
steps:
- name: Starting Report
run: |
echo Git Ref: ${{ github.ref }}
echo GitHub Event: ${{ github.event_name }}
echo Disk usage
df -h
echo Memory
free -m
- name: Clear repository
run: |
sudo rm -fr "$GITHUB_WORKSPACE" && mkdir "$GITHUB_WORKSPACE"
rm -fr ~/.linuxkit
#docker system prune --all --force --volumes
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: ensure zstd for cache # this should be removed once the arm64 VM includes zstd
if: ${{ matrix.os == 'buildjet-4vcpu-ubuntu-2204-arm' || matrix.os == 'arm64-secure' }}
run: |
sudo apt install -y zstd
- name: ensure packages for cross-arch build
if: ${{ matrix.arch == 'riscv64' }}
run: |
APT_INSTALL="sudo apt install -y binfmt-support qemu-user-static"
# the following weird statement is here to speed up the happy path
# if the default server is responding -- we can skip apt update
$APT_INSTALL || { sudo apt update && $APT_INSTALL ; }
- name: update linuxkit cache if available
uses: actions/cache@v4
with:
path: ~/.linuxkit/cache
key: linuxkit-${{ matrix.arch }}-${{ github.sha }}
- name: Build packages
uses: ./.github/actions/run-make
with:
command: "V=1 PRUNE=1 ZARCH=${{ matrix.arch }} LINUXKIT_PKG_TARGET=push $FORCE_BUILD pkgs"
dockerhub-token: ${{ secrets.RELEASE_DOCKERHUB_TOKEN }}
dockerhub-account: ${{ secrets.RELEASE_DOCKERHUB_ACCOUNT }}
- name: Post package report
run: |
echo Disk usage
df -h
echo Memory
free -m
docker system df
docker system df -v
eve:
needs: packages # all packages for all platforms must be built first
# Only run for the default branch
if: github.ref_name == github.event.repository.default_branch
runs-on: buildjet-4vcpu-ubuntu-2204
strategy:
fail-fast: false
matrix:
arch: [arm64, amd64]
hv: [xen, kvm]
platform: ["generic"]
include:
- arch: riscv64
hv: mini
platform: "generic"
- arch: amd64
hv: kvm
platform: "rt"
- arch: arm64
hv: kvm
platform: "nvidia-jp5"
- arch: arm64
hv: kvm
platform: "nvidia-jp6"
- arch: arm64
hv: kvm
platform: "imx8mp_pollux"
- arch: arm64
hv: kvm
platform: "imx8mp_epc_r3720"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: update linuxkit cache for our arch
id: cache_for_packages
if: ${{ matrix.arch != 'amd64' }} # because our runner arch is amd64; if that changes, this will have to change
uses: actions/cache/restore@v4
with:
path: ~/.linuxkit/cache
key: linuxkit-${{ matrix.arch }}-${{ github.sha }}
fail-on-cache-miss: true
- uses: ./.github/actions/run-make
with:
command: "V=1 HV=${{ matrix.hv }} PLATFORM=${{ matrix.platform }} ZARCH=${{ matrix.arch }} LINUXKIT_PKG_TARGET=push $FORCE_BUILD eve"
dockerhub-token: ${{ secrets.RELEASE_DOCKERHUB_TOKEN }}
dockerhub-account: ${{ secrets.RELEASE_DOCKERHUB_ACCOUNT }}
- uses: ./.github/actions/run-make
if: matrix.arch != 'riscv64'
with:
command: "V=1 HV=${{ matrix.hv }} ZARCH=${{ matrix.arch }} LINUXKIT_PKG_TARGET=push $FORCE_BUILD sbom collected_sources compare_sbom_collected_sources publish_sources"
dockerhub-token: ${{ secrets.RELEASE_DOCKERHUB_TOKEN }}
dockerhub-account: ${{ secrets.RELEASE_DOCKERHUB_ACCOUNT }}
manifest:
# Only run for the default branch
if: github.ref_name == github.event.repository.default_branch
runs-on: ubuntu-latest
needs: packages
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ./.github/actions/run-make
with:
command: "V=1 LINUXKIT_PKG_TARGET=manifest pkgs"
dockerhub-token: ${{ secrets.RELEASE_DOCKERHUB_TOKEN }}
dockerhub-account: ${{ secrets.RELEASE_DOCKERHUB_ACCOUNT }}