mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-29 09:30:58 -05:00
ab24b82199
* Adding action lint * adding tests * adding tests * Update Dockerfile Co-authored-by: Masaya Suzuki <15100604+massongit@users.noreply.github.com> * cleanup name * fix test * typo * fix file name * fix our own errors * more cleanup * angry * make it happy * stop double jobs Co-authored-by: Masaya Suzuki <15100604+massongit@users.noreply.github.com>
211 lines
6.5 KiB
Bash
Executable file
211 lines
6.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
################################################################################
|
|
############# Update the actions.yml with version @admiralawkbar ###############
|
|
################################################################################
|
|
|
|
############
|
|
# Defaults #
|
|
############\
|
|
ACTION_FILE='action.yml' # Action file to update
|
|
COMMIT_SHA='' # Commit sha when PR is created
|
|
PR_ID='' # Pull Request NUmber when generated
|
|
VERSION='' # Version of release pulled from api
|
|
|
|
################################################################################
|
|
############################ FUNCTIONS BELOW ###################################
|
|
################################################################################
|
|
################################################################################
|
|
#### Function Header ###########################################################
|
|
Header() {
|
|
echo "-------------------------------------------------------"
|
|
echo "----------- GitHub Update Release Version -------------"
|
|
echo "-------------------------------------------------------"
|
|
}
|
|
################################################################################
|
|
#### Function GetReleaseVersion #########################################
|
|
GetReleaseVersion() {
|
|
echo "-------------------------------------------------------"
|
|
echo "Getting the latest Release version from GitHub ..."
|
|
|
|
# Get the latest release on the Repository
|
|
GET_VERSION_CMD="$(echo "${RELEASE_NAME}" | grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" 2>&1)"
|
|
|
|
# Load the error code
|
|
ERROR_CODE=$?
|
|
|
|
# Check the shell for errors
|
|
if [ "${ERROR_CODE}" -ne 0 ] || [ ${#GET_VERSION_CMD} -lt 1 ]; then
|
|
# Error
|
|
echo "ERROR! Failed to get the version!"
|
|
echo "ERROR:[${GET_VERSION_CMD}]"
|
|
exit 1
|
|
else
|
|
# Success
|
|
echo "Latest Version:[${GET_VERSION_CMD}]"
|
|
fi
|
|
|
|
# Set the version
|
|
VERSION=${GET_VERSION_CMD}
|
|
}
|
|
################################################################################
|
|
#### Function UpdateActionFile #################################################
|
|
UpdateActionFile() {
|
|
echo "-------------------------------------------------------"
|
|
echo "Updating the File:[$ACTION_FILE] with Version:[$VERSION]..."
|
|
|
|
# Validate we can see the file
|
|
if [ ! -f "${ACTION_FILE}" ]; then
|
|
# ERROR
|
|
echo "ERROR! Failed to find the file:[${ACTION_FILE}]"
|
|
exit 1
|
|
fi
|
|
|
|
# Update the file
|
|
UPDATE_CMD=$(sed -i "s|image:.*|image: 'docker://ghcr.io/github/super-linter:${VERSION}'|" "${ACTION_FILE}" 2>&1)
|
|
|
|
# Load the error code
|
|
ERROR_CODE=$?
|
|
|
|
# Check the shell for errors
|
|
if [ "${ERROR_CODE}" -ne 0 ]; then
|
|
# Failed to update file
|
|
echo "ERROR! Failed to update ${ACTION_FILE}!"
|
|
echo "ERROR:[${UPDATE_CMD}]"
|
|
exit 1
|
|
else
|
|
echo "Successfully updated file to:"
|
|
cat "${ACTION_FILE}"
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function CommitAndPush ####################################################
|
|
CommitAndPush() {
|
|
echo "-------------------------------------------------------"
|
|
echo "Creating commit, and pushing to PR..."
|
|
|
|
# Commit the code to GitHub
|
|
COMMIT_CMD=$(
|
|
git checkout -b "Automation-Release-${VERSION}"
|
|
git add "${ACTION_FILE}"
|
|
git config --global user.name "SuperLinter Automation"
|
|
git config --global user.email "super_linter_automation@github.com"
|
|
git commit -m "Updating action.yml with new release 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 make commit!"
|
|
echo "ERROR:[$COMMIT_CMD]"
|
|
exit 1
|
|
else
|
|
echo "Successfully staged commmit"
|
|
fi
|
|
|
|
echo "-------------------------------------------------------"
|
|
# Push the code to the branch and create PR
|
|
PUSH_CMD=$(
|
|
git push --set-upstream origin "Automation-Release-${VERSION}"
|
|
gh pr create --title "Release-update-to-${VERSION}" --body "Automation Upgrade version ${VERSION} to action.yml" 2>&1
|
|
)
|
|
|
|
# Load the error code
|
|
ERROR_CODE=$?
|
|
|
|
# Check the shell for errors
|
|
if [ "${ERROR_CODE}" -ne 0 ]; then
|
|
# ERROR
|
|
echo "ERROR! Failed to create PR!"
|
|
echo "ERROR:[$PUSH_CMD]"
|
|
exit 1
|
|
else
|
|
echo "Successfully Created PR"
|
|
fi
|
|
|
|
# Get the pr number
|
|
for LINE in $PUSH_CMD; do
|
|
# echo "Line:[${LINE}]"
|
|
if [[ "${LINE}" == *"github.com"* ]]; then
|
|
# Getting the PR id
|
|
PR_ID=$(echo "${LINE}" | rev | cut -d'/' -f1 | rev)
|
|
fi
|
|
done
|
|
|
|
# get the current commit sha
|
|
COMMIT_SHA=$(git rev-parse HEAD 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 comit sha!"
|
|
echo "ERROR:[$COMMIT_SHA]"
|
|
exit 1
|
|
else
|
|
echo "Successfully grabbed commit sha"
|
|
fi
|
|
|
|
}
|
|
|
|
################################################################################
|
|
#### Function SetActionsVariables ##############################################
|
|
SetActionsVariables() {
|
|
# Set the variables back to Actions
|
|
echo "-------------------------------------------------------"
|
|
echo "Setting the variables back to GitHub Actions..."
|
|
|
|
echo "Setting RELEASE_VERSION:[${VERSION}]"
|
|
echo "RELEASE_VERSION=${VERSION}" >>"${GITHUB_ENV}"
|
|
|
|
echo "Setting PR_ID:[${PR_ID}]"
|
|
echo "PR_ID=${PR_ID}" >>"${GITHUB_ENV}"
|
|
|
|
echo "Setting COMMIT_SHA:[${COMMIT_SHA}]"
|
|
echo "COMMIT_SHA=${COMMIT_SHA}" >>"${GITHUB_ENV}"
|
|
}
|
|
################################################################################
|
|
#### Function Footer ###########################################################
|
|
Footer() {
|
|
echo "-------------------------------------------------------"
|
|
echo "The step has completed"
|
|
echo "-------------------------------------------------------"
|
|
}
|
|
################################################################################
|
|
################################## MAIN ########################################
|
|
################################################################################
|
|
|
|
##########
|
|
# Header #
|
|
##########
|
|
Header
|
|
|
|
##########################
|
|
# Get the latest version #
|
|
##########################
|
|
GetReleaseVersion
|
|
|
|
##########################
|
|
# Update the action file #
|
|
##########################
|
|
UpdateActionFile
|
|
|
|
########################
|
|
# Commit and push file #
|
|
########################
|
|
CommitAndPush
|
|
|
|
#####################################
|
|
# Set the variables back to Actions #
|
|
#####################################
|
|
SetActionsVariables
|
|
|
|
##########
|
|
# Footer #
|
|
##########
|
|
Footer
|