mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-26 08:01:03 -05:00
e15a4dc174
test bucket variable Add empty expect words add procjet varaible Add excludes file add patters for urls Add newline at eof Changing lorem ipsum for proper words Add admiralawkbar to expected words Exclude lint templates files Add api apk and ansible as expected words add expected words for cleanup-docker.sh add expected words for ghe-config-apply.sh Fix add-ons spelling Add a bunch new words Simpler url pattern Use common baz word Fix coffeescript spelling Add expected words for ghe-api-config-apply.yml Add ecpected words for linter.sh Fix Multi-line spelling Add more linter.sh expected words Add a whole lot of expected words Add pattern for repeated single char Add space Add expected words for Dockerfile Add more expected words for ghe-api-config-apply.yml Add expected words for he-initial-configuration.yml Add expected words for ghe-ldap-configuration.yml Move spelling/expect -> spelling/allow Set workflow name Fix @admiralawkbar capitalization Fix requirements spelling Add last docker allow words Add last ghe-config-apply allow words Add last linter.sh allow words add last general allow words Add .gitignore allow words Add main.yml allow words Add settings.json.j2 allow words Add empty expect words Test gitignore.txt Fix patter for repeated chars Add some more allowed words more words Add disabling-linters.md allow words commit
350 lines
10 KiB
Bash
Executable file
350 lines
10 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
################################################################################
|
|
############# Deploy Container to DockerHub @admiralawkbar #####################
|
|
################################################################################
|
|
|
|
# NOTES: This script is used to upload a Dockerfile to DockerHub
|
|
# under the GitHub organization
|
|
# Its based on being built from a GitHub Action, but could be easily updated
|
|
# To be ran in a different medium.
|
|
#
|
|
# PRE-Requirements:
|
|
# - Dockerfile
|
|
# - System with Docker installed
|
|
# - Global variables met
|
|
|
|
###########
|
|
# Globals #
|
|
###########
|
|
GITHUB_WORKSPACE="${GITHUB_WORKSPACE}" # GitHub Workspace
|
|
DOCKER_USERNAME="${DOCKER_USERNAME}" # Username to login to DockerHub
|
|
DOCKER_PASSWORD="${DOCKER_PASSWORD}" # Password to login to DockerHub
|
|
IMAGE_REPO="${IMAGE_REPO}" # Image repo to upload the image
|
|
IMAGE_VERSION="${IMAGE_VERSION}" # Version to tag the image
|
|
DOCKERFILE_PATH="${DOCKERFILE_PATH}" # Path to the Dockerfile to be uploaded
|
|
|
|
################################################################################
|
|
############################ FUNCTIONS BELOW ###################################
|
|
################################################################################
|
|
################################################################################
|
|
#### Function Header ###########################################################
|
|
Header()
|
|
{
|
|
echo ""
|
|
echo "-------------------------------------------------------"
|
|
echo "------ GitHub Actions Upload image to DockerHub -------"
|
|
echo "-------------------------------------------------------"
|
|
echo ""
|
|
}
|
|
################################################################################
|
|
#### Function ValidateInput ####################################################
|
|
ValidateInput()
|
|
{
|
|
# Need to validate we have the basic variables
|
|
################
|
|
# Print header #
|
|
################
|
|
echo ""
|
|
echo "----------------------------------------------"
|
|
echo "Gathering variables..."
|
|
echo "----------------------------------------------"
|
|
echo ""
|
|
|
|
############################
|
|
# Validate GITHUB_WORKSPACE #
|
|
############################
|
|
if [ -z "$GITHUB_WORKSPACE" ]; then
|
|
echo "ERROR! Failed to get [GITHUB_WORKSPACE]!"
|
|
echo "ERROR:[$GITHUB_WORKSPACE]"
|
|
exit 1
|
|
else
|
|
echo "Successfully found:[GITHUB_WORKSPACE], value:[$GITHUB_WORKSPACE]"
|
|
fi
|
|
|
|
############################
|
|
# Validate DOCKER_USERNAME #
|
|
############################
|
|
if [ -z "$DOCKER_USERNAME" ]; then
|
|
echo "ERROR! Failed to get [DOCKER_USERNAME]!"
|
|
echo "ERROR:[$DOCKER_USERNAME]"
|
|
exit 1
|
|
else
|
|
echo "Successfully found:[DOCKER_USERNAME], value:[$DOCKER_USERNAME]"
|
|
fi
|
|
|
|
############################
|
|
# Validate DOCKER_PASSWORD #
|
|
############################
|
|
if [ -z "$DOCKER_PASSWORD" ]; then
|
|
echo "ERROR! Failed to get [DOCKER_PASSWORD]!"
|
|
echo "ERROR:[$DOCKER_PASSWORD]"
|
|
exit 1
|
|
else
|
|
echo "Successfully found:[DOCKER_PASSWORD], value:[********]"
|
|
fi
|
|
|
|
#######################
|
|
# Validate IMAGE_REPO #
|
|
#######################
|
|
if [ -z "$IMAGE_REPO" ]; then
|
|
echo "ERROR! Failed to get [IMAGE_REPO]!"
|
|
echo "ERROR:[$IMAGE_REPO]"
|
|
exit 1
|
|
else
|
|
echo "Successfully found:[IMAGE_REPO], value:[$IMAGE_REPO]"
|
|
fi
|
|
|
|
##########################
|
|
# Validate IMAGE_VERSION #
|
|
##########################
|
|
if [ -z "$IMAGE_VERSION" ]; then
|
|
echo "WARN! Failed to get [IMAGE_VERSION]!"
|
|
echo "Pulling from Branch Name..."
|
|
##############################
|
|
# Get the name of the branch #
|
|
##############################
|
|
BRANCH_NAME=$(git branch --contains "$GITHUB_SHA" |awk '{print $2}' 2>&1)
|
|
|
|
#######################
|
|
# Load the error code #
|
|
#######################
|
|
ERROR_CODE=$?
|
|
|
|
##############################
|
|
# Check the shell for errors #
|
|
##############################
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
echo "ERROR! Failed to get branch name!"
|
|
echo "ERROR:[$BRANCH_NAME]"
|
|
exit 1
|
|
fi
|
|
|
|
##################################
|
|
# Remove non alpha-numeric chars #
|
|
##################################
|
|
BRANCH_NAME=$(echo "$BRANCH_NAME" | tr -cd '[:alnum:]')
|
|
|
|
############################################
|
|
# Set the IMAGE_VERSION to the BRANCH_NAME #
|
|
############################################
|
|
IMAGE_VERSION="$BRANCH_NAME"
|
|
echo "Tag:[$IMAGE_VERSION]"
|
|
else
|
|
echo "Successfully found:[IMAGE_VERSION], value:[$IMAGE_VERSION]"
|
|
fi
|
|
|
|
############################
|
|
# Validate DOCKERFILE_PATH #
|
|
############################
|
|
if [ -z "$DOCKERFILE_PATH" ]; then
|
|
echo "ERROR! Failed to get [DOCKERFILE_PATH]!"
|
|
echo "ERROR:[$DOCKERFILE_PATH]"
|
|
exit 1
|
|
else
|
|
echo "Successfully found:[DOCKERFILE_PATH], value:[$DOCKERFILE_PATH]"
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function LoginToDocker ####################################################
|
|
LoginToDocker()
|
|
{
|
|
################
|
|
# Print header #
|
|
################
|
|
echo ""
|
|
echo "----------------------------------------------"
|
|
echo "Login to DockerHub..."
|
|
echo "----------------------------------------------"
|
|
echo ""
|
|
|
|
######################
|
|
# Login to DockerHub #
|
|
######################
|
|
LOGIN_CMD=$(docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" 2>&1)
|
|
|
|
#######################
|
|
# Load the error code #
|
|
#######################
|
|
ERROR_CODE=$?
|
|
|
|
##############################
|
|
# Check the shell for errors #
|
|
##############################
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
# ERROR
|
|
echo "ERROR! Failed to authenticate to DockerHub!"
|
|
echo "ERROR:[$LOGIN_CMD]"
|
|
exit 1
|
|
else
|
|
# SUCCESS
|
|
echo "Successfully authenticated to DockerHub!"
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function BuildImage #######################################################
|
|
BuildImage()
|
|
{
|
|
################
|
|
# Print header #
|
|
################
|
|
echo ""
|
|
echo "----------------------------------------------"
|
|
echo "Building the DockerFile image..."
|
|
echo "----------------------------------------------"
|
|
echo ""
|
|
|
|
|
|
################################
|
|
# Validate the DOCKERFILE_PATH #
|
|
################################
|
|
if [ ! -f "$DOCKERFILE_PATH" ]; then
|
|
# No file found
|
|
echo "ERROR! failed to find Dockerfile at:[$DOCKERFILE_PATH]"
|
|
echo "Please make sure you give full path!"
|
|
echo "Example:[/configs/Dockerfile] or [Dockerfile] if at root directory"
|
|
exit 1
|
|
fi
|
|
|
|
###################
|
|
# Build the image #
|
|
###################
|
|
docker build --no-cache -t "$IMAGE_REPO:$IMAGE_VERSION" -f "$DOCKERFILE_PATH" . 2>&1
|
|
|
|
#######################
|
|
# Load the error code #
|
|
#######################
|
|
ERROR_CODE=$?
|
|
|
|
##############################
|
|
# Check the shell for errors #
|
|
##############################
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
# ERROR
|
|
echo "ERROR! failed to [build] Dockerfile!"
|
|
exit 1
|
|
else
|
|
# SUCCESS
|
|
echo "Successfully Built image!"
|
|
echo "Info:[$BUILD_CMD]"
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function UploadImage ######################################################
|
|
UploadImage()
|
|
{
|
|
################
|
|
# Print header #
|
|
################
|
|
echo ""
|
|
echo "----------------------------------------------"
|
|
echo "Uploading the DockerFile image..."
|
|
echo "----------------------------------------------"
|
|
echo ""
|
|
|
|
############################################
|
|
# Upload the docker image that was created #
|
|
############################################
|
|
docker push "$IMAGE_REPO:$IMAGE_VERSION" 2>&1
|
|
|
|
#######################
|
|
# Load the error code #
|
|
#######################
|
|
ERROR_CODE=$?
|
|
|
|
##############################
|
|
# Check the shell for errors #
|
|
##############################
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
# ERROR
|
|
echo "ERROR! failed to [upload] Dockerfile!"
|
|
exit 1
|
|
else
|
|
# SUCCESS
|
|
echo "Successfully Uploaded Docker image to DockerHub!"
|
|
fi
|
|
|
|
#########################
|
|
# Get Image information #
|
|
#########################
|
|
IFS=$'\n' # Set the delimit to newline
|
|
GET_INFO_CMD=$(docker images | grep "$IMAGE_REPO" | grep "$IMAGE_VERSION" 2>&1)
|
|
|
|
#######################
|
|
# Load the error code #
|
|
#######################
|
|
ERROR_CODE=$?
|
|
|
|
##############################
|
|
# Check the shell for errors #
|
|
##############################
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
# ERROR
|
|
echo "ERROR! Failed to get information about built Image!"
|
|
echo "ERROR:[$GET_INFO_CMD]"
|
|
exit 1
|
|
else
|
|
################
|
|
# Get the data #
|
|
################
|
|
REPO=$(echo "$GET_INFO_CMD" | awk '{print $1}')
|
|
TAG=$(echo "$GET_INFO_CMD" | awk '{print $2}')
|
|
IMAGE_ID=$(echo "$GET_INFO_CMD" | awk '{print $3}')
|
|
# shellcheck disable=SC2116
|
|
SIZE=$(echo "${GET_INFO_CMD##* }")
|
|
|
|
###################
|
|
# Print the goods #
|
|
###################
|
|
echo "----------------------------------------------"
|
|
echo "Docker Image Details:"
|
|
echo "Repository:[$REPO]"
|
|
echo "Tag:[$TAG]"
|
|
echo "Image_ID:[$IMAGE_ID]"
|
|
echo "Size:[$SIZE]"
|
|
echo "----------------------------------------------"
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function Footer ###########################################################
|
|
Footer()
|
|
{
|
|
echo ""
|
|
echo "-------------------------------------------------------"
|
|
echo "The step has completed"
|
|
echo "-------------------------------------------------------"
|
|
echo ""
|
|
}
|
|
################################################################################
|
|
################################## MAIN ########################################
|
|
################################################################################
|
|
|
|
##########
|
|
# Header #
|
|
##########
|
|
Header
|
|
|
|
##################
|
|
# Validate Input #
|
|
##################
|
|
ValidateInput
|
|
|
|
######################
|
|
# Login to DockerHub #
|
|
######################
|
|
LoginToDocker
|
|
|
|
###################
|
|
# Build the image #
|
|
###################
|
|
BuildImage
|
|
|
|
####################
|
|
# Upload the image #
|
|
####################
|
|
UploadImage
|
|
|
|
##########
|
|
# Footer #
|
|
##########
|
|
Footer
|