Skip to content

chore(ci): pilot docker-image-ci gold-standard reusable#121

Open
CybotTM wants to merge 5 commits into
mainfrom
chore/adopt-docker-image-ci
Open

chore(ci): pilot docker-image-ci gold-standard reusable#121
CybotTM wants to merge 5 commits into
mainfrom
chore/adopt-docker-image-ci

Conversation

@CybotTM

@CybotTM CybotTM commented Jul 21, 2026

Copy link
Copy Markdown
Member

What

Pilots the gold-standard docker-image-ci.yml meta-reusable from
netresearch/.github on this repo. Replaces the hand-rolled
lint / build / security-scan jobs in ci.yml with a single call site.

The meta composes: Dockerfile lint (hadolint) + shellcheck, YAML lint,
compose config-validation, a validation-only image build (push: false)
with Trivy, secret scanning (gitleaks), and dependency review.

⚠️ Blocked until netresearch/.github#251 merges

CI currently startup-fails ("This run likely failed because of a
workflow file issue", 0 jobs). Root cause is not this caller — it is the
meta's leaf pinning during the pre-merge window:

  • The meta pins its leaves @main (org policy). Two files are introduced by
    #251 and are not on main yet: the meta itself (referenced here via
    @feat/docker-gold-standard, fine) and lint-compose.yml (referenced
    by the meta as lint-compose.yml@main, unresolvable).
  • GitHub resolves every reusable uses: at workflow-compile/startup time,
    regardless of a job's if:. Verified empirically: setting lint-compose: false still startup-fails, because the meta's lint-compose job reference
    is resolved before its if: is evaluated.
  • Therefore the meta cannot be consumed from any repo until #251 lands its
    new leaves on main.

Resolution: once #251 merges, flip @feat/docker-gold-standard@main;
the run will then spin up jobs and exercise the repo (surfacing any
hadolint/shellcheck/yamllint/Trivy findings as normal).

Inputs

input value why
image-name docker-ftp-server validation build tag
dockerfile ./Dockerfile repo root
lint-container true hadolint
shell-scandirs setup setup/docker-entrypoint.sh
lint-yaml true gold-standard default
lint-markdown false no .md files (README is .rst)
lint-compose true (docker-compose.yml) repo has a compose file
enable-gitleaks true GITLEAKS_LICENSE forwarded
enable-codeql / enable-smoke-test false not warranted here

Grants the full caller permission union the meta requires
(contents:read, packages:write, security-events:write, id-token:write, attestations:write, actions:read, pull-requests:write).

Also

  • Adds .hadolint.yaml carrying forward the previous inline ignore: DL3018.
  • Keeps the bespoke Test FTP Server runtime job — the meta's smoke test
    uses container-structure-test, which does not replicate the vsftpd boot
    check, so it is not subsumed.
  • docker-publish.yml (push/sign) and dependency-review.yml are untouched.
    Note: the meta also runs dependency-review on PRs, so once unblocked there
    will be two dependency-review checks (the standalone file + the meta's);
    consider dropping the standalone dependency-review.yml as a follow-up.

Ref

References the reusable at @feat/docker-gold-standard; flip to @main
once netresearch/.github#251 merges.

Replace the hand-rolled lint/build/security-scan jobs in ci.yml with a
single call to the org meta-reusable
netresearch/.github/.github/workflows/docker-image-ci.yml, composing
Dockerfile+shell lint, YAML/compose lint, a validation-only image build
with Trivy, secret scanning and dependency review.

- Grants the full caller permission union the meta requires
  (contents/packages/security-events/id-token/attestations/actions/
  pull-requests).
- shell-scandirs=setup, lint-compose over docker-compose.yml,
  gitleaks with GITLEAKS_LICENSE forwarded.
- Adds .hadolint.yaml to carry forward the previous DL3018 ignore.
- Keeps the bespoke 'Test FTP Server' runtime job (not covered by the
  meta's container-structure-test smoke test).

References @feat/docker-gold-standard; flip to @main once
netresearch/.github#251 merges.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a .hadolint.yaml configuration file to ignore the DL3018 rule, which suppresses warnings regarding package version pinning for Alpine's apk add. There are no review comments, and I have no feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 1 package(s) with unknown licenses.
See the Details below.

License Issues

.github/workflows/ci.yml

PackageVersionLicenseIssue Type
netresearch/.github/.github/workflows/docker-image-ci.ymlmainNullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
actions/netresearch/.github/.github/workflows/docker-image-ci.yml main UnknownUnknown

Scanned Files

  • .github/workflows/ci.yml

CybotTM added 3 commits July 21, 2026 08:17
…main

The meta pins its leaf reusables @main; lint-compose.yml is introduced by
netresearch/.github#251 and is not yet on main. GitHub resolves reusable
uses: refs at startup, so an active lint-compose job makes the whole run
startup-fail. Keep it off until the leaf is on main.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
Reverts the diagnostic toggle. The run startup-fails either way until
netresearch/.github#251 merges (the meta references lint-compose.yml@main,
a leaf that only exists on the feature branch, and GitHub resolves reusable
uses: refs at startup regardless of the job's if:). Keep the intended
config; flip @feat/docker-gold-standard -> @main once #251 merges.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

The docker-ci gold-standard lint-container job surfaced unquoted
expansions in setup/docker-entrypoint.sh. Quote them; mark the
intentional ;-split array (SC2206) and the sequential vsftpd.conf
appends (SC2129) as deliberate.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants