mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-24 07:01:11 -05:00
Don't forcefully validate Git repos if not needed (#4953)
* Fix find when linting non-git repos * Remove uses * Move safe.directory config after we set GITHUB_WORKSPACE * Fix Git validation check * Move 'find' test runner to makefile * Validate vars before validating Git repo * Validate Git repo even when VALIDATE_ALL_CODEBASE=false * Initialize GITHUB_SHA when running locally * Initialize safe git dirs * Check git safe dirs error code * Fix log level color marker * Fix linting errors * Fix change dir command * Fix linting errors * Set default branch
This commit is contained in:
parent
9869638131
commit
7a21f934b4
6 changed files with 61 additions and 16 deletions
2
.github/workflows/cd.yml
vendored
2
.github/workflows/cd.yml
vendored
|
@ -100,6 +100,7 @@ jobs:
|
||||||
-e TEST_CASE_RUN=true \
|
-e TEST_CASE_RUN=true \
|
||||||
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e DEFAULT_BRANCH=main \
|
||||||
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-e TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json" \
|
-e TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json" \
|
||||||
|
@ -112,6 +113,7 @@ jobs:
|
||||||
-e RUN_LOCAL=true \
|
-e RUN_LOCAL=true \
|
||||||
-e OUTPUT_DETAILS=detailed \
|
-e OUTPUT_DETAILS=detailed \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e DEFAULT_BRANCH=main \
|
||||||
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
||||||
|
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -121,6 +121,7 @@ jobs:
|
||||||
-e TEST_CASE_RUN=true \
|
-e TEST_CASE_RUN=true \
|
||||||
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
-e ANSIBLE_DIRECTORY=.automation/test/ansible \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e DEFAULT_BRANCH=main \
|
||||||
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-e TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json" \
|
-e TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json" \
|
||||||
|
@ -132,6 +133,7 @@ jobs:
|
||||||
docker run \
|
docker run \
|
||||||
-e RUN_LOCAL=true \
|
-e RUN_LOCAL=true \
|
||||||
-e ACTIONS_RUNNER_DEBUG=true \
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e DEFAULT_BRANCH=main \
|
||||||
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
-e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json" \
|
||||||
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
-v "${GITHUB_WORKSPACE}:/tmp/lint" \
|
||||||
|
|
13
Makefile
13
Makefile
|
@ -4,7 +4,7 @@
|
||||||
all: info docker test ## Run all targets.
|
all: info docker test ## Run all targets.
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test: info validate-container-image-labels inspec ## Run tests
|
test: info validate-container-image-labels inspec test-find ## Run tests
|
||||||
|
|
||||||
# if this session isn't interactive, then we don't want to allocate a
|
# if this session isn't interactive, then we don't want to allocate a
|
||||||
# TTY, which would fail, but if it is interactive, we do want to attach
|
# TTY, which would fail, but if it is interactive, we do want to attach
|
||||||
|
@ -104,3 +104,14 @@ validate-container-image-labels: ## Validate container image labels
|
||||||
$(BUILD_DATE) \
|
$(BUILD_DATE) \
|
||||||
$(BUILD_REVISION) \
|
$(BUILD_REVISION) \
|
||||||
$(BUILD_VERSION)
|
$(BUILD_VERSION)
|
||||||
|
|
||||||
|
.phony: test-find
|
||||||
|
test-find: ## Run super-linter on a subdirectory with USE_FIND_ALGORITHM=true
|
||||||
|
docker run \
|
||||||
|
-e RUN_LOCAL=true \
|
||||||
|
-e ACTIONS_RUNNER_DEBUG=true \
|
||||||
|
-e ERROR_ON_MISSING_EXEC_BIT=true \
|
||||||
|
-e DEFAULT_BRANCH=main \
|
||||||
|
-e USE_FIND_ALGORITHM=true \
|
||||||
|
-v "$(CURDIR)/.github":/tmp/lint \
|
||||||
|
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||||
|
|
|
@ -54,7 +54,7 @@ export LOG_TEMP
|
||||||
log() {
|
log() {
|
||||||
local TOTERM=${1:-}
|
local TOTERM=${1:-}
|
||||||
local MESSAGE=${2:-}
|
local MESSAGE=${2:-}
|
||||||
local LOG_LEVEL_LABEL="[${3}]"
|
local LOG_LEVEL_LABEL="${3}"
|
||||||
|
|
||||||
local LOG_MESSAGE_DATE
|
local LOG_MESSAGE_DATE
|
||||||
LOG_MESSAGE_DATE="$(date +"%F %T")"
|
LOG_MESSAGE_DATE="$(date +"%F %T")"
|
||||||
|
@ -69,6 +69,8 @@ log() {
|
||||||
COLOR_MARKER="${F[R]}"
|
COLOR_MARKER="${F[R]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
LOG_LEVEL_LABEL="[${LOG_LEVEL_LABEL}]"
|
||||||
|
|
||||||
local COLORED_MESSAGE
|
local COLORED_MESSAGE
|
||||||
COLORED_MESSAGE="${NC}${LOG_MESSAGE_DATE} ${COLOR_MARKER}${LOG_LEVEL_LABEL}${NC} ${MESSAGE}${NC}"
|
COLORED_MESSAGE="${NC}${LOG_MESSAGE_DATE} ${COLOR_MARKER}${LOG_LEVEL_LABEL}${NC} ${MESSAGE}${NC}"
|
||||||
local MESSAGE_FOR_LOG_FILE
|
local MESSAGE_FOR_LOG_FILE
|
||||||
|
|
|
@ -235,6 +235,8 @@ function ValidateLocalGitRepository() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function ValidateGitShaReference() {
|
function ValidateGitShaReference() {
|
||||||
|
debug "Git HEAD: $(git -C "${GITHUB_WORKSPACE}" show HEAD --stat)"
|
||||||
|
|
||||||
debug "Validate that the GITHUB_SHA reference (${GITHUB_SHA}) exists in this Git repository."
|
debug "Validate that the GITHUB_SHA reference (${GITHUB_SHA}) exists in this Git repository."
|
||||||
if ! git -C "${GITHUB_WORKSPACE}" cat-file -e "${GITHUB_SHA}"; then
|
if ! git -C "${GITHUB_WORKSPACE}" cat-file -e "${GITHUB_SHA}"; then
|
||||||
fatal "The GITHUB_SHA reference (${GITHUB_SHA}) doesn't exist in this Git repository"
|
fatal "The GITHUB_SHA reference (${GITHUB_SHA}) doesn't exist in this Git repository"
|
||||||
|
|
|
@ -375,7 +375,8 @@ debug "IGNORE_GENERATED_FILES: ${IGNORE_GENERATED_FILES}"
|
||||||
# Default Vars #
|
# Default Vars #
|
||||||
################
|
################
|
||||||
DEFAULT_VALIDATE_ALL_CODEBASE='true' # Default value for validate all files
|
DEFAULT_VALIDATE_ALL_CODEBASE='true' # Default value for validate all files
|
||||||
DEFAULT_WORKSPACE="${DEFAULT_WORKSPACE:-/tmp/lint}" # Default workspace if running locally
|
DEFAULT_SUPER_LINTER_WORKSPACE="/tmp/lint" # Fall-back value for the workspace
|
||||||
|
DEFAULT_WORKSPACE="${DEFAULT_WORKSPACE:-${DEFAULT_SUPER_LINTER_WORKSPACE}}" # Default workspace if running locally
|
||||||
DEFAULT_RUN_LOCAL='false' # Default value for debugging locally
|
DEFAULT_RUN_LOCAL='false' # Default value for debugging locally
|
||||||
DEFAULT_TEST_CASE_RUN='false' # Flag to tell code to run only test cases
|
DEFAULT_TEST_CASE_RUN='false' # Flag to tell code to run only test cases
|
||||||
|
|
||||||
|
@ -443,6 +444,18 @@ Header() {
|
||||||
info " - https://github.com/super-linter/super-linter"
|
info " - https://github.com/super-linter/super-linter"
|
||||||
info "---------------------------------------------"
|
info "---------------------------------------------"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigureGitSafeDirectories() {
|
||||||
|
debug "Configuring Git safe directories"
|
||||||
|
declare -a git_safe_directories=("${GITHUB_WORKSPACE}" "${DEFAULT_SUPER_LINTER_WORKSPACE}" "${DEFAULT_WORKSPACE}")
|
||||||
|
for safe_directory in "${git_safe_directories[@]}"; do
|
||||||
|
debug "Set ${safe_directory} as a Git safe directory"
|
||||||
|
if ! git config --global --add safe.directory "${safe_directory}"; then
|
||||||
|
fatal "Cannot configure ${safe_directory} as a Git safe directory."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#### Function GetGitHubVars ####################################################
|
#### Function GetGitHubVars ####################################################
|
||||||
GetGitHubVars() {
|
GetGitHubVars() {
|
||||||
|
@ -453,7 +466,7 @@ GetGitHubVars() {
|
||||||
info "Gathering GitHub information..."
|
info "Gathering GitHub information..."
|
||||||
|
|
||||||
if [[ ${RUN_LOCAL} != "false" ]]; then
|
if [[ ${RUN_LOCAL} != "false" ]]; then
|
||||||
info "RUN_LOCAL has been set to:[${RUN_LOCAL}]. Bypassing GitHub Actions variables..."
|
info "RUN_LOCAL has been set to: ${RUN_LOCAL}. Bypassing GitHub Actions variables..."
|
||||||
|
|
||||||
if [ -z "${GITHUB_WORKSPACE}" ]; then
|
if [ -z "${GITHUB_WORKSPACE}" ]; then
|
||||||
GITHUB_WORKSPACE="${DEFAULT_WORKSPACE}"
|
GITHUB_WORKSPACE="${DEFAULT_WORKSPACE}"
|
||||||
|
@ -463,11 +476,24 @@ GetGitHubVars() {
|
||||||
fatal "Provided volume is not a directory!"
|
fatal "Provided volume is not a directory!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Linting all files in mapped directory:[${GITHUB_WORKSPACE}]"
|
|
||||||
|
|
||||||
pushd "${GITHUB_WORKSPACE}" >/dev/null || exit 1
|
pushd "${GITHUB_WORKSPACE}" >/dev/null || exit 1
|
||||||
|
|
||||||
VALIDATE_ALL_CODEBASE="${DEFAULT_VALIDATE_ALL_CODEBASE}"
|
VALIDATE_ALL_CODEBASE="${DEFAULT_VALIDATE_ALL_CODEBASE}"
|
||||||
|
info "Linting all files in mapped directory: ${GITHUB_WORKSPACE}. Setting VALIDATE_ALL_CODEBASE to: ${VALIDATE_ALL_CODEBASE}"
|
||||||
|
|
||||||
|
if [[ "${USE_FIND_ALGORITHM}" == "false" ]]; then
|
||||||
|
ConfigureGitSafeDirectories
|
||||||
|
debug "Initializing GITHUB_SHA considering ${GITHUB_WORKSPACE}"
|
||||||
|
GITHUB_SHA=$(git -C "${GITHUB_WORKSPACE}" rev-parse HEAD)
|
||||||
|
ERROR_CODE=$?
|
||||||
|
debug "GITHUB_SHA initalization return code: ${ERROR_CODE}"
|
||||||
|
if [ ${ERROR_CODE} -ne 0 ]; then
|
||||||
|
fatal "Failed to initialize GITHUB_SHA. Output: ${GITHUB_SHA}"
|
||||||
|
fi
|
||||||
|
debug "GITHUB_SHA: ${GITHUB_SHA}"
|
||||||
|
else
|
||||||
|
debug "Skip the initalization of GITHUB_SHA because we don't need it"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
if [ -z "${GITHUB_WORKSPACE}" ]; then
|
if [ -z "${GITHUB_WORKSPACE}" ]; then
|
||||||
error "Failed to get [GITHUB_WORKSPACE]!"
|
error "Failed to get [GITHUB_WORKSPACE]!"
|
||||||
|
@ -817,10 +843,6 @@ UpdateLoopsForImage
|
||||||
##################################
|
##################################
|
||||||
GetLinterVersions
|
GetLinterVersions
|
||||||
|
|
||||||
debug "Allow Git to work on ${GITHUB_WORKSPACE}"
|
|
||||||
git config --global --add safe.directory "${GITHUB_WORKSPACE}" 2>&1
|
|
||||||
git config --global --add safe.directory "/tmp/lint" 2>&1
|
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Get GitHub Env Vars #
|
# Get GitHub Env Vars #
|
||||||
#######################
|
#######################
|
||||||
|
@ -828,6 +850,10 @@ git config --global --add safe.directory "/tmp/lint" 2>&1
|
||||||
# needed to connect back and update checks
|
# needed to connect back and update checks
|
||||||
GetGitHubVars
|
GetGitHubVars
|
||||||
|
|
||||||
|
# Ensure that Git safe directories are configured because we don't do this in
|
||||||
|
# all cases when initializing variables
|
||||||
|
ConfigureGitSafeDirectories
|
||||||
|
|
||||||
########################################################
|
########################################################
|
||||||
# Initialize variables that depend on GitHub variables #
|
# Initialize variables that depend on GitHub variables #
|
||||||
########################################################
|
########################################################
|
||||||
|
@ -842,7 +868,9 @@ debug "TYPESCRIPT_STANDARD_TSCONFIG_FILE: ${TYPESCRIPT_STANDARD_TSCONFIG_FILE}"
|
||||||
############################
|
############################
|
||||||
# Validate the environment #
|
# Validate the environment #
|
||||||
############################
|
############################
|
||||||
if [[ "${USE_FIND_ALGORITHM}" != "false" ]] || [[ "${VALIDATE_ALL_CODEBASE}" != "true" ]]; then
|
GetValidationInfo
|
||||||
|
|
||||||
|
if [[ "${USE_FIND_ALGORITHM}" == "false" ]]; then
|
||||||
debug "Validate the local Git environment"
|
debug "Validate the local Git environment"
|
||||||
ValidateLocalGitRepository
|
ValidateLocalGitRepository
|
||||||
ValidateGitShaReference
|
ValidateGitShaReference
|
||||||
|
@ -851,8 +879,6 @@ else
|
||||||
debug "Skipped the validation of the local Git environment because we don't depend on it."
|
debug "Skipped the validation of the local Git environment because we don't depend on it."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
GetValidationInfo
|
|
||||||
|
|
||||||
#################################
|
#################################
|
||||||
# Get the linter rules location #
|
# Get the linter rules location #
|
||||||
#################################
|
#################################
|
||||||
|
|
Loading…
Reference in a new issue