1+ # This workflow will build a .NET project
2+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
3+
14name : Build macOS
25
36on :
1518 required : true
1619 default : false
1720
18-
19-
2021jobs :
2122 macos-app :
2223 runs-on : macos-latest
23- env :
24- CERT_NAME : ${{ secrets.MACOS_CERTIFICATE_NAME }}
25- KEYCHAIN_PASSWORD : ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
26- APPLE_ID : ${{ secrets.APPLE_ID }}
27- APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
28- APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
2924 steps :
3025 - uses : actions/checkout@v4
3126 - name : Setup .NET
4338 - name : Clone Binary
4439 run : git clone https://github.com/Uotan-Dev/UotanToolboxNT.Binary.git -b ${{ inputs.BINARY_BRANCH }}
4540
46- - name : Install create-dmg
47- run : brew install create-dmg
48-
49- - name : Import macOS signing certificate
50- run : |
51- set -euo pipefail
52- if [ ! -f /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/MacOS/entitlements.plist ]; then
53- echo "entitlements.plist not found in repo designated folder."
54- exit 1
55- fi
56- echo "${{ secrets.MACOS_CERTIFICATE_BASE64 }}" | base64 --decode > /tmp/cert.p12
57- security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
58- security set-keychain-settings -lut 21600 build.keychain
59- security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
60- security import /tmp/cert.p12 -k build.keychain -P "${{ secrets.MACOS_CERTIFICATE_PASSWORD }}" -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild
61- security list-keychain -d user -s build.keychain
62- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
63- rm -f /tmp/cert.p12
64-
6541 - name : Build
6642 run : |
6743 dotnet publish -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o ./publish-x64
@@ -76,37 +52,18 @@ jobs:
7652 cp /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/Info.plist ./UotanToolbox.app/Contents/Info.plist
7753 cp /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/PkgInfo ./UotanToolbox.app/Contents/PkgInfo
7854 cp /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/Icon.icns ./UotanToolbox.app/Contents/Resources/Icon.icns
79- cp /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/Assets.car ./UotanToolbox.app/Contents/Resources/Assets.car
8055 cp -r ./UotanToolboxNT.Binary/macOS/* ./UotanToolbox.app/Contents/MacOS/
8156 cp -r ./publish-x64/* ./UotanToolbox.app/Contents/MacOS/
82- codesign --force --options runtime --entitlements /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/MacOS/entitlements.plist --timestamp --deep --sign "${{ secrets.MACOS_CERTIFICATE_NAME }}" ./UotanToolbox.app
83- ditto -c -k --keepParent ./UotanToolbox.app ./UotanToolbox_macOS_x64_${{ inputs.VERSION }}.zip
84- xcrun notarytool submit ./UotanToolbox_macOS_x64_${{ inputs.VERSION }}.zip --apple-id "$APPLE_ID" --team-id "$APPLE_TEAM_ID" --password "$APPLE_APP_SPECIFIC_PASSWORD" --wait
85- xcrun stapler staple -v ./UotanToolbox.app
86- rm -rf ./UotanToolbox_macOS_x64_${{ inputs.VERSION }}.zip
87- mkdir -p dmg-root
88- cp -R "./UotanToolbox.app" "dmg-root/"
89- ln -s /Applications "dmg-root/Applications"
90- ls -la dmg-root
91- create-dmg --volname "UotanToolbox" --background "/Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/dmgbackground.tiff" --window-size 600 410 --icon-size 96 --icon "UotanToolbox.app" 160 175 --icon "Applications" 440 175 --hide-extension "UotanToolbox.app" --filesystem APFS ./UotanToolbox_macOS_x64_${{ inputs.VERSION }}.dmg dmg-root/
57+ zip -rq ./UotanToolbox_macOS_x64_${{ inputs.VERSION }}.zip ./UotanToolbox.app
9258 rm -rf ./UotanToolbox.app/Contents/MacOS/*
9359
9460
9561 - name : Make app-arm64
9662 run : |
9763 cp -r ./UotanToolboxNT.Binary/macOS/* ./UotanToolbox.app/Contents/MacOS/
9864 cp -r ./publish-arm64/* ./UotanToolbox.app/Contents/MacOS/
99- codesign --force --options runtime --entitlements /Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/MacOS/entitlements.plist --timestamp --deep --sign "${{ secrets.MACOS_CERTIFICATE_NAME }}" ./UotanToolbox.app
100- ditto -c -k --keepParent ./UotanToolbox.app ./UotanToolbox_macOS_arm64_${{ inputs.VERSION }}.zip
101- xcrun notarytool submit ./UotanToolbox_macOS_arm64_${{ inputs.VERSION }}.zip --apple-id "$APPLE_ID" --team-id "$APPLE_TEAM_ID" --password "$APPLE_APP_SPECIFIC_PASSWORD" --wait
102- xcrun stapler staple -v ./UotanToolbox.app
103- rm -rf ./UotanToolbox_macOS_arm64_${{ inputs.VERSION }}.zip
104- rm -rf dmg-root
105- mkdir -p dmg-root
106- cp -R "./UotanToolbox.app" "dmg-root/"
107- ln -s /Applications "dmg-root/Applications"
108- ls -la dmg-root
109- create-dmg --volname "UotanToolbox" --background "/Users/runner/work/UotanToolboxNT/UotanToolboxNT/UotanToolbox/Assets/macOS/dmgbackground.tiff" --window-size 600 410 --icon-size 96 --icon "UotanToolbox.app" 160 175 --icon "Applications" 440 175 --hide-extension "UotanToolbox.app" --filesystem APFS ./UotanToolbox_macOS_arm64_${{ inputs.VERSION }}.dmg dmg-root/ rm -rf ./UotanToolbox.app/Contents/MacOS/*
65+ zip -rq ./UotanToolbox_macOS_arm64_${{ inputs.VERSION }}.zip ./UotanToolbox.app
66+ rm -rf ./UotanToolbox.app/Contents/MacOS/*
11067
11168 - name : Upload
11269 uses : actions/upload-artifact@v4
0 commit comments