@@ -2,17 +2,19 @@ name: Build and Publish Pre-release
22
33on :
44 workflow_dispatch :
5- push :
6- branches :
7- - ' main'
5+ workflow_call :
86
97jobs :
108 pre-release :
119 name : Build and Publish Pre-release
12- runs-on : macos-12
10+ runs-on : [self-hosted, macOS]
1311 steps :
1412 - name : Checkout repository
1513 uses : actions/checkout@v2
14+
15+ # ###########################
16+ # Install Certificate
17+ # ###########################
1618 - name : Install codesign certificate
1719 env :
1820 # DEV_CERT_B64: Base64-encoded developer certificate as .p12
@@ -34,23 +36,35 @@ jobs:
3436 security create-keychain -p "$KEYCHAIN_PWD" "$KEYCHAIN_DB"
3537 security set-keychain-settings -lut "$KEYCHAIN_TIMEOUT" "$KEYCHAIN_DB"
3638 security unlock-keychain -p "$KEYCHAIN_PWD" "$KEYCHAIN_DB"
37- echo -n "$DEV_CERT_B64" | base64 --decode --output "$DEV_CERT_P12"
39+ echo -n "$DEV_CERT_B64" | base64 --decode -o "$DEV_CERT_P12"
3840 security import "$DEV_CERT_P12" -P "$DEV_CERT_PWD" -A -t cert -f pkcs12 -k "$KEYCHAIN_DB"
39- echo -n "$MAC_CERT_B64" | base64 --decode --output "$MAC_CERT_P12"
41+ echo -n "$MAC_CERT_B64" | base64 --decode -o "$MAC_CERT_P12"
4042 security import "$MAC_CERT_P12" -P "$MAC_CERT_PWD" -A -t cert -f pkcs12 -k "$KEYCHAIN_DB"
4143 security list-keychain -d user -s "$KEYCHAIN_DB"
44+
45+ # ###########################
46+ # Build
47+ # ###########################
4248 - name : Build CodeEdit
4349 env :
4450 APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
4551 run : xcodebuild -scheme CodeEdit -configuration Release -derivedDataPath "$RUNNER_TEMP/DerivedData" -archivePath "$RUNNER_TEMP/CodeEdit.xcarchive" -skipPackagePluginValidation DEVELOPMENT_TEAM=$APPLE_TEAM_ID archive
52+
53+ # ###########################
54+ # Sign
55+ # ###########################
4656 - name : Sign CodeEdit
4757 env :
4858 CODESIGN_SIGN : ${{ secrets.CODESIGN_SIGN }}
4959 run : |
5060 REV=$(git rev-parse --short HEAD)
5161 echo "REV=$REV" >> $GITHUB_ENV
5262 codesign --sign "$CODESIGN_SIGN" -vvv --verbose --strict --options=runtime --prefix austincondiff.CodeEdit. --force --deep --timestamp "$RUNNER_TEMP/CodeEdit.xcarchive/Products/Applications/CodeEdit.app"
53- - name : Using brew
63+
64+ # ###########################
65+ # DMG & Notarize
66+ # ###########################
67+ - name : Create DMG & Notarize
5468 env :
5569 CODESIGN_SIGN : ${{ secrets.CODESIGN_SIGN }}
5670 APPLE_ID : ${{ secrets.APPLE_ID }}
6074 REV=$(git rev-parse --short HEAD)
6175 echo "REV=$REV" >> $GITHUB_ENV
6276 xcrun notarytool store-credentials CodeEdit --apple-id "$APPLE_ID" --team-id "$APPLE_TEAM_ID" --password "$APPLE_ID_PWD"
63- brew install create-dmg
6477 create-dmg \
6578 --volname "CodeEdit" \
6679 --window-pos 200 120 \
7386 --notarize "CodeEdit" \
7487 "$RUNNER_TEMP/CodeEdit-$REV.dmg" \
7588 "$RUNNER_TEMP/CodeEdit.xcarchive/Products/Applications/"
89+
90+ # ###########################
91+ # Sparkle Appcast
92+ # ###########################
7693 - name : Update Sparkle appcast
7794 env :
7895 # SPARKLE_KEY: Sparkle EdDSA key exported from `generate_keys -x` as plain text
8198 # SPARKLE_LINK: CodeEdit Website
8299 SPARKLE_KEY : ${{ secrets.SPARKLE_KEY }}
83100 SPARKLE_CHANNEL : dev
84- SPARKLE_DL_PREFIX : " https://github.com/CodeEditApp/CodeEdit/releases/download/latest"
101+ SPARKLE_DL_PREFIX : " https://github.com/CodeEditApp/CodeEdit/releases/download/latest/ "
85102 SPARKLE_LINK : " https://github.com/CodeEditApp/CodeEdit"
86103 run : |
87104 SPARKLE_BIN="$RUNNER_TEMP/DerivedData/SourcePackages/artifacts/sparkle/bin"
@@ -91,8 +108,10 @@ jobs:
91108 cp "$RUNNER_TEMP/CodeEdit-$REV.dmg" "$SPARKLE_ARCHIVE"
92109 SPARKLE_SIG=$("$SPARKLE_BIN/sign_update" --ed-key-file "$RUNNER_TEMP/sparkle_key" "$SPARKLE_ARCHIVE/CodeEdit-$REV.dmg" | cut -d\" -f2)
93110 "$SPARKLE_BIN/generate_appcast" --ed-key-file "$RUNNER_TEMP/sparkle_key" --download-url-prefix "$SPARKLE_DL_PREFIX" --link "$SPARKLE_LINK" --channel "$SPARKLE_CHANNEL" --maximum-deltas 0 "$SPARKLE_ARCHIVE"
94- brew install xmlstarlet
95- xmlstarlet ed -O --inplace --insert "/rss/channel/item/enclosure" --type attr -n "sparkle:edSignature" -v "$SPARKLE_SIG" "$SPARKLE_ARCHIVE/appcast.xml"
111+
112+ # ###########################
113+ # Publish Pre Release
114+ # ###########################
96115 - name : Publish Pre-release
97116 uses : marvinpinto/action-automatic-releases@latest
98117 with :
@@ -103,6 +122,10 @@ jobs:
103122 automatic_release_tag : " latest"
104123 prerelease : true
105124 repo_token : " ${{ secrets.GITHUB_TOKEN }}"
125+
126+ # ###########################
127+ # Cleanup Secrets
128+ # ###########################
106129 - name : Clean up keychain and provisioning profile
107130 if : ${{ always() }}
108131 run : |
0 commit comments