Skip to content

imglife eol

imglife eol update [flags]

Fetches EOL data from endoflife.date for every product referenced in sync.entries[].lifecycle.product and writes the result to eol_data_file.

FlagDefaultDescription
--dry-runfalseFetch and display data without writing
--data-file stringeol-data.yamlPath to the output file (overrides lifecycle.eol_data_file)
Terminal window
# Refresh EOL data
imglife eol update
# Dry-run: fetch and display without writing
imglife eol update --dry-run
# Write to a custom path
imglife eol update --data-file /tmp/eol-cache.yaml

Run imglife eol update periodically (e.g. weekly) to keep EOL dates current. In CI, add it as a scheduled job:

# GitLab CI scheduled job
eol-update:
stage: eol
image: registry.gitlab.com/imglife-project/imglife:latest
script:
- imglife eol update
- |
if git diff --quiet eol-data.yaml; then
echo "EOL data unchanged"
else
git add eol-data.yaml
git commit -m "chore(lifecycle): update EOL data"
git push
fi
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"

The set of products to fetch is derived from sync.entries[].lifecycle.product in your imglife.yaml. Only products with a lifecycle: block are fetched.

sync:
entries:
- source: docker.io/library/alpine
lifecycle:
product: alpine # ← will be fetched
- source: docker.io/library/golang
lifecycle:
product: go # ← will be fetched
- source: docker.io/library/nginx
# no lifecycle: block — not fetched

By default, the data is written to a local file (git target). For environments where CI cannot push to git, switch to pkgregistry:

lifecycle:
eol_target: pkgregistry

The file is then stored in the Package Registry and read from there by imglife status and imglife check.

CodeMeaning
0Data fetched and written successfully
1Fetch or write error