Skip to content

Commit ba50c2f

Browse files
committed
feat(refactor)!: add better logs, add env vars, clean up
1 parent 1fb47ba commit ba50c2f

1 file changed

Lines changed: 61 additions & 21 deletions

File tree

.github/makeipa

Lines changed: 61 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,34 @@
33
set -e
44

55
_main() {
6+
:<<'COMMENT'
7+
Inputs from env
8+
- RELEASE: release/nightly (default nightly)
9+
- XCCONFIG: relative/path/to/xcconfig
10+
- default behavior is to search for an xcconfig file that defines '^MARKETING_VERSION ='
11+
e.g. MARKETING_VERSION must appear at the beginning of a line within the file
12+
- PRODUCT_NAME: name of the scheme/app to build and archive
13+
- MARKETING_VERSION: current version to set build output to
14+
COMMENT
15+
_ghtee() {
16+
local INP=$(</dev/stdin)
17+
if [[ -n "$GITHUB_SHA" ]]; then
18+
tee -a "$1"
19+
else
20+
if [[ ! "$1" = *null ]] && [[ ! "$2" = *null ]]; then
21+
echo $INP
22+
fi
23+
fi
24+
}
625
_mkipa() {
726
p=Payload
8-
mkdir $p
27+
[[ -d "$p" ]] && rm -fr $p || true && mkdir $p
928
mv "$1.app" $p
10-
zip -qr9 "$1.ipa" $p
11-
rm -r $p
29+
zip -r9 "$1.ipa" $p
1230
}
1331

14-
local BUILD_TYPE="${1:-nightly}"
32+
local BUILD_TYPE="${RELEASE:-nightly}"
33+
if [[ ! "$BUILD_TYPE" = nightly ]]; then BUILD_TYPE="release"; fi
1534
if [[ -n "$GITHUB_REF" ]]; then
1635
if [[ "$GITHUB_REF" = ref/tags/* ]]; then
1736
local BUILD_TYPE="release"
@@ -24,38 +43,59 @@ _main() {
2443
fi
2544
COMMIT="${COMMIT:0:8}"
2645
BRANCH="$(echo $BRANCH | sed 's/\//_/g')"
27-
local APP="${2:-$(basename *xcodeproj .xcodeproj)}"
46+
local XCCONFIG="${XCCONFIG:=$(grep -r '^MARKETING_VERSION =' --include '*.xcconfig' . | awk -F: '{ print $1 }')}"
47+
if [[ -z "$XCCONFIG" ]]; then
48+
if [[ -z "$PRODUCT_NAME" ]]; then
49+
local EPOS="::error file=.github/makeipa,line=36,col=14,endColumn=29,title=Missing PRODUCT_NAME!::"
50+
local EMSG="$EPOS Must set PRODUCT_NAME in env or in a valid xcconfig!"
51+
fi
52+
if [[ -z "$MARKETING_VERSION" ]]; then
53+
local EPOS="::error file=.github/makeipa,line=37,col=14,endColumn=34,title=Missing MARKETING_VERSION!::"
54+
local EMSG="$EPOS Must set MARKETING_VERSION in env or in a valid xcconfig!"
55+
fi
56+
local APP="$PRODUCT_NAME"
57+
local VER="$MARKETING_VERSION"
58+
else
59+
local VER="${MARKETING_VERSION:-$(grep '^MARKETING_VERSION =' $XCCONFIG | awk '{ print $3 }')}"
60+
local APP="${PRODUCT_NAME:-$(grep '^PRODUCT_NAME' $XCCONFIG | awk '{ print $3 }')}"
61+
local APP="${APP:-$(basename *xcodeproj .xcodeproj)}"
62+
if [[ -z "$VER" ]]; then
63+
local EPOS="::error file=.github/makeipa,line=40,col=14,endColumn=89,title=Missing MARKETING_VERSION!::"
64+
local EMSG="$EPOS Must set MARKETING_VERSION in env or in a valid xcconfig!"
65+
fi
66+
if [[ -z "$APP" ]]; then
67+
local EPOS="::error file=.github/makeipa,line=42,col=14,endColumn=57,title=Missing PRODUCT_NAME!::"
68+
local EMSG="$EPOS Must set PRODUCT_NAME in env or in a valid xcconfig!"
69+
fi
70+
fi
71+
[[ -n "$EMSG" ]] && ( echo $EMSG && exit 1 )
2872
local XCARCHIVE="${XCARCHIVE:-$APP.xcarchive}"
2973
local BUILDOUT="$XCARCHIVE/Products/Applications/$APP"
3074
local DSYM="$APP.app.dSYM"
31-
local VER="$(grep 'MARKETING' Build.xcconfig | awk '{ print $3 }')"
3275
local ARGS="archive -scheme $APP -archivePath $XCARCHIVE -destination generic/platform=iOS"
3376
if [[ "$BUILD_TYPE" = nightly ]]; then
34-
VER="$(date +'%y%m%d%H%M')+$VER+$BRANCH+$COMMIT"
35-
ARGS="$ARGS MARKETING_VERSION=$VER"
77+
ARGS="$ARGS MARKETING_VERSION=$(date +'%y%m%d%H%M')+$VER+$BRANCH+$COMMIT"
3678
fi
3779
local LOG="build/$VER.log"
3880
local OUTIPA="build/$APP.$VER.ipa"
3981
local DSYMTAR="build/$DSYM.$VER.tar"
4082

41-
[[ -d "build" ]] && rm -r build || true && mkdir build
42-
[[ -d "$XCARCHIVE" ]] && rm -r $XCARCHIVE
83+
[[ -d "build" ]] && rm -fr build || true && mkdir build
84+
[[ -d "$XCARCHIVE" ]] && rm -fr $XCARCHIVE
4385
echo "::group:: Building $BUILD_TYPE"
44-
echo "[$VER] Building.."
86+
echo "[$VER] Building.." | _ghtee "$GITHUB_STEP_SUMMARY"
4587
NSUnbufferedIO=YES set -o pipefail && xcodebuild $ARGS 2>&1 | tee "$LOG" | xcbeautify --renderer github-actions
46-
echo "[$VER] Archiving.."
88+
echo "[$VER] Archiving.." | _ghtee "$GITHUB_STEP_SUMMARY"
4789
xz -e "$LOG"
48-
tar cf "$DSYMTAR" -C "$XCARCHIVE/dSYMs" "$DSYM"
90+
tar cvf "$DSYMTAR" -C "$XCARCHIVE/dSYMs" "$DSYM" 2>&1 | _ghtee $GITHUB_STEP_SUMMARY null
4991
xz -e "$DSYMTAR"
50-
_mkipa "$BUILDOUT"
92+
_mkipa "$BUILDOUT" | _ghtee $GITHUB_STEP_SUMMARY null
5193
mv "$BUILDOUT.ipa" "$OUTIPA"
52-
rm -r "$XCARCHIVE"
53-
if [[ -n "$GITHUB_SHA" ]]; then
54-
echo "log=$(basename $LOG.xz)" >> $GITHUB_OUTPUT
55-
echo "sym=$(basename $DSYMTAR.xz)" >> $GITHUB_OUTPUT
56-
echo "ipa=$(basename $OUTIPA)" >> $GITHUB_OUTPUT
57-
fi
58-
echo "[$VER] Done!"
94+
rm -fr "$XCARCHIVE"
95+
echo "log=$(basename $LOG.xz)" | _ghtee $GITHUB_OUTPUT null
96+
echo "sym=$(basename $DSYMTAR.xz)" | _ghtee $GITHUB_OUTPUT null
97+
echo "ipa=$(basename $OUTIPA)" | _ghtee $GITHUB_OUTPUT null
98+
echo "[$VER] Done!" | _ghtee $GITHUB_STEP_SUMMARY
5999
echo "::endgroup::"
60100
}
61101

0 commit comments

Comments
 (0)