@@ -23,11 +23,40 @@ jobs:
2323 - name : Check out Repository
2424 uses : actions/checkout@v4
2525
26+ - name : Validate inputs
27+ run : |
28+ validate_version() {
29+ if ! echo "$1" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
30+ echo "::error::Invalid version format: '$1'. Expected: X.Y.Z (e.g. 2.3.0)"
31+ exit 1
32+ fi
33+ }
34+ validate_build() {
35+ if ! echo "$1" | grep -qE '^[0-9]+$'; then
36+ echo "::error::Invalid build number: '$1'. Expected: numeric (e.g. 24)"
37+ exit 1
38+ fi
39+ }
40+
41+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
42+ validate_version "$INPUT_VERSION"
43+ validate_build "$INPUT_BUILD"
44+ else
45+ tag="${GITHUB_REF#refs/*/}"
46+ version=$(echo "$tag" | cut -d'-' -f1)
47+ build=$(echo "$tag" | cut -d'-' -f2)
48+ validate_version "$version"
49+ validate_build "$build"
50+ fi
51+ env :
52+ INPUT_VERSION : ${{ inputs.version }}
53+ INPUT_BUILD : ${{ inputs.build }}
54+
2655 - name : Set env
2756 run : |
2857 if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
29- version="${{ inputs.version }} "
30- build="${{ inputs.build }} "
58+ version="$INPUT_VERSION "
59+ build="$INPUT_BUILD "
3160 tag="${version}-${build}"
3261 else
3362 version_and_build=$(echo "${GITHUB_REF#refs/*/}" | awk -F '[-]' '{print $1 " " $2}')
3968 echo "RELEASE_VERSION=$version" >> $GITHUB_ENV
4069 echo "BUILD_NUMBER=$build" >> $GITHUB_ENV
4170 echo "RELEASE_TAG=$tag" >> $GITHUB_ENV
71+ env :
72+ INPUT_VERSION : ${{ inputs.version }}
73+ INPUT_BUILD : ${{ inputs.build }}
4274
4375 - name : Configure git credentials
4476 uses : fregante/setup-git-user@v2
68100
69101 - name : Update App Version
70102 run : |
71- sed -i "" "s/MARKETING_VERSION = .*/MARKETING_VERSION = ${{ env. RELEASE_VERSION }} ;/g" "./MockingStar/MockingStar.xcodeproj/project.pbxproj"
72- sed -i "" "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = ${{ env. BUILD_NUMBER }} ;/g" "./MockingStar/MockingStar.xcodeproj/project.pbxproj"
103+ sed -i "" "s/MARKETING_VERSION = .*/MARKETING_VERSION = $RELEASE_VERSION;/g" "./MockingStar/MockingStar.xcodeproj/project.pbxproj"
104+ sed -i "" "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $BUILD_NUMBER;/g" "./MockingStar/MockingStar.xcodeproj/project.pbxproj"
73105
74106 - name : Build Mocking Star
75107 run : |
89121 run : |
90122 sed -i '' 's/TEAMID/${{ secrets.TEAM_ID }}/g' ExportOptions.plist
91123 sed -i '' 's/DEVID_CERT/${{ secrets.CODESIGNING_IDENTITY }}/g' ExportOptions.plist
92-
124+
93125 set -o pipefail && xcodebuild -exportArchive \
94126 -archivePath ./.build/archive.xcarchive \
95127 -exportPath ./.build/appBuildOutput \
@@ -107,18 +139,20 @@ jobs:
107139 Signature=$(./.build/derivedData/SourcePackages/artifacts/sparkle/Sparkle/bin/sign_update -f certs/Sparkle.key .build/appBuildOutput/MockingStar-App.zip)
108140 Signature=$(echo "$Signature" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
109141
110- export RELEASE_VERSION="${{ env. RELEASE_VERSION }} "
111- export BUILD_NUMBER="${{ env. BUILD_NUMBER }} "
112- export RELEASE_VERSION_TAG="${{ env. RELEASE_TAG }} "
113- export RELEASE_NOTES="${{ github.event.release.body || '' }} "
142+ export RELEASE_VERSION="$RELEASE_VERSION"
143+ export BUILD_NUMBER="$BUILD_NUMBER"
144+ export RELEASE_VERSION_TAG="$RELEASE_TAG"
145+ export RELEASE_NOTES="$RELEASE_BODY "
114146 export MinimumVersion="$MinimumVersion"
115147 export Signature="$Signature"
116-
148+
117149 swift run --package-path ./SparkleActions
118150
119- git commit -m 'Release version ${{ env.RELEASE_TAG }}! 🎉' Appcast.xml
120- git branch -f Release/${{ env.RELEASE_TAG }}
121- git push -u origin Release/${{ env.RELEASE_TAG }} --force
151+ git commit -m "Release version $RELEASE_TAG! 🎉" Appcast.xml
152+ git branch -f "Release/$RELEASE_TAG"
153+ git push -u origin "Release/$RELEASE_TAG" --force
154+ env :
155+ RELEASE_BODY : ${{ github.event.release.body || '' }}
122156
123157 - name : Create a Release
124158 if : github.event_name == 'release'
0 commit comments