@@ -83,14 +83,33 @@ runs:
8383 SIGNING_KEY_FILE : ${{ inputs.signing_key_file }}
8484 USE_SNAPSHOT : ${{ inputs.use_snapshot }}
8585 AUTO_PUBLISH : ${{ inputs.auto_publish }}
86+ WORKSPACE_DIR : ${{ github.workspace }}
8687 run : |
8788 set -euo pipefail
8889 echo "Publishing via Central Portal Maven plugin (NMCP) - module :library"
89- if [ ! -d "${{ github.workspace }}/library" ]; then
90+
91+ # Validate workspace directory path
92+ if [[ ! "${WORKSPACE_DIR}" =~ ^/[a-zA-Z0-9/_.-]+$ ]]; then
93+ echo "ERROR: Invalid workspace directory path format" >&2
94+ exit 1
95+ fi
96+
97+ if [ ! -d "${WORKSPACE_DIR}/library" ]; then
9098 echo "Error: library directory not found" >&2
9199 exit 1
92100 fi
93101
102+ # Validate boolean inputs
103+ if [[ ! "${USE_SNAPSHOT}" =~ ^(true|false)$ ]]; then
104+ echo "ERROR: Invalid USE_SNAPSHOT value. Must be 'true' or 'false'" >&2
105+ exit 1
106+ fi
107+
108+ if [[ ! "${AUTO_PUBLISH}" =~ ^(true|false)$ ]]; then
109+ echo "ERROR: Invalid AUTO_PUBLISH value. Must be 'true' or 'false'" >&2
110+ exit 1
111+ fi
112+
94113 echo "Importing GPG key for signing"
95114 gpg --batch --import "${SIGNING_KEY_FILE}"
96115
@@ -115,7 +134,14 @@ runs:
115134 sleep 5
116135 done
117136
118- VERSION=$(grep -o '"sdkVersionName"\s*:\s*"[^"]*"' ${{ github.workspace }}/build.gradle | grep -o '"[^"]*"$' | tr -d '"')
137+ VERSION=$(grep -o '"sdkVersionName"\s*:\s*"[^"]*"' "${WORKSPACE_DIR}/build.gradle" | grep -o '"[^"]*"$' | tr -d '"')
138+
139+ # Validate extracted version format
140+ if ! echo "${VERSION}" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
141+ echo "ERROR: Invalid version format extracted from build.gradle: ${VERSION}" >&2
142+ exit 1
143+ fi
144+
119145 if [ "${USE_SNAPSHOT}" = "true" ]; then
120146 [[ "${VERSION}" != *-SNAPSHOT ]] && VERSION="${VERSION}-SNAPSHOT"
121147 echo "Publishing SNAPSHOT version: ${VERSION}"
@@ -138,6 +164,7 @@ runs:
138164 echo "Library POM has all required Maven Central configuration"
139165
140166 echo "Deploying to Central Portal via Maven plugin"
141- bash -e ./deploy-snapshot-to-central.sh
167+ set -euo pipefail
168+ ./deploy-snapshot-to-central.sh
142169
143170 echo "NMCP publish finished. Check deployments at https://central.sonatype.com/publishing/deployments"
0 commit comments