From 35b6a6f9ce1e6ee40826ae652fc42dccb2ada62e Mon Sep 17 00:00:00 2001 From: Raphanus Lo Date: Tue, 11 Feb 2025 17:04:14 +0800 Subject: [PATCH] chore(ci): improve code readability Signed-off-by: Raphanus Lo --- .github/workflows/build.yml | 12 +++---- Makefile | 4 +-- scripts/package | 62 ++++++++++++++++++++----------------- 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 48e24c23..0d1dcc87 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,7 @@ jobs: outputs: version_major: ${{ steps.build_info.outputs.version_major }} version_minor: ${{ steps.build_info.outputs.version_minor }} - version_build: ${{ steps.build_info.outputs.version_build }} + version_patch: ${{ steps.build_info.outputs.version_patch }} image_tag: ${{ steps.build_info.outputs.image_tag }} steps: @@ -26,7 +26,7 @@ jobs: run: | version_major='' version_minor='' - version_build='' + version_patch='' image_tag='' branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} @@ -35,23 +35,21 @@ jobs: version=$(sed -E 's/^v([0-9]*\.[0-9]*\.[0-9]*).*$/\1/' <<<${{ github.ref_name }} ) version_major=$(cut -d. -f1 <<<$version) version_minor=$(cut -d. -f2 <<<$version) - version_build=$(cut -d. -f3 <<<$version) + version_patch=$(cut -d. -f3 <<<$version) image_tag=${{ github.ref_name }} elif [[ "$ref" =~ 'refs/heads/' ]]; then image_tag="${branch}-head" - elif [[ "$ref" =~ 'refs/pull/' ]]; then - image_tag="pr${{ github.event.number }}" fi echo "version_major=${version_major}" >>$GITHUB_OUTPUT echo "version_minor=${version_minor}" >>$GITHUB_OUTPUT - echo "version_build=${version_build}" >>$GITHUB_OUTPUT + echo "version_patch=${version_patch}" >>$GITHUB_OUTPUT echo "image_tag=${image_tag}" >>$GITHUB_OUTPUT cat </dev/null && build_cmd=(buildx) || build_cmd=(docker buildx) +command -v buildx >/dev/null && BUILD_CMD=(buildx) || BUILD_CMD=(docker buildx) # read configurable parameters REPO=${REPO:-longhornio} -IMAGE_NAME=${IMAGE_NAME:-$project} +IMAGE_NAME=${IMAGE_NAME:-${PROJECT}} TAG=${TAG:-''} -OUTPUT_ARGS=${OUTPUT_ARGS:-'--load'} +PUSH=${PUSH:-'false'} IS_SECURE=${IS_SECURE:-'false'} MACHINE=${MACHINE:-''} TARGET_PLATFORMS=${TARGET_PLATFORMS:-''} IID_FILE=${IID_FILE:-''} IID_FILE_FLAG=${IID_FILE_FLAG:-''} -if [[ -z $TAG ]]; then - if api_version=$(./bin/backing-image-manager version --client-only | jq ".clientVersion.backingImageManagerAPIVersion"); then - TAG="v${api_version}_$(date -u +%Y%m%d)" +if [[ -z "${TAG}" ]]; then + if API_VERSION=$(./bin/backing-image-manager version --client-only | jq ".clientVersion.backingImageManagerAPIVersion"); then + TAG="v${API_VERSION}_$(date -u +%Y%m%d)" else - TAG="$VERSION" + TAG="${VERSION}" fi fi -image="${REPO}/${IMAGE_NAME}:${TAG}" +IMAGE="${REPO}/${IMAGE_NAME}:${TAG}" -builder_args=() -[[ $MACHINE ]] && builder_args+=('--builder' "$MACHINE") +BUILDER_ARGS=() +[[ ${MACHINE} ]] && BUILDER_ARGS+=('--builder' "${MACHINE}") -IFS=' ' read -r -a iid_file_args <<<"$IID_FILE_FLAG" -[[ -n "$IID_FILE" && ${#iid_file_args} == 0 ]] && iid_file_args=('--iidfile' "$IID_FILE") +IFS=' ' read -r -a IID_FILE_ARGS <<<"${IID_FILE_FLAG}" +[[ -n "${IID_FILE}" && ${#IID_FILE_ARGS} == 0 ]] && IID_FILE_ARGS=('--iidfile' "${IID_FILE}") -IFS=' ' read -r -a buildx_args <<<"$OUTPUT_ARGS" -[[ $IS_SECURE == 'true' ]] && buildx_args+=('--sbom=true' '--attest' 'type=provenance,mode=max') -[[ $TARGET_PLATFORMS ]] && buildx_args+=('--platform' "$TARGET_PLATFORMS") +BUILDX_ARGS=() -echo "${build_cmd[@]}" build --no-cache \ - "${builder_args[@]}" \ - "${iid_file_args[@]}" \ - "${buildx_args[@]}" \ - -t "$image" -f package/Dockerfile . -"${build_cmd[@]}" build --no-cache \ - "${builder_args[@]}" \ - "${iid_file_args[@]}" \ - "${buildx_args[@]}" \ - -t "$image" -f package/Dockerfile . +if [[ "${PUSH}" == 'true' ]]; then + BUILDX_ARGS+=('--push') +else + BUILDX_ARGS+=('--load') +fi + +[[ ${IS_SECURE} == 'true' ]] && BUILDX_ARGS+=('--sbom=true' '--attest' 'type=provenance,mode=max') +[[ ${TARGET_PLATFORMS} ]] && BUILDX_ARGS+=('--platform' "${TARGET_PLATFORMS}") + +IMAGE_BUILD_CMD=( + "${BUILD_CMD[@]}" build --no-cache \ + "${BUILDER_ARGS[@]}" \ + "${IID_FILE_ARGS[@]}" \ + "${BUILDX_ARGS[@]}" \ + -t "${IMAGE}" -f package/Dockerfile . +) +echo "${IMAGE_BUILD_CMD[@]}" +"${IMAGE_BUILD_CMD[@]}" -echo "Built $image" +echo "Built ${IMAGE}" mkdir ./bin || true -echo "$image" > ./bin/latest_image +echo "${IMAGE}" > ./bin/latest_image