Adds CI CD with deb for external deps

This commit is contained in:
torsten committed 2026-11-06 18:15:17 +00:00
1 parent 03d48b76e4
commit 7373cb8d73
82 files changed
+3547 -3

No files matched your search

+111
View File
@@ -80,6 +80,117 @@ This generates:
- `<package>-provenance.json`: SLSA v1.0 provenance
- `<package>-licenses.txt`: License compliance report
## External Dependencies (Proprietary/Custom)
The following 8 external dependencies use a **DEB package-based deployment model** from the internal SCM repository:
### Dependencies List
| Dependency | Version | DEB Package | License Type |
|------------|---------|-------------|--------------|
| AVS | Custom | `libavs-dev` | Contract-based (lifetime) |
| ArcGIS Runtime SDK | 300.0.0 | `libarcgis-maps-sdk-qt-dev` | Embedded ini-file licenses |
| BuildingModels | Custom | `libbuildingmodels-dev` | Internal |
| GeographicLib | Custom | `libgeographiclib-dev` | MIT |
| Schusstafel | Custom | `libschusstafel-dev` | Internal |
| dtEntity | Custom | `libdtentity-dev` | Open Source |
| RTI Connext DDS | 7.7.0 | `librti-connext-dds-7.7.0-dev` | Commercial (license file) |
| tmsif | Custom | `libtmsif-dev` | Contract-based (lifetime) |
### DEB Package Repository
All DEB packages are stored in the internal SCM repository:
- **URL:** `https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general`
- **APT Repository:** `http://remote-repo.sl.defence-elec.de:8081/repository/ubuntu`
- **Signing Key:** `http://10.198.80.75/rme/deb_and_rpm_signage_key.pub`
### Dockerfile Pattern
All 8 Dockerfiles follow this pattern:
```dockerfile
# Install <dependency> from internal SCM repository
# DEB package: <deb-package-name>
# Repository: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
# License handling: <license-type>
# <license-details>
RUN apt-get update && apt-get install -y \
<deb-package-name> \
&& rm -rf /var/lib/apt/lists/*
```
### License Handling
**RTI Connext DDS (7.7.0):**
- License file: `rti_license.dat` (provided at build time)
- Environment variable: `RTI_LICENSE_FILE=/opt/rti_connext_dds-7.7.0/rti_license.dat`
- Commercial license with FlexLM
**ArcGIS Runtime SDK (300.0.0):**
- Licenses embedded in 19 .ini files
- Location: `Lts/Viewer/SituationMap/Map/*.ini`
- Map-specific one-line license strings
**AVS & tmsif:**
- Contract-based licensing (lifetime licenses)
- No license files required
- Customer has physical license contracts
**BuildingModels, GeographicLib, Schusstafel, dtEntity:**
- Internal or open source
- No license files required
### Jenkinsfile Pattern
All 8 Jenkinsfiles include:
```groovy
stage('Prepare License Files') {
steps {
// License handling: <license-type>
// <license-details>
// DEB package installed from internal SCM repository
// Repository: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
// Package: <deb-package-name>
sh '''
apt-get update
apt-get install -y <deb-package-name>
'''
}
}
```
### DEB Package Build Pipelines
Each dependency has a DEB package build directory:
```
external-dependencies/deb-packages/
├── avs/ # AVS DEB package build
├── arcgis/ # ArcGIS DEB package build
├── buildingmodels/ # BuildingModels DEB package build
├── geographiclib/ # GeographicLib DEB package build
├── schusstafel/ # Schusstafel DEB package build
├── dtentity/ # dtEntity DEB package build
├── rti-connext-dds/ # RTI Connext DDS DEB package build
└── tmsif/ # tmsif DEB package build
```
Each directory contains:
- `debian/` directory with control files
- Build scripts for package creation
- README with packaging instructions
### Installation in Air-Gapped Environment
1. DEB packages are built and uploaded to internal SCM repository
2. CI/CD pipelines configure APT to use internal repository
3. Dockerfiles install packages via `apt-get install`
4. SBOM generation tracks all installed packages
## Air-Gapped Environment Support
For air-gapped deployment, offline dependency packages are prepared and transferred via secure media: