Skip to content

Commit 11e2640

Browse files
committed
feat(ci): use zig for compilation
Signed-off-by: Roberto Scolaro <[email protected]> Signed-off-by: therealbobo <[email protected]>
1 parent fe10874 commit 11e2640

File tree

6 files changed

+142
-268
lines changed

6 files changed

+142
-268
lines changed
+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: 'install-zig'
2+
description: 'Install zig compiler and make it available in PATH.'
3+
4+
runs:
5+
using: "composite"
6+
steps:
7+
- name: Store zig version as local output
8+
shell: bash
9+
id: store
10+
env:
11+
ZIG_VERSION: '0.14.0-dev.2424+7cd2c1ce8'
12+
run: |
13+
echo "zig_version=${ZIG_VERSION}" >> "$GITHUB_OUTPUT"
14+
15+
# TODO: this is only needed because we are using a development version of zig,
16+
# since we need https://github.com/ziglang/zig/pull/21253 to be included.
17+
# Development versions of zig are not kept alive forever, but get overridden.
18+
# We cache it to keep it alive.
19+
- name: Download zig (cached)
20+
id: cache-zig
21+
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
22+
with:
23+
path: zig
24+
key: zig-${{ runner.os }}-${{ runner.arch }}-${{ steps.store.outputs.zig_version }}
25+
26+
- name: Download zig
27+
if: steps.cache-zig.outputs.cache-hit != 'true'
28+
shell: bash
29+
run: |
30+
curl -L -o zig.tar.xz https://ziglang.org/builds/zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}.tar.xz
31+
tar -xvf zig.tar.xz
32+
33+
cat > zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}/zig-cc <<EOF
34+
#!/bin/bash
35+
exec zig cc -target $(uname -m)-linux-gnu.2.17 -mcpu=baseline "\$@"
36+
EOF
37+
chmod +x zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}/zig-cc
38+
39+
cat > zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}/zig-c++ <<EOF
40+
#!/bin/bash
41+
exec zig c++ -target $(uname -m)-linux-gnu.2.17 -mcpu=baseline "\$@"
42+
EOF
43+
chmod +x zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}/zig-c++
44+
45+
mv zig-linux-$(uname -m)-${{ steps.store.outputs.zig_version }}/ zig
46+
47+
- name: Setup zig
48+
shell: bash
49+
id: zig
50+
run: |
51+
echo "$(pwd)/zig" >> $GITHUB_PATH
52+
echo "CC=zig-cc" >> $GITHUB_ENV
53+
echo "CXX=zig-c++" >> $GITHUB_ENV
54+
echo "AR=zig ar" >> $GITHUB_ENV
55+
echo "RANLIB=zig ranlib" >> $GITHUB_ENV

.github/workflows/ci.yaml

+36-163
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ jobs:
1515
SKEL_BUILDER_IMAGE_BASE: ghcr.io/draios/sysdig-skel-builder-pr
1616
BUILDER_DEV: ghcr.io/draios/sysdig-builder:dev
1717
SKEL_BUILDER_DEV: ghcr.io/draios/sysdig-skel-builder:dev
18-
1918
runs-on: ubuntu-latest
2019
steps:
2120
- name: Checkout Sysdig
@@ -38,7 +37,7 @@ jobs:
3837

3938
- name: Set up Docker Buildx
4039
if: steps.builder-files.outputs.any_changed == 'true'
41-
uses: docker/setup-buildx-action@v2
40+
uses: docker/setup-buildx-action@v3
4241

4342
- name: Login to Github Packages
4443
if: steps.builder-files.outputs.any_changed == 'true'
@@ -47,30 +46,13 @@ jobs:
4746
registry: ${{ env.REGISTRY }}
4847
username: ${{ github.actor }}
4948
password: ${{ secrets.GITHUB_TOKEN }}
50-
51-
- name: Get new skeleton builder image tag
52-
id: get-new-skeleton-builder
53-
if: steps.builder-files.outputs.any_changed == 'true'
54-
run: |
55-
echo "skeleton_builder_image=${{ (github.event.pull_request.number != '') && format('{0}:{1}', env.SKEL_BUILDER_IMAGE_BASE, github.event.pull_request.number) || env.SKEL_BUILDER_DEV }}" >> $GITHUB_OUTPUT
56-
49+
5750
- name: Get new builder image tag
5851
id: get-new-builder
5952
if: steps.builder-files.outputs.any_changed == 'true'
6053
run: |
6154
echo "builder_image=${{ (github.event.pull_request.number != '') && format('{0}:{1}', env.BUILDER_IMAGE_BASE, github.event.pull_request.number) || env.BUILDER_DEV }}" >> $GITHUB_OUTPUT
6255
63-
- name: Build new skeleton builder
64-
id: skeleton-builder
65-
if: steps.builder-files.outputs.any_changed == 'true'
66-
uses: docker/build-push-action@v6
67-
with:
68-
context: docker/builder
69-
file: docker/builder/modern_bpf_probe.Dockerfile
70-
platforms: linux/amd64,linux/arm64
71-
tags: ${{ steps.get-new-skeleton-builder.outputs.skeleton_builder_image }}
72-
push: true
73-
7456
- name: Build new builder
7557
id: build-builder
7658
if: steps.builder-files.outputs.any_changed == 'true'
@@ -80,166 +62,59 @@ jobs:
8062
platforms: linux/amd64,linux/arm64
8163
tags: ${{ steps.get-new-builder.outputs.builder_image }}
8264
push: true
83-
8465
outputs:
8566
builder_image: ${{ (steps.builder-files.outputs.any_changed == 'true') && steps.get-new-builder.outputs.builder_image || env.BUILDER_DEV }}
86-
skeleton_builder_image: ${{ (steps.builder-files.outputs.any_changed == 'true') && steps.get-new-skeleton-builder.outputs.skeleton_builder_image || env.SKEL_BUILDER_DEV }}
87-
88-
build-skeleton-sysdig-linux-amd64:
89-
needs: builder
90-
runs-on: ubuntu-latest
91-
container:
92-
image: ${{ needs.builder.outputs.skeleton_builder_image }}
93-
steps:
94-
- name: Checkout Sysdig
95-
uses: actions/checkout@v4
96-
with:
97-
path: sysdig
98-
- name: Link paths
99-
run: |
100-
mkdir -p /source
101-
ln -s "$GITHUB_WORKSPACE/sysdig" /source/sysdig
102-
- name: Prepare build skeleton
103-
run: build cmake-skeleton
104-
- name: Build skeleton
105-
run: build make-skeleton
106-
- name: Cache build skeleton
107-
uses: actions/cache/save@v3
108-
if: always()
109-
id: cache
110-
with:
111-
path: /build-skeleton
112-
key: build-skeleton-${{ github.run_id }}
11367

114-
build-sysdig-linux-amd64:
115-
needs: [builder,build-skeleton-sysdig-linux-amd64]
68+
build-sysdig-linux:
69+
needs: [builder]
11670
runs-on: ubuntu-latest
11771
container:
11872
image: ${{ needs.builder.outputs.builder_image }}
119-
volumes:
120-
- '/node20217:/node20217:rw,rshared'
121-
- '/node20217:/__e/node20:ro,rshared'
122-
env:
123-
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
73+
strategy:
74+
matrix:
75+
platform:
76+
- linux/amd64
77+
- linux/arm64
78+
12479
steps:
125-
- name: install nodejs20glibc2.17
126-
run: |
127-
yum install curl -yyq
128-
curl -LO https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.xz
129-
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
130-
ldd /__e/node20/bin/node
80+
- name: Set up QEMU
81+
uses: docker/setup-qemu-action@v3
13182

13283
- name: Checkout Sysdig
13384
uses: actions/checkout@v4
13485
with:
135-
path: sysdig
136-
- name: Link paths
86+
fetch-depth: 0
87+
88+
- name: Build Sysdig
13789
run: |
138-
mkdir -p /source
139-
ln -s "$GITHUB_WORKSPACE/sysdig" /source/sysdig
140-
- name: Restore build skeleton
141-
id: cache
142-
uses: actions/cache/restore@v3
143-
with:
144-
path: /build-skeleton
145-
key: build-skeleton-${{ github.run_id }}
146-
restore-keys: build-skeleton-
147-
- name: Build
148-
run: build cmake
149-
- name: Build packages
150-
run: build package
151-
- name: Upload rpm package
152-
uses: actions/upload-artifact@v3
153-
with:
154-
name: sysdig-dev-linux-x86_64.rpm
155-
path: |
156-
/build/release/sysdig-*.rpm
157-
- name: Upload deb package
158-
uses: actions/upload-artifact@v3
159-
with:
160-
name: sysdig-dev-linux-x86_64.deb
161-
path: |
162-
/build/release/sysdig-*.deb
163-
- name: Upload tar.gz package
164-
uses: actions/upload-artifact@v3
165-
with:
166-
name: sysdig-dev-linux-x86_64.tar.gz
167-
path: |
168-
/build/release/sysdig-*.tar.gz
90+
cmake -DUSE_BUNDLED_DEPS=ON -DBUILD_BPF=OFF -DBUILD_DRIVER=OFF -DCMAKE_BUILD_TYPE=Release -S . -B build -G Ninja
91+
cmake --build build --target package --config Release
16992
170-
build-sysdig-linux-arm64:
171-
needs: builder
172-
env:
173-
REGISTRY: ghcr.io
174-
BUILDER_IMAGE_BASE: ghcr.io/draios/sysdig-builder-pr
175-
SKEL_BUILDER_IMAGE_BASE: ghcr.io/draios/sysdig-skel-builder-pr
176-
BUILDER_DEV: ghcr.io/draios/sysdig-builder:dev
177-
SKEL_BUILDER_DEV: ghcr.io/draios/sysdig-skel-builder:dev
178-
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
179-
runs-on: ubuntu-latest
180-
steps:
181-
- name: Checkout Sysdig
182-
uses: actions/checkout@v4
183-
with:
184-
path: sysdig
185-
- name: Create build dir
93+
- name: Set artifact name
94+
id: artifact_name
18695
run: |
187-
mkdir -p ${{ github.workspace }}/sysdig-build-aarch64
96+
echo "name=sysdig-dev-$(echo ${{ matrix.platform }} | sed -e 's|/|-|g')" >> $GITHUB_OUTPUT
18897
189-
- name: Login to Github Packages
190-
uses: docker/login-action@v3
98+
- name: Upload rpm package
99+
uses: actions/upload-artifact@v4
191100
with:
192-
registry: ${{ env.REGISTRY }}
193-
username: ${{ github.actor }}
194-
password: ${{ secrets.GITHUB_TOKEN }}
101+
name: ${{ steps.artifact_name.outputs.name }}.rpm
102+
path: |
103+
build/sysdig-*.rpm
195104
196-
- name: Set up QEMU
197-
uses: docker/setup-qemu-action@v3
198-
with:
199-
platforms: 'amd64,arm64'
200-
- name: Run the build skeleton process with Docker
201-
uses: addnab/docker-run-action@v3
202-
with:
203-
username: ${{ github.actor }}
204-
password: ${{ secrets.GITHUB_TOKEN }}
205-
registry: ${{ env.REGISTRY }}
206-
image: ${{ needs.builder.outputs.skeleton_builder_image }}
207-
options: --platform=linux/arm64 -v ${{ github.workspace }}/sysdig:/source/sysdig -v ${{ github.workspace }}/sysdig-build-aarch64:/build/dev-packages -v ${{ github.workspace }}/skeleton-build:/build-skeleton
208-
run: |
209-
mkdir -p /build/dev-packages && \
210-
build cmake-skeleton && \
211-
build make-skeleton
212-
- name: Run the build process with Docker
213-
uses: addnab/docker-run-action@v3
214-
with:
215-
username: ${{ github.actor }}
216-
password: ${{ secrets.GITHUB_TOKEN }}
217-
registry: ${{ env.REGISTRY }}
218-
image: ${{ needs.builder.outputs.builder_image }}
219-
options: --platform=linux/arm64 -v ${{ github.workspace }}/sysdig:/source/sysdig -v ${{ github.workspace }}/sysdig-build-aarch64:/build/dev-packages -v ${{ github.workspace }}/skeleton-build:/build-skeleton
220-
run: |
221-
mkdir -p /build/dev-packages && \
222-
build cmake && \
223-
build package && \
224-
cp /build/release/sysdig-* /build/dev-packages
225105
- name: Upload deb package
226-
uses: actions/upload-artifact@v3
227-
with:
228-
name: sysdig-dev-linux-aarch64.deb
229-
path: |
230-
${{ github.workspace }}/sysdig-build-aarch64/sysdig-*.deb
231-
- name: Upload rpm package
232-
uses: actions/upload-artifact@v3
106+
uses: actions/upload-artifact@v4
233107
with:
234-
name: sysdig-dev-linux-aarch64.rpm
108+
name: ${{ steps.artifact_name.outputs.name }}.deb
235109
path: |
236-
${{ github.workspace }}/sysdig-build-aarch64/sysdig-*.rpm
110+
build/sysdig-*.deb
111+
237112
- name: Upload tar.gz package
238-
uses: actions/upload-artifact@v3
113+
uses: actions/upload-artifact@v4
239114
with:
240-
name: sysdig-dev-linux-aarch64.tar.gz
115+
name: ${{ steps.artifact_name.outputs.name }}.tar.gz
241116
path: |
242-
${{ github.workspace }}/sysdig-build-aarch64/sysdig-*.tar.gz
117+
build/sysdig-*.tar.gz
243118
244119
build-sysdig-others-amd64:
245120
name: build-sysdig-other-amd64
@@ -259,9 +134,8 @@ jobs:
259134
uses: actions/checkout@v4
260135
- name: Build
261136
run: |
262-
mkdir -p build
263-
cd build && cmake -Wno-dev ..
264-
cmake --build . --target package --config Release
137+
cmake -Wno-dev -S . -B build
138+
cmake --build build --target package --config Release
265139
- name: Upload artifacts
266140
uses: actions/upload-artifact@v3
267141
with:
@@ -284,9 +158,8 @@ jobs:
284158
uses: actions/checkout@v4
285159
- name: Build
286160
run: |
287-
mkdir -p build
288-
cd build && cmake -Wno-dev ..
289-
cmake --build . --target package --config Release
161+
cmake -Wno-dev -S . -B build
162+
cmake --build build --target package --config Release
290163
- name: Upload artifacts
291164
uses: actions/upload-artifact@v3
292165
with:

0 commit comments

Comments
 (0)