Megfelelő Alpine linux verzió használata csomag telepítéshez CI/CD vagy Docker esetén
Probléma
Hogyan lehet az aktuális Alpine linux verzió számot megkapni és felhasználni saját apk (proxy) repo (pl artifactory) esetén. Pl ha az image version csak 22-alpine.
Ötlet #1
Mit használnak Alpine-ék? Ezt:
get_alpine_release() {
# use the main version already configured, or get the version from /etc/alpine-release
local version="$(grep -Eom1 '[^/]+/main/?$' "${ROOT}"etc/apk/repositories 2>/dev/null | grep -Eo '^[^/]+' \
|| cat "${ROOT}"etc/alpine-release 2>/dev/null)"
case "$version" in
*_git*|*_alpha*) release="edge";;
[0-9]*.[0-9]*.[0-9]*)
# release in x.y.z format, cut last digit
release=v${version%.[0-9]*};;
v[0-9]*.[0-9]*)
# release in vx.y format, keep as is
release="${version}";;
*) # fallback to edge
release="edge";;
esac
}
Megoldás 1
Ebből saját egyszerűsített megoldás CI/CD-hez alpine-s node-s image-hez
build:
image: node:22-alpine
stage: build
#when: manual
before_script:
- repo_version="$(grep -Eom1 '[^/]+/main/?$' /etc/apk/repositories 2>/dev/null | grep -Eo '^[^/]+')"
- echo "https://sajat_arti/${repo_version}/main" > /etc/apk/repositories
- echo "https://sajat_arti/${repo_version}/community" >> /etc/apk/repositories
- apk update --no-cache
- apk add --no-cache zip rsync
Megoldás 2
Vagy másik megoldás pl Docker fájlhoz
echo -e "https://sajat_arti/v$(cut -d . -f 1,2 < /etc/alpine-release)/community\n
https://sajat_arti/v$(cut -d . -f 1,2 < /etc/alpine-release)/main" > /etc/apk/repositories
2025.03.19.
