#!/usr/bin/env bash ################################################################################ ############# Clean all code base for additonal testing @admiralawkbar ######### ################################################################################ ########### # Globals # ########### # GITHUB_WORKSPACE="${GITHUB_WORKSPACE}" # GitHub Workspace # GITHUB_SHA="${GITHUB_SHA}" # Sha used to create this branch # BUILD_DATE="${BUILD_DATE}" # Date the container was built IMAGE="${1}" # Image of the super-linter we build BUILD_REVISION="${GITHUB_SHA}" # GitHub Sha BUILD_VERSION="${GITHUB_SHA}" # Version of the container ORG_REPO="github/super-linter" # Org/repo REGISTRY='ghcr.io' # Docker Registry ((LOG_TRACE = LOG_DEBUG = LOG_VERBOSE = LOG_NOTICE = LOG_WARN = LOG_ERROR = "true")) # Enable all loging ERROR=0 # Error count export LOG_TRACE LOG_DEBUG LOG_VERBOSE LOG_NOTICE LOG_WARN LOG_ERROR ######################### # Source Function Files # ######################### # shellcheck source=/dev/null source "${GITHUB_WORKSPACE}/lib/functions/log.sh" # Source the function script(s) ################################################################################ ############################ FUNCTIONS BELOW ################################### ################################################################################ ################################################################################ #### Function Header ########################################################### Header() { info "--------------------------------------------------" info "----- GitHub Actions validate docker labels ------" info "--------------------------------------------------" ################################## # Print info on local containers # ################################## info "--------------------------------------------------" info "Containers found locally:" docker images info "--------------------------------------------------" } ################################################################################ #### Function ValidateLabel #################################################### ValidateLabel() { ############## # Grab input # ############## CONTAINER_KEY="$1" # Example: org.opencontainers.image.created CONTAINER_VALUE="$2" # Example: 1985-04-12T23:20:50.52Z ######################## # Get the docker label # ######################## LABEL='' if [[ "${IMAGE}" == "slim" ]]; then LABEL=$(docker inspect --format "{{ index .Config.Labels \"${CONTAINER_KEY}\" }}" "${REGISTRY}/${ORG_REPO}:slim-${GITHUB_SHA}") else LABEL=$(docker inspect --format "{{ index .Config.Labels \"${CONTAINER_KEY}\" }}" "${REGISTRY}/${ORG_REPO}:${GITHUB_SHA}") fi ################### # Check the value # ################### if [[ ${LABEL} != "${CONTAINER_VALUE}" ]]; then error "Assert failed [${CONTAINER_KEY} - '${LABEL}' != '${CONTAINER_VALUE}']" ERROR=1 else info "Assert passed [${CONTAINER_KEY}]" fi } ################################################################################ #### Function Footer ########################################################### Footer() { ##################################### # Check if any errors were reported # ##################################### if [[ ${ERROR} -gt 0 ]]; then fatal "There were some failed assertions. See above" else info "-------------------------------------------------------" info "The step has completed" info "-------------------------------------------------------" fi } ################################################################################ ################################## MAIN ######################################## ################################################################################ ########## # Header # ########## Header #################### # Validate created # #################### ValidateLabel "org.opencontainers.image.created" "${BUILD_DATE}" ##################### # Validate revision # ##################### ValidateLabel "org.opencontainers.image.revision" "${BUILD_REVISION}" #################### # Validate version # #################### ValidateLabel "org.opencontainers.image.version" "${BUILD_VERSION}" ################# # Report status # ################# Footer