Skip to content

Commit 4d7433f

Browse files
authored
Merge pull request #5 from iit-DLSLab/deb
deb workflow added
2 parents 2a61d87 + 162abcd commit 4d7433f

2 files changed

Lines changed: 136 additions & 1 deletion

File tree

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
name: Create Release and .deb Files Project
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*.*.*'
7+
- 'v*.*.*-rc*'
8+
9+
env:
10+
GNUTLS_CPUID_OVERRIDE: 0x1
11+
12+
permissions:
13+
contents: write
14+
packages: write
15+
id-token: write
16+
17+
jobs:
18+
build_test:
19+
uses: iit-DLSLab/cicd_tools/.github/workflows/dls2_build_test.yml@main
20+
with:
21+
test-command: "ls"
22+
output_workflow_artifact_name: build
23+
secrets:
24+
GHCR_USERNAME: ${{ secrets.GHCR_USERNAME }}
25+
CICD_PAT: ${{ secrets.CICD_PAT }}
26+
27+
release_deb:
28+
needs: build_test
29+
uses: iit-DLSLab/cicd_tools/.github/workflows/create-release-deb.yml@main
30+
with:
31+
package-name: "dls2"
32+
# deb-script-source: caller
33+
deb-script-source: builtin
34+
builtin-deb-script-path: scripts/create-deb-deploy.sh
35+
container: "ghcr.io/iit-dlslab/dls2-dev:latest"
36+
workflow_artifact_name: ${{ needs.build_test.outputs.build_workflow_artifact_name }}
37+
artifact_download_path: "."
38+
secrets:
39+
GHCR_USERNAME: ${{ secrets.GHCR_USERNAME }}
40+
CICD_PAT: ${{ secrets.CICD_PAT }}
41+
42+
validate_deb:
43+
needs: release_deb
44+
runs-on: ubuntu-24.04
45+
steps:
46+
- name: Download runtime .deb artifact
47+
uses: actions/download-artifact@v4
48+
with:
49+
name: ${{ needs.release_deb.outputs.runtime_deb_workflow_artifact_name }}
50+
path: runtime-deb
51+
52+
- name: Download framework .deb artifact
53+
uses: actions/download-artifact@v4
54+
with:
55+
name: ${{ needs.release_deb.outputs.framework_deb_workflow_artifact_name }}
56+
path: framework-deb
57+
58+
- name: Validate packaged binaries
59+
shell: bash
60+
run: |
61+
set -euo pipefail
62+
63+
runtime_deb="runtime-deb/${{ needs.release_deb.outputs.runtime_deb_artifact_name }}"
64+
framework_deb="framework-deb/${{ needs.release_deb.outputs.framework_deb_artifact_name }}"
65+
66+
echo "Downloaded artifact contents:"
67+
find runtime-deb framework-deb -maxdepth 2 -type f -print | sort
68+
69+
for deb in "$runtime_deb" "$framework_deb"; do
70+
echo "Validating $deb"
71+
if [[ ! -f "$deb" ]]; then
72+
echo "ERROR: expected package file not found: $deb"
73+
exit 1
74+
fi
75+
76+
echo "--- dpkg-deb --info $deb"
77+
dpkg-deb --info "$deb"
78+
79+
echo "--- matching entries in $deb"
80+
dpkg-deb -c "$deb" | awk '
81+
/\.\/*usr\/bin\/dls($|\/)/ || /\.\/*usr\/local/ || /^drwx.*\.\/usr\/bin\/?$/ { print }
82+
'
83+
84+
if ! dpkg-deb -c "$deb" | awk '
85+
index($0, "./usr/bin/dls") { found=1 }
86+
END { exit(found ? 0 : 1) }
87+
'; then
88+
echo "ERROR: $deb does not contain /usr/bin/dls"
89+
exit 1
90+
fi
91+
done
92+
93+
publish_runtime_image:
94+
needs:
95+
- release_deb
96+
- validate_deb
97+
uses: iit-DLSLab/cicd_tools/.github/workflows/docker-publish.yml@main
98+
with:
99+
image_name: dls2-runtime
100+
registry: ghcr.io
101+
context: external-docker/dockerfiles/dls2-dev-deb
102+
dockerfile: external-docker/dockerfiles/dls2-dev-deb/Dockerfile
103+
tag_override: ${{ needs.release_deb.outputs.version_tag }}
104+
workflow_artifact_name: ${{ needs.release_deb.outputs.runtime_deb_workflow_artifact_name }}
105+
artifact_download_path: external-docker/dockerfiles/dls2-dev-deb/artifacts
106+
extra_checkout_repository: iit-DLSLab/dls_docker
107+
extra_checkout_ref: deb
108+
extra_checkout_path: external-docker
109+
extra_build_args: |
110+
DLS2_DEB_FILE=${{ needs.release_deb.outputs.runtime_deb_artifact_name }}
111+
force_latest_tag: true
112+
secrets:
113+
CICD_PAT: ${{ secrets.CICD_PAT }}
114+
115+
publish_framework_image:
116+
needs:
117+
- release_deb
118+
- validate_deb
119+
uses: iit-DLSLab/cicd_tools/.github/workflows/docker-publish.yml@main
120+
with:
121+
image_name: dls2-framework
122+
registry: ghcr.io
123+
context: external-docker/dockerfiles/dls2-dev-deb
124+
dockerfile: external-docker/dockerfiles/dls2-dev-deb/Dockerfile
125+
tag_override: ${{ needs.release_deb.outputs.version_tag }}
126+
workflow_artifact_name: ${{ needs.release_deb.outputs.framework_deb_workflow_artifact_name }}
127+
artifact_download_path: external-docker/dockerfiles/dls2-dev-deb/artifacts
128+
extra_checkout_repository: iit-DLSLab/dls_docker
129+
extra_checkout_ref: deb
130+
extra_checkout_path: external-docker
131+
extra_build_args: |
132+
DLS2_DEB_FILE=${{ needs.release_deb.outputs.framework_deb_artifact_name }}
133+
force_latest_tag: true
134+
secrets:
135+
CICD_PAT: ${{ secrets.CICD_PAT }}

gluecode

0 commit comments

Comments
 (0)