RPM & Raw Artifact Repositories¶
Nexus hosts RPM packages for the Executor CLI and raw binaries for standalone deployments, both served from the
yum-hosted-devandraw-hosted-devrepositories on port 443.
RPM Packages (YUM)¶
Repository URLs¶
| Operation | URL |
|---|---|
| Upload (CI push) | https://nexus.shared.cwiq.io/repository/yum-hosted-dev/ |
| Install (server-side yum) | https://nexus.shared.cwiq.io/repository/yum-group-{env}/ |
The yum-group-{env} repository combines the hosted repo with upstream mirrors. Replace {env} with the target environment: dev, demo, or production.
Primary Use: Executor CLI¶
The Executor CLI (orchestrator-executor) is the only CWIQ component distributed as an RPM. It runs on RHEL 9 (AlmaLinux 9) hosts and requires native OS integration for the 6-layer sandbox (cgroups, namespaces, seccomp, capabilities, filesystem, application layers).
RPM artifact path:
Example: yum-hosted-dev/orchestrator/executor/orchestrator-executor-0.3.0-0.dev.el9.x86_64.rpm
Versioning¶
| Field | Value | Notes |
|---|---|---|
| Version source | executor/pyproject.toml |
version field |
| Format | {major}.{minor}.{patch} |
Semver |
| RPM release (dev builds) | 0.dev |
No pipeline IID suffix |
| RPM dist | %{?dist} macro |
Do NOT add .${DIST} manually — causes double suffix |
| Tag format (releases) | v{major}.{minor}.{patch} |
e.g., v0.3.0 |
RPM dist macro
Do not add .${DIST} to the --define argument in rpmbuild. The %{?dist} macro in the spec file already expands to .el9. Adding it manually produces a double suffix like .el9.el9 which breaks yum install.
Installing on Target Servers¶
Target servers are configured with a Nexus yum repository at Ansible provisioning time:
# /etc/yum.repos.d/cwiq-nexus.repo (managed by Ansible)
[cwiq-nexus]
name=CWIQ Nexus RPM Repository
baseurl=https://nexus.shared.cwiq.io/repository/yum-group-dev/
enabled=1
gpgcheck=0
Once the repo is configured, the Executor CLI installs and upgrades through the standard package manager:
# Install
sudo yum install orchestrator-executor
# Upgrade to a specific version
sudo yum install orchestrator-executor-0.3.0
# Check installed version
rpm -q orchestrator-executor
Uploading an RPM in CI/CD¶
# Upload via curl (credentials from Vault)
curl -u "${NEXUS_USER}:${NEXUS_PASSWORD}" \
--upload-file "./dist/orchestrator-executor-${VERSION}-0.dev.el9.x86_64.rpm" \
"https://nexus.shared.cwiq.io/repository/yum-hosted-dev/orchestrator/executor/"
The CI/CD pipeline uses the svc-executor service account (Vault path: secret/nexus/svc-executor) for RPM uploads. See Service Accounts.
Raw Artifacts¶
Repository URL¶
| Operation | URL |
|---|---|
| Upload / Download | https://nexus.shared.cwiq.io/repository/raw-hosted-dev/ |
Raw artifacts store standalone binaries that do not fit RPM packaging — compiled executables, pre-built CLI tools, or build outputs that need to be distributed without an RPM spec.
Artifact Path Convention¶
Example: raw-hosted-dev/orchestrator/executor/orchestrator-executor-0.3.0
Uploading a Raw Binary¶
# Upload a compiled binary (credentials from Vault)
curl -u "${NEXUS_USER}:${NEXUS_PASSWORD}" \
--upload-file ./orchestrator-executor \
"https://nexus.shared.cwiq.io/repository/raw-hosted-dev/orchestrator/executor/orchestrator-executor-${VERSION}"
Downloading a Raw Binary¶
# Download a specific version
curl -u "${NEXUS_USER}:${NEXUS_PASSWORD}" -O \
"https://nexus.shared.cwiq.io/repository/raw-hosted-dev/orchestrator/executor/orchestrator-executor-0.3.0"
# Make executable
chmod +x orchestrator-executor-0.3.0
When to use raw vs RPM
Prefer RPM for anything that needs to be installed on RHEL 9 hosts in production. RPM gives you clean install/upgrade/remove semantics, dependency management, and integration with the server's package audit trail. Raw artifacts are for one-off binaries, build tools, or components that will be consumed by another build step rather than installed on a server.
CI/CD Variables for Executor Pipelines¶
The executor project uses a different Vault path and Nexus URL set from the main platform services:
| Variable | Value | Purpose |
|---|---|---|
NEXUS_URL |
https://nexus.shared.cwiq.io |
Base URL for RPM and raw uploads |
NEXUS_RPM_REPO |
${NEXUS_URL}/repository/yum-hosted-dev |
RPM upload target |
NEXUS_RAW_REPO |
${NEXUS_URL}/repository/raw-hosted-dev/orchestrator/executor |
Raw binary upload target |
These are defined in the executor's .gitlab-ci.yml and override the defaults from .gitlab-ci-common.yml.
Related Documentation¶
- Nexus Overview — Port architecture and all repository types
- Service Accounts —
svc-executorVault path and permissions - Docker Registry — Docker image push and pull
- PyPI & npm — Python and Node.js package repositories