-
Notifications
You must be signed in to change notification settings - Fork 16
94 lines (83 loc) · 3.51 KB
/
ci-release.yml
File metadata and controls
94 lines (83 loc) · 3.51 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
name: ci - release
on:
workflow_call:
inputs:
release_tags:
type: string
test_linux_emulation:
type: string
test_linux_crossbuild:
type: string
test_windows:
type: string
test_osx:
type: string
env:
GH_TOKEN: "${{ github.TOKEN }}"
release_tags: ${{ inputs.release_tags }}
test_linux_emulation: ${{ inputs.test_linux_emulation }}
test_linux_crossbuild: ${{ inputs.test_linux_crossbuild }}
test_windows: ${{ inputs.test_windows }}
test_osx: ${{ inputs.test_osx }}
jobs:
release:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Summary - needs results
run: |
printf '%s\n\n' "## Summary - needs results"
printf '%s\n\n' "release_tags: \`${release_tags}\`" >> $GITHUB_STEP_SUMMARY
printf '\n%s\n' "test_linux_emulation: \`${test_linux_emulation}\`" >> $GITHUB_STEP_SUMMARY
printf '\n%s\n' "test_linux_crossbuild: \`${test_linux_crossbuild}\`" >> $GITHUB_STEP_SUMMARY
printf '\n%s\n' "test_windows: \`${test_windows}\`" >> $GITHUB_STEP_SUMMARY
printf '\n%s\n' "test_osx: \`${test_osx}\`" >> $GITHUB_STEP_SUMMARY
- name: Download artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: "release-artifacts"
pattern: iperf3-*
merge-multiple: true
- name: Virustotal scan results
run: |
pushd release-artifacts || exit 1
for virus_total_urls in iperf3-*\.url; do
dependency_version+=("${virus_total_urls}")
done
readarray -t release_sorted < <(printf '%s\n' "${dependency_version[@]}" | sort)
if command_output="$(gh release view "${release_tags}" --repo "${{ github.repository }}" --json body -q .body 2>&1)"; then
if [[ -n "${command_output}" ]]; then
sed '/<!-- split body -->/ {q}' ${{ github.workspace }}/ci-release-body.md > ci-release-body.md
printf '%s\n' "$command_output" | sed -n '/<!-- split urls -->/,$p' >> ci-release-body.md
else
cp -f ${{ github.workspace }}/ci-release-body.md ci-release-body.md
fi
else
cp -f ${{ github.workspace }}/ci-release-body.md ci-release-body.md
fi
for filenames in "${release_sorted[@]}"; do
virustotal_url="$(head -1 "${filenames}" | tr -d '\n' | tr -d '\r' | tr -d '\r\n')"
sed -i -r 's|(\['${filenames//\.url/}'\])\((.*)\)|\1('${virustotal_url}')|' ci-release-body.md
done
- name: "Publish release ${{ inputs.release_tags }}"
env:
release_tags: ${{ inputs.release_tags }}
run: |
if git ls-remote --exit-code --tags origin "refs/tags/${release_tags}" >/dev/null 2>&1; then
gh release edit "${release_tags}" \
--title "iperf3 ${release_tags}" \
--notes-file release-artifacts/ci-release-body.md \
--latest
gh release upload "${release_tags}" \
--clobber \
release-artifacts/iperf3-*[!\.url]
else
gh release create "${release_tags}" \
--title "iperf3 ${release_tags}" \
--notes-file release-artifacts/ci-release-body.md \
--latest \
release-artifacts/iperf3-*[!\.url]
fi