Skip to content

Commit

Permalink
feat: add version in image
Browse files Browse the repository at this point in the history
Signed-off-by: joyceliu <[email protected]>
  • Loading branch information
joyceliu committed Dec 12, 2024
1 parent 5b48ec0 commit 890e098
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 0 deletions.
3 changes: 3 additions & 0 deletions build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ RUN mv /kubesphere/server/locales \
#RUN ["/bin/bash", "-c", "mv /kubesphere/server/{locales,public,sample,views,config.yaml} /out/server/"]
RUN mv /kubesphere/package.json /out/

# generate version file to out
RUN hack/version.sh > /out/version.txt

##############
# Final Image
##############
Expand Down
3 changes: 3 additions & 0 deletions hack/docker_build_multiarch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ sudo chown $(id -u):$(id -g) -R $PROJECT_DIR/server
# build out dir
rm -rf "$PROJECT_DIR"/out/
mkdir -p "$PROJECT_DIR"/out/server
# generate version file to out
"$PROJECT_DIR"/hack/version.sh > "$PROJECT_DIR"/out/version.txt

mv "$PROJECT_DIR"/dist/ "$PROJECT_DIR"/package.json "$PROJECT_DIR"/out/
mv "$PROJECT_DIR"/server/locales \
"$PROJECT_DIR"/server/public \
Expand Down
Empty file modified hack/update-licenses.sh
100644 → 100755
Empty file.
84 changes: 84 additions & 0 deletions hack/version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/usr/bin/env bash

# -----------------------------------------------------------------------------
# Version management helpers. These functions help to set, save and load the
# following variables:
#
# KUBE_GIT_COMMIT - The git commit id corresponding to this
# source code.
# KUBE_GIT_TREE_STATE - "clean" indicates no changes since the git commit id
# "dirty" indicates source code changes after the git commit id
# "archive" indicates the tree was produced by 'git archive'
# KUBE_GIT_VERSION - "vX.Y" used to indicate the last release version.
# KUBE_GIT_MAJOR - The major part of the version
# KUBE_GIT_MINOR - The minor component of the version

KUBE_GIT_COMMIT=""
KUBE_GIT_TREE_STATE=""
KUBE_GIT_VERSION=""
KUBE_GIT_MAJOR=""
KUBE_GIT_MINOR=""
KUBE_GIT_RELEASE_COMMIT=""
SOURCE_DATE_EPOCH=""

version::get_version_vars() {
local git=(git --work-tree "${KUBE_ROOT:-.}")

if [[ -n ${KUBE_GIT_COMMIT-} ]] || KUBE_GIT_COMMIT=$("${git[@]}" rev-parse "HEAD^{commit}" 2>/dev/null); then
if [[ -z ${KUBE_GIT_TREE_STATE-} ]]; then
if git_status=$("${git[@]}" status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
KUBE_GIT_TREE_STATE="clean"
else
KUBE_GIT_TREE_STATE="dirty"
fi
fi

if [[ -n ${KUBE_GIT_VERSION-} ]] || KUBE_GIT_VERSION=$("${git[@]}" describe --tags --match='v*' --abbrev=14 "${KUBE_GIT_COMMIT}^{commit}" 2>/dev/null); then
DASHES_IN_VERSION=$(echo "${KUBE_GIT_VERSION}" | sed "s/[^-]//g")
if [[ "${DASHES_IN_VERSION}" == "---" ]] ; then
KUBE_GIT_VERSION=$(echo "${KUBE_GIT_VERSION}" | sed "s/-\([0-9]\{1,\}\)-g\([0-9a-f]\{14\}\)$/.\1+\2/")
elif [[ "${DASHES_IN_VERSION}" == "--" ]] ; then
KUBE_GIT_VERSION=$(echo "${KUBE_GIT_VERSION}" | sed "s/-g\([0-9a-f]\{14\}\)$/+\1/")
fi
if [[ "${KUBE_GIT_TREE_STATE}" == "dirty" ]]; then
KUBE_GIT_VERSION+="-dirty"
fi

if [[ "${KUBE_GIT_VERSION}" =~ ^v([0-9]+)\.([0-9]+)(\.[0-9]+)?([-].*)?([+].*)?$ ]]; then
KUBE_GIT_MAJOR=${BASH_REMATCH[1]}
KUBE_GIT_MINOR=${BASH_REMATCH[2]}
if [[ -n "${BASH_REMATCH[4]}" ]]; then
KUBE_GIT_MINOR+="+"
fi
fi

if ! [[ "${KUBE_GIT_VERSION}" =~ ^v([0-9]+)\.([0-9]+)(\.[0-9]+)?(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
echo "KUBE_GIT_VERSION should be a valid Semantic Version. Current value: ${KUBE_GIT_VERSION}"
echo "Please see more details here: https://semver.org"
exit 1
fi
fi
fi
}

version() {
version::get_version_vars

local buildDate
buildDate=$(date ${SOURCE_DATE_EPOCH:+"--date=@${SOURCE_DATE_EPOCH}"} -u +'%Y-%m-%dT%H:%M:%SZ')

printf '{
"buildDate": "%s",
"gitCommit": "%s",
"gitTreeState": "%s",
"gitMajor": "%s",
"gitMinor": "%s",
"gitVersion": "%s",
"gitReleaseCommit": "%s"
}\n' \
"$buildDate" "$KUBE_GIT_COMMIT" "$KUBE_GIT_TREE_STATE" "$KUBE_GIT_MAJOR" "$KUBE_GIT_MINOR" "$KUBE_GIT_VERSION" "$KUBE_GIT_RELEASE_COMMIT"
}

if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
version
fi

0 comments on commit 890e098

Please sign in to comment.