-
Notifications
You must be signed in to change notification settings - Fork 10
135 lines (116 loc) · 4.68 KB
/
ci-linux-crossbuild.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
name: ci - linux binary cross build
on:
workflow_call:
outputs:
release_tags:
value: ${{ jobs.build.outputs.release_tags }}
inputs:
source_repo:
type: string
required: true
source_branch:
type: string
required: true
secrets:
VT_API_KEY:
required: false
env:
GH_TOKEN: "${{ github.TOKEN }}"
jobs:
build:
runs-on: ubuntu-24.04-arm
outputs:
release_tags: ${{ steps.release_tags.outputs.release_tag }}
strategy:
fail-fast: false
matrix:
name: [iperf3]
os_id: [alpine]
os_version_id: [edge]
arch: [x86, x86_64, armhf, armv7, aarch64, ppc64le, riscv64, s390x]
include:
- arch: x86
qbt-musl-cross-make: "i686-linux-musl"
release_name: i386
- arch: x86_64
qbt-musl-cross-make: "x86_64-linux-musl"
release_name: amd64
- arch: armhf
qbt-musl-cross-make: "armv6-linux-musleabihf"
release_name: arm32v6
- arch: armv7
qbt-musl-cross-make: "armv6-linux-musleabihf"
release_name: arm32v7
- arch: armv7
qbt-musl-cross-make: "armv7l-linux-musleabihf"
- arch: aarch64
qbt-musl-cross-make: "aarch64-linux-musl"
release_name: arm64v8
- arch: ppc64le
qbt-musl-cross-make: "powerpc64le-linux-musl"
release_name: ppc64le
- arch: riscv64
qbt-musl-cross-make: "riscv64-linux-musl"
release_name: riscv64
- arch: s390x
qbt-musl-cross-make: "s390x-linux-musl"
release_name: s390x
name: ${{ matrix.name }} ${{ matrix.os_id }}:${{ matrix.os_version_id }} ${{ matrix.arch }}
env:
CDN: http://dl-cdn.alpinelinux.org/alpine/edge/main/
CXXFLAGS: "--static -static"
CPPFLAGS: "--static -static"
LDFLAGS: "--static -static"
source_repo: ${{ inputs.source_repo }}
source_branch: ${{ inputs.source_branch }}
container_name: mcm
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Host - set up qemu-user-static binfmt-support
run: sudo apt install libpipeline1 qemu-user-static binfmt-support
- name: Create docker ${{ env.container_name }} ${{ matrix.platform }} container
run: >
docker run --name ${container_name} -it -d -w /home/gh -v ${{ github.workspace }}:/home/gh
-e CXXFLAGS="${{ env.CXXFLAGS }}"
-e CPPFLAGS="${{ env.CPPFLAGS }}"
-e LDFLAGS="${{ env.LDFLAGS }}"
ghcr.io/userdocs/qbt-musl-cross-make:${{ matrix.qbt-musl-cross-make }}
- name: Run apk update
run: docker exec ${container_name} apk update
- name: Run apk upgrade
run: docker exec ${container_name} apk upgrade
- name: run ci-linux-crossbuild.sh
run: docker exec -u gh:gh ${container_name} /bin/bash /home/gh/ci-linux-crossbuild.sh ${source_repo} ${source_branch} ${{ matrix.qbt-musl-cross-make }} ${{ matrix.arch }}
- name: Rename ${{ matrix.name }} to ${{ matrix.name }}-${{ matrix.release_name }}
run: docker exec -u gh:gh ${container_name} mv -f /home/gh/local/bin/${{ matrix.name }} /home/gh/${{ matrix.name }}-${{ matrix.release_name }}
- name: Create path to binary env
run: printf '%s\n' "binary_path=${{ github.workspace }}/${{ matrix.name }}-${{ matrix.release_name }}" >> $GITHUB_ENV
- name: VirusTotal Scan
id: virustotal
uses: crazy-max/ghaction-virustotal@v4
with:
vt_api_key: ${{ secrets.VT_API_KEY }}
files: ${{ env.binary_path }}
- name: sha256sum
run: |
printf '%s' https://www.virustotal.com/gui/file/$(sha256sum ${{ env.binary_path }} | awk '{print $1}') > ${{ matrix.name }}-${{ matrix.release_name }}.url
cat ${{ matrix.name }}-${{ matrix.release_name }}.url
- name: Create tag env
run: printf '%s\n' "release_tag=$(sed -rn 's|(.*)\[(.*)],\[https://github.com/esnet/iperf],(.*)|\2|p' ${{ matrix.name }}/configure.ac)" >> $GITHUB_ENV
- name: Set tag env to output
id: release_tags
run: printf '%s\n' "release_tag=${{ env.release_tag }}" >> "$GITHUB_OUTPUT"
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-path: ${{ env.binary_path }}
- name: "Create artifact"
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}-${{ matrix.release_name }}
path: |
${{ env.binary_path }}
${{ matrix.name }}-${{ matrix.release_name }}.url