diff --git a/.github/workflows/api-container-build-push.yml b/.github/workflows/api-container-build-push.yml index 0bbc92606c..a5fa72be7e 100644 --- a/.github/workflows/api-container-build-push.yml +++ b/.github/workflows/api-container-build-push.yml @@ -210,9 +210,9 @@ jobs: run: | docker buildx imagetools create \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.LATEST_TAG }} \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -220,10 +220,10 @@ jobs: if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' run: | docker buildx imagetools create \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG} \ + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG}" \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.STABLE_TAG }} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -263,9 +263,9 @@ jobs: id: outcome run: | if [[ "${NEEDS_CONTAINER_BUILD_PUSH_RESULT}" == "success" && "${NEEDS_CREATE_MANIFEST_RESULT}" == "success" ]]; then - echo "outcome=success" >> $GITHUB_OUTPUT + echo "outcome=success" >> "$GITHUB_OUTPUT" else - echo "outcome=failure" >> $GITHUB_OUTPUT + echo "outcome=failure" >> "$GITHUB_OUTPUT" fi env: NEEDS_CONTAINER_BUILD_PUSH_RESULT: ${{ needs.container-build-push.result }} diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 01f5abcebc..3e78e6b533 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -85,10 +85,10 @@ jobs: # Check if author is in the org members list if printf '%s\n' "${ORG_MEMBERS[@]}" | grep -q "^${AUTHOR}$"; then - echo "is_member=true" >> $GITHUB_OUTPUT + echo "is_member=true" >> "$GITHUB_OUTPUT" echo "$AUTHOR is an organization member" else - echo "is_member=false" >> $GITHUB_OUTPUT + echo "is_member=false" >> "$GITHUB_OUTPUT" echo "$AUTHOR is not an organization member" fi diff --git a/.github/workflows/mcp-container-build-push.yml b/.github/workflows/mcp-container-build-push.yml index 13cd7eed91..a5116d63be 100644 --- a/.github/workflows/mcp-container-build-push.yml +++ b/.github/workflows/mcp-container-build-push.yml @@ -193,9 +193,9 @@ jobs: run: | docker buildx imagetools create \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.LATEST_TAG }} \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -203,10 +203,10 @@ jobs: if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' run: | docker buildx imagetools create \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG} \ + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG}" \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.STABLE_TAG }} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -246,9 +246,9 @@ jobs: id: outcome run: | if [[ "${NEEDS_CONTAINER_BUILD_PUSH_RESULT}" == "success" && "${NEEDS_CREATE_MANIFEST_RESULT}" == "success" ]]; then - echo "outcome=success" >> $GITHUB_OUTPUT + echo "outcome=success" >> "$GITHUB_OUTPUT" else - echo "outcome=failure" >> $GITHUB_OUTPUT + echo "outcome=failure" >> "$GITHUB_OUTPUT" fi env: NEEDS_CONTAINER_BUILD_PUSH_RESULT: ${{ needs.container-build-push.result }} diff --git a/.github/workflows/pr-conflict-checker.yml b/.github/workflows/pr-conflict-checker.yml index fafddf9840..5887e1a6ef 100644 --- a/.github/workflows/pr-conflict-checker.yml +++ b/.github/workflows/pr-conflict-checker.yml @@ -74,15 +74,15 @@ jobs: done <<< "$STEPS_CHANGED_FILES_OUTPUTS_ALL_CHANGED_FILES" if [ "$HAS_CONFLICTS" = true ]; then - echo "has_conflicts=true" >> $GITHUB_OUTPUT + echo "has_conflicts=true" >> "$GITHUB_OUTPUT" { echo "conflict_files<> $GITHUB_OUTPUT + } >> "$GITHUB_OUTPUT" echo "Conflict markers detected" else - echo "has_conflicts=false" >> $GITHUB_OUTPUT + echo "has_conflicts=false" >> "$GITHUB_OUTPUT" echo "No conflict markers found in changed files" fi env: diff --git a/.github/workflows/pr-merged.yml b/.github/workflows/pr-merged.yml index e35bf558c8..756224f3bf 100644 --- a/.github/workflows/pr-merged.yml +++ b/.github/workflows/pr-merged.yml @@ -36,7 +36,7 @@ jobs: id: vars run: | SHORT_SHA="${GITHUB_EVENT_PULL_REQUEST_MERGE_COMMIT_SHA}" - echo "short_sha=${SHORT_SHA::7}" >> $GITHUB_OUTPUT + echo "short_sha=${SHORT_SHA::7}" >> "$GITHUB_OUTPUT" env: GITHUB_EVENT_PULL_REQUEST_MERGE_COMMIT_SHA: ${{ github.event.pull_request.merge_commit_sha }} diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index ff4df87b59..f367ac8cb4 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -178,48 +178,48 @@ jobs: # Determine if components have changes for this specific release if [ -n "$SDK_VERSION" ]; then - echo "HAS_SDK_CHANGES=true" >> $GITHUB_ENV + echo "HAS_SDK_CHANGES=true" >> "$GITHUB_ENV" HAS_SDK_CHANGES="true" echo "✓ SDK changes detected - version: $SDK_VERSION" extract_changelog "prowler/CHANGELOG.md" "$SDK_VERSION" "prowler_changelog.md" else - echo "HAS_SDK_CHANGES=false" >> $GITHUB_ENV + echo "HAS_SDK_CHANGES=false" >> "$GITHUB_ENV" HAS_SDK_CHANGES="false" echo "ℹ No SDK changes for this release" touch "prowler_changelog.md" fi if [ -n "$API_VERSION" ]; then - echo "HAS_API_CHANGES=true" >> $GITHUB_ENV + echo "HAS_API_CHANGES=true" >> "$GITHUB_ENV" HAS_API_CHANGES="true" echo "✓ API changes detected - version: $API_VERSION" extract_changelog "api/CHANGELOG.md" "$API_VERSION" "api_changelog.md" else - echo "HAS_API_CHANGES=false" >> $GITHUB_ENV + echo "HAS_API_CHANGES=false" >> "$GITHUB_ENV" HAS_API_CHANGES="false" echo "ℹ No API changes for this release" touch "api_changelog.md" fi if [ -n "$UI_VERSION" ]; then - echo "HAS_UI_CHANGES=true" >> $GITHUB_ENV + echo "HAS_UI_CHANGES=true" >> "$GITHUB_ENV" HAS_UI_CHANGES="true" echo "✓ UI changes detected - version: $UI_VERSION" extract_changelog "ui/CHANGELOG.md" "$UI_VERSION" "ui_changelog.md" else - echo "HAS_UI_CHANGES=false" >> $GITHUB_ENV + echo "HAS_UI_CHANGES=false" >> "$GITHUB_ENV" HAS_UI_CHANGES="false" echo "ℹ No UI changes for this release" touch "ui_changelog.md" fi if [ -n "$MCP_VERSION" ]; then - echo "HAS_MCP_CHANGES=true" >> $GITHUB_ENV + echo "HAS_MCP_CHANGES=true" >> "$GITHUB_ENV" HAS_MCP_CHANGES="true" echo "✓ MCP changes detected - version: $MCP_VERSION" extract_changelog "mcp_server/CHANGELOG.md" "$MCP_VERSION" "mcp_changelog.md" else - echo "HAS_MCP_CHANGES=false" >> $GITHUB_ENV + echo "HAS_MCP_CHANGES=false" >> "$GITHUB_ENV" HAS_MCP_CHANGES="false" echo "ℹ No MCP changes for this release" touch "mcp_changelog.md" diff --git a/.github/workflows/sdk-container-build-push.yml b/.github/workflows/sdk-container-build-push.yml index c08a685c7f..77a91a8269 100644 --- a/.github/workflows/sdk-container-build-push.yml +++ b/.github/workflows/sdk-container-build-push.yml @@ -265,10 +265,10 @@ jobs: if: github.event_name == 'push' run: | docker buildx imagetools create \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG} \ - -t ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-arm64 + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}" \ + -t "${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-arm64" env: NEEDS_SETUP_OUTPUTS_LATEST_TAG: ${{ needs.setup.outputs.latest_tag }} @@ -276,12 +276,12 @@ jobs: if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' run: | docker buildx imagetools create \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION} \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_STABLE_TAG} \ - -t ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.IMAGE_NAME }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION} \ - -t ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.IMAGE_NAME }}:${NEEDS_SETUP_OUTPUTS_STABLE_TAG} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-arm64 + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION}" \ + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_STABLE_TAG}" \ + -t "${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.IMAGE_NAME }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION}" \ + -t "${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.IMAGE_NAME }}:${NEEDS_SETUP_OUTPUTS_STABLE_TAG}" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_LATEST_TAG}-arm64" env: NEEDS_SETUP_OUTPUTS_PROWLER_VERSION: ${{ needs.setup.outputs.prowler_version }} NEEDS_SETUP_OUTPUTS_STABLE_TAG: ${{ needs.setup.outputs.stable_tag }} @@ -306,7 +306,7 @@ jobs: if: needs.setup.outputs.latest_tag == 'latest' && (github.event_name == 'release' || github.event_name == 'workflow_dispatch') run: | docker buildx imagetools create \ - -t ${{ env.TONIBLYX_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION} \ + -t "${{ env.TONIBLYX_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_PROWLER_VERSION}" \ -t ${{ env.TONIBLYX_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:stable \ ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:stable env: @@ -356,9 +356,9 @@ jobs: id: outcome run: | if [[ "${NEEDS_CONTAINER_BUILD_PUSH_RESULT}" == "success" && "${NEEDS_CREATE_MANIFEST_RESULT}" == "success" ]]; then - echo "outcome=success" >> $GITHUB_OUTPUT + echo "outcome=success" >> "$GITHUB_OUTPUT" else - echo "outcome=failure" >> $GITHUB_OUTPUT + echo "outcome=failure" >> "$GITHUB_OUTPUT" fi env: NEEDS_CONTAINER_BUILD_PUSH_RESULT: ${{ needs.container-build-push.result }} diff --git a/.github/workflows/test-impact-analysis.yml b/.github/workflows/test-impact-analysis.yml index 07bb920f66..db12e74e00 100644 --- a/.github/workflows/test-impact-analysis.yml +++ b/.github/workflows/test-impact-analysis.yml @@ -92,21 +92,21 @@ jobs: id: set-flags run: | if [[ -n "${STEPS_IMPACT_OUTPUTS_SDK_TESTS}" ]]; then - echo "has-sdk-tests=true" >> $GITHUB_OUTPUT + echo "has-sdk-tests=true" >> "$GITHUB_OUTPUT" else - echo "has-sdk-tests=false" >> $GITHUB_OUTPUT + echo "has-sdk-tests=false" >> "$GITHUB_OUTPUT" fi if [[ -n "${STEPS_IMPACT_OUTPUTS_API_TESTS}" ]]; then - echo "has-api-tests=true" >> $GITHUB_OUTPUT + echo "has-api-tests=true" >> "$GITHUB_OUTPUT" else - echo "has-api-tests=false" >> $GITHUB_OUTPUT + echo "has-api-tests=false" >> "$GITHUB_OUTPUT" fi if [[ -n "${STEPS_IMPACT_OUTPUTS_UI_E2E}" ]]; then - echo "has-ui-e2e=true" >> $GITHUB_OUTPUT + echo "has-ui-e2e=true" >> "$GITHUB_OUTPUT" else - echo "has-ui-e2e=false" >> $GITHUB_OUTPUT + echo "has-ui-e2e=false" >> "$GITHUB_OUTPUT" fi env: STEPS_IMPACT_OUTPUTS_SDK_TESTS: ${{ steps.impact.outputs.sdk-tests }} @@ -115,22 +115,22 @@ jobs: - name: Summary run: | - echo "## Test Impact Analysis" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY + echo "## Test Impact Analysis" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" if [[ "${STEPS_IMPACT_OUTPUTS_RUN_ALL}" == "true" ]]; then - echo "🚨 **Critical path changed - running ALL tests**" >> $GITHUB_STEP_SUMMARY + echo "🚨 **Critical path changed - running ALL tests**" >> "$GITHUB_STEP_SUMMARY" else - echo "### Affected Modules" >> $GITHUB_STEP_SUMMARY - echo "\`${STEPS_IMPACT_OUTPUTS_MODULES}\`" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY + echo "### Affected Modules" >> "$GITHUB_STEP_SUMMARY" + echo "\`${STEPS_IMPACT_OUTPUTS_MODULES}\`" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" - echo "### Tests to Run" >> $GITHUB_STEP_SUMMARY - echo "| Category | Paths |" >> $GITHUB_STEP_SUMMARY - echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY - echo "| SDK Tests | \`${STEPS_IMPACT_OUTPUTS_SDK_TESTS:-none}\` |" >> $GITHUB_STEP_SUMMARY - echo "| API Tests | \`${STEPS_IMPACT_OUTPUTS_API_TESTS:-none}\` |" >> $GITHUB_STEP_SUMMARY - echo "| UI E2E | \`${STEPS_IMPACT_OUTPUTS_UI_E2E:-none}\` |" >> $GITHUB_STEP_SUMMARY + echo "### Tests to Run" >> "$GITHUB_STEP_SUMMARY" + echo "| Category | Paths |" >> "$GITHUB_STEP_SUMMARY" + echo "|----------|-------|" >> "$GITHUB_STEP_SUMMARY" + echo "| SDK Tests | \`${STEPS_IMPACT_OUTPUTS_SDK_TESTS:-none}\` |" >> "$GITHUB_STEP_SUMMARY" + echo "| API Tests | \`${STEPS_IMPACT_OUTPUTS_API_TESTS:-none}\` |" >> "$GITHUB_STEP_SUMMARY" + echo "| UI E2E | \`${STEPS_IMPACT_OUTPUTS_UI_E2E:-none}\` |" >> "$GITHUB_STEP_SUMMARY" fi env: diff --git a/.github/workflows/ui-container-build-push.yml b/.github/workflows/ui-container-build-push.yml index 8042371fda..6ba5537ac0 100644 --- a/.github/workflows/ui-container-build-push.yml +++ b/.github/workflows/ui-container-build-push.yml @@ -196,9 +196,9 @@ jobs: run: | docker buildx imagetools create \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.LATEST_TAG }} \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -206,10 +206,10 @@ jobs: if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' run: | docker buildx imagetools create \ - -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG} \ + -t "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${RELEASE_TAG}" \ -t ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.STABLE_TAG }} \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64 \ - ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64 + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-amd64" \ + "${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${NEEDS_SETUP_OUTPUTS_SHORT_SHA}-arm64" env: NEEDS_SETUP_OUTPUTS_SHORT_SHA: ${{ needs.setup.outputs.short-sha }} @@ -249,9 +249,9 @@ jobs: id: outcome run: | if [[ "${NEEDS_CONTAINER_BUILD_PUSH_RESULT}" == "success" && "${NEEDS_CREATE_MANIFEST_RESULT}" == "success" ]]; then - echo "outcome=success" >> $GITHUB_OUTPUT + echo "outcome=success" >> "$GITHUB_OUTPUT" else - echo "outcome=failure" >> $GITHUB_OUTPUT + echo "outcome=failure" >> "$GITHUB_OUTPUT" fi env: NEEDS_CONTAINER_BUILD_PUSH_RESULT: ${{ needs.container-build-push.result }} diff --git a/.github/workflows/ui-e2e-tests-v2.yml b/.github/workflows/ui-e2e-tests-v2.yml index 6fe4f480af..d047cd5616 100644 --- a/.github/workflows/ui-e2e-tests-v2.yml +++ b/.github/workflows/ui-e2e-tests-v2.yml @@ -108,14 +108,14 @@ jobs: - name: Show test scope run: | - echo "## E2E Test Scope" >> $GITHUB_STEP_SUMMARY + echo "## E2E Test Scope" >> "$GITHUB_STEP_SUMMARY" if [[ "${RUN_ALL_TESTS}" == "true" ]]; then - echo "Running **ALL** E2E tests (critical path changed)" >> $GITHUB_STEP_SUMMARY + echo "Running **ALL** E2E tests (critical path changed)" >> "$GITHUB_STEP_SUMMARY" else - echo "Running tests matching: \`${E2E_TEST_PATHS}\`" >> $GITHUB_STEP_SUMMARY + echo "Running tests matching: \`${E2E_TEST_PATHS}\`" >> "$GITHUB_STEP_SUMMARY" fi echo "" - echo "Affected modules: \`${NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES}\`" >> $GITHUB_STEP_SUMMARY + echo "Affected modules: \`${NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES}\`" >> "$GITHUB_STEP_SUMMARY" env: NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES: ${{ needs.impact-analysis.outputs.modules }} @@ -301,7 +301,7 @@ jobs: run_install: false - name: Get pnpm store directory - run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" - name: Setup pnpm and Next.js cache uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 @@ -444,12 +444,12 @@ jobs: - name: No E2E tests needed run: | - echo "## E2E Tests Skipped" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "No UI E2E tests needed for this change." >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "Affected modules: \`${NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES}\`" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "To run all tests, modify a file in a critical path (e.g., \`ui/lib/**\`)." >> $GITHUB_STEP_SUMMARY + echo "## E2E Tests Skipped" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "No UI E2E tests needed for this change." >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "Affected modules: \`${NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES}\`" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "To run all tests, modify a file in a critical path (e.g., \`ui/lib/**\`)." >> "$GITHUB_STEP_SUMMARY" env: NEEDS_IMPACT_ANALYSIS_OUTPUTS_MODULES: ${{ needs.impact-analysis.outputs.modules }} diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index 42730fde1b..88a7e509c5 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -113,7 +113,7 @@ jobs: - name: Get pnpm store directory if: steps.check-changes.outputs.any_changed == 'true' shell: bash - run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" - name: Setup pnpm and Next.js cache if: steps.check-changes.outputs.any_changed == 'true' diff --git a/prowler/changelog.d/shellcheck-workflow-quoting.changed.md b/prowler/changelog.d/shellcheck-workflow-quoting.changed.md new file mode 100644 index 0000000000..48ee6c9e71 --- /dev/null +++ b/prowler/changelog.d/shellcheck-workflow-quoting.changed.md @@ -0,0 +1 @@ +Quote the unquoted shell expansions in the release and build workflows