mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-08-19 09:30:21 +00:00
ci: fix the remaining shellcheck findings and enable the check (#12367)
This commit is contained in:
@@ -48,10 +48,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
# -shellcheck= because the shell-quality findings are a separate backlog; this
|
# SC2129 only suggests grouping consecutive redirects. Restructuring release
|
||||||
# check is here for the schema, and mixing the two would make it unactionable.
|
# workflows for a formatting preference is not worth the risk.
|
||||||
- name: Run actionlint
|
- name: Run actionlint
|
||||||
|
env:
|
||||||
|
SHELLCHECK_OPTS: '-e SC2129'
|
||||||
run: |
|
run: |
|
||||||
docker run --rm -v "$PWD:/repo" --workdir /repo \
|
docker run --rm -v "$PWD:/repo" --workdir /repo -e SHELLCHECK_OPTS \
|
||||||
rhysd/actionlint:1.7.12@sha256:b1934ee5f1c509618f2508e6eb47ee0d3520686341fec936f3b79331f9315667 \
|
rhysd/actionlint:1.7.12@sha256:b1934ee5f1c509618f2508e6eb47ee0d3520686341fec936f3b79331f9315667 \
|
||||||
-color -shellcheck=
|
-color
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
run: |
|
run: |
|
||||||
echo "Removing 'status/awaiting-response' label from #$ISSUE_NUMBER"
|
echo "Removing 'status/awaiting-response' label from #$ISSUE_NUMBER"
|
||||||
gh api /repos/${{ github.repository }}/issues/$ISSUE_NUMBER/labels/status%2Fawaiting-response \
|
gh api "/repos/${{ github.repository }}/issues/$ISSUE_NUMBER/labels/status%2Fawaiting-response" \
|
||||||
-X DELETE
|
-X DELETE
|
||||||
|
|
||||||
- name: Add 'status/waiting-for-revision' label
|
- name: Add 'status/waiting-for-revision' label
|
||||||
@@ -41,6 +41,6 @@ jobs:
|
|||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
run: |
|
run: |
|
||||||
echo "Adding 'status/waiting-for-revision' label to #$ISSUE_NUMBER"
|
echo "Adding 'status/waiting-for-revision' label to #$ISSUE_NUMBER"
|
||||||
gh api /repos/${{ github.repository }}/issues/$ISSUE_NUMBER/labels \
|
gh api "/repos/${{ github.repository }}/issues/$ISSUE_NUMBER/labels" \
|
||||||
-X POST \
|
-X POST \
|
||||||
-f labels[]='status/waiting-for-revision'
|
-f labels[]='status/waiting-for-revision'
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
GITHUB_EVENT_RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|
GITHUB_EVENT_RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
run: echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u ${GITHUB_ACTOR} --password-stdin
|
run: echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u "${GITHUB_ACTOR}" --password-stdin
|
||||||
|
|
||||||
- name: Update chart dependencies
|
- name: Update chart dependencies
|
||||||
run: helm dependency update ${{ env.CHART_PATH }}
|
run: helm dependency update ${{ env.CHART_PATH }}
|
||||||
|
|||||||
@@ -129,7 +129,6 @@ jobs:
|
|||||||
handwritten_changelogs=""
|
handwritten_changelogs=""
|
||||||
|
|
||||||
all_changed=$(echo "${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n')
|
all_changed=$(echo "${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n')
|
||||||
added=$(echo "${STEPS_CHANGED_FILES_OUTPUTS_ADDED_FILES}" | tr ' ' '\n')
|
|
||||||
added_or_renamed=$(printf '%s\n%s' "${STEPS_CHANGED_FILES_OUTPUTS_ADDED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_RENAMED_FILES}" | tr ' ' '\n')
|
added_or_renamed=$(printf '%s\n%s' "${STEPS_CHANGED_FILES_OUTPUTS_ADDED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_RENAMED_FILES}" | tr ' ' '\n')
|
||||||
added_modified_or_renamed=$(printf '%s\n%s\n%s' "${STEPS_CHANGED_FILES_OUTPUTS_ADDED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_MODIFIED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_RENAMED_FILES}" | tr ' ' '\n')
|
added_modified_or_renamed=$(printf '%s\n%s\n%s' "${STEPS_CHANGED_FILES_OUTPUTS_ADDED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_MODIFIED_FILES}" "${STEPS_CHANGED_FILES_OUTPUTS_RENAMED_FILES}" | tr ' ' '\n')
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "$found_in" ]; then
|
if [ -n "$found_in" ]; then
|
||||||
found_in=$(echo "$found_in" | sed 's/, $//')
|
found_in="${found_in%, }"
|
||||||
MAPPED="${MAPPED}- \`${check_id}\` (\`${provider}\`): ${found_in}"$'\n'
|
MAPPED="${MAPPED}- \`${check_id}\` (\`${provider}\`): ${found_in}"$'\n'
|
||||||
else
|
else
|
||||||
UNMAPPED="${UNMAPPED}- \`${check_id}\` (\`${provider}\`)"$'\n'
|
UNMAPPED="${UNMAPPED}- \`${check_id}\` (\`${provider}\`)"$'\n'
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
|
|
||||||
echo "Prowler version: $PROWLER_VERSION"
|
echo "Prowler version: $PROWLER_VERSION"
|
||||||
echo "Branch name: $BRANCH_NAME"
|
echo "Branch name: $BRANCH_NAME"
|
||||||
echo "Is minor release: $([ $PATCH_VERSION -eq 0 ] && echo 'true' || echo 'false')"
|
echo "Is minor release: $([ "$PATCH_VERSION" -eq 0 ] && echo 'true' || echo 'false')"
|
||||||
else
|
else
|
||||||
echo "Invalid version syntax: '$PROWLER_VERSION' (must be N.N.N)" >&2
|
echo "Invalid version syntax: '$PROWLER_VERSION' (must be N.N.N)" >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -107,7 +107,8 @@ jobs:
|
|||||||
if [ -f "$changelog_file" ]; then
|
if [ -f "$changelog_file" ]; then
|
||||||
# Extract version that matches this Prowler release
|
# Extract version that matches this Prowler release
|
||||||
# Format: ## [version] (Prowler X.Y.Z) or ## [vversion] (Prowler vX.Y.Z)
|
# Format: ## [version] (Prowler X.Y.Z) or ## [vversion] (Prowler vX.Y.Z)
|
||||||
local version=$(grep '^## \[' "$changelog_file" | grep "(Prowler v\?${prowler_version})" | head -1 | sed 's/^## \[\(.*\)\].*/\1/' | sed 's/^v//' | tr -d '[:space:]')
|
local version
|
||||||
|
version=$(grep '^## \[' "$changelog_file" | grep "(Prowler v\?${prowler_version})" | head -1 | sed 's/^## \[\(.*\)\].*/\1/' | sed 's/^v//' | tr -d '[:space:]')
|
||||||
echo "$version"
|
echo "$version"
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
@@ -226,7 +227,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Combine changelogs in order: UI, API, SDK, MCP
|
# Combine changelogs in order: UI, API, SDK, MCP
|
||||||
> combined_changelog.md
|
: > combined_changelog.md
|
||||||
|
|
||||||
if [ "$HAS_UI_CHANGES" = "true" ] && [ -s "ui_changelog.md" ]; then
|
if [ "$HAS_UI_CHANGES" = "true" ] && [ -s "ui_changelog.md" ]; then
|
||||||
echo "## UI" >> combined_changelog.md
|
echo "## UI" >> combined_changelog.md
|
||||||
|
|||||||
@@ -216,7 +216,8 @@ jobs:
|
|||||||
elif [ -z "${STEPS_AWS_SERVICES_OUTPUTS_SERVICE_PATHS}" ]; then
|
elif [ -z "${STEPS_AWS_SERVICES_OUTPUTS_SERVICE_PATHS}" ]; then
|
||||||
echo "No AWS service paths detected; skipping AWS tests."
|
echo "No AWS service paths detected; skipping AWS tests."
|
||||||
else
|
else
|
||||||
uv run pytest -n auto --cov=./prowler/providers/aws --cov-report=xml:aws_coverage.xml ${STEPS_AWS_SERVICES_OUTPUTS_SERVICE_PATHS}
|
read -ra service_paths <<< "${STEPS_AWS_SERVICES_OUTPUTS_SERVICE_PATHS}"
|
||||||
|
uv run pytest -n auto --cov=./prowler/providers/aws --cov-report=xml:aws_coverage.xml "${service_paths[@]}"
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
STEPS_AWS_SERVICES_OUTPUTS_RUN_ALL: ${{ steps.aws-services.outputs.run_all }}
|
STEPS_AWS_SERVICES_OUTPUTS_RUN_ALL: ${{ steps.aws-services.outputs.run_all }}
|
||||||
|
|||||||
@@ -84,7 +84,8 @@ jobs:
|
|||||||
echo "Changed files:"
|
echo "Changed files:"
|
||||||
echo "${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n'
|
echo "${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n'
|
||||||
echo ""
|
echo ""
|
||||||
python .github/scripts/test-impact.py ${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}
|
read -ra changed <<< "${STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES}"
|
||||||
|
python .github/scripts/test-impact.py "${changed[@]}"
|
||||||
env:
|
env:
|
||||||
STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ jobs:
|
|||||||
yq -i '.services.worker.networks = ["kind","default"]' docker-compose.yml
|
yq -i '.services.worker.networks = ["kind","default"]' docker-compose.yml
|
||||||
|
|
||||||
- name: Fix API data directory permissions
|
- name: Fix API data directory permissions
|
||||||
run: docker run --rm -v $(pwd)/_data/api:/data alpine chown -R 1000:1000 /data
|
run: docker run --rm -v "$(pwd)/_data/api:/data" alpine chown -R 1000:1000 /data
|
||||||
|
|
||||||
- name: Add AWS credentials for testing
|
- name: Add AWS credentials for testing
|
||||||
run: |
|
run: |
|
||||||
@@ -267,7 +267,7 @@ jobs:
|
|||||||
timeout=150
|
timeout=150
|
||||||
elapsed=0
|
elapsed=0
|
||||||
while [ $elapsed -lt $timeout ]; do
|
while [ $elapsed -lt $timeout ]; do
|
||||||
if curl -s ${UI_API_BASE_URL}/docs >/dev/null 2>&1; then
|
if curl -s "${UI_API_BASE_URL}/docs" >/dev/null 2>&1; then
|
||||||
echo "Prowler API is ready!"
|
echo "Prowler API is ready!"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@@ -387,7 +387,8 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
TEST_PATHS=$(echo "$VALID_PATHS" | tr '\n' ' ')
|
TEST_PATHS=$(echo "$VALID_PATHS" | tr '\n' ' ')
|
||||||
echo "Resolved test paths: $TEST_PATHS"
|
echo "Resolved test paths: $TEST_PATHS"
|
||||||
pnpm exec playwright test $TEST_PATHS
|
read -ra test_paths <<< "$TEST_PATHS"
|
||||||
|
pnpm exec playwright test "${test_paths[@]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload test reports
|
- name: Upload test reports
|
||||||
|
|||||||
@@ -157,7 +157,8 @@ jobs:
|
|||||||
echo "${STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES}"
|
echo "${STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES}"
|
||||||
# Convert space-separated to vitest related format (remove ui/ prefix for relative paths)
|
# Convert space-separated to vitest related format (remove ui/ prefix for relative paths)
|
||||||
CHANGED_FILES=$(echo "${STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n' | sed 's|^ui/||' | tr '\n' ' ')
|
CHANGED_FILES=$(echo "${STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES}" | tr ' ' '\n' | sed 's|^ui/||' | tr '\n' ' ')
|
||||||
pnpm exec vitest related $CHANGED_FILES --run --project unit
|
read -ra changed <<< "$CHANGED_FILES"
|
||||||
|
pnpm exec vitest related "${changed[@]}" --run --project unit
|
||||||
env:
|
env:
|
||||||
STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES: ${{ steps.changed-source.outputs.all_changed_files }}
|
STEPS_CHANGED_SOURCE_OUTPUTS_ALL_CHANGED_FILES: ${{ steps.changed-source.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
|||||||
@@ -51,8 +51,8 @@ repos:
|
|||||||
rev: v1.7.12
|
rev: v1.7.12
|
||||||
hooks:
|
hooks:
|
||||||
- id: actionlint
|
- id: actionlint
|
||||||
# Shell-quality findings are a separate backlog; this hook is here for the schema.
|
# SC2129 only suggests grouping consecutive redirects; not worth restructuring for.
|
||||||
args: ['-shellcheck=']
|
args: ['-shellcheck=-e SC2129']
|
||||||
priority: 30
|
priority: 30
|
||||||
|
|
||||||
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Fix the remaining shellcheck findings in workflows and enable the check
|
||||||
Reference in New Issue
Block a user