summaryrefslogtreecommitdiff
path: root/bin/build-distribution-archives
blob: 2373c23a1fe71fcbda53b053859e018ddc3dd7ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
VERSION="$(echo ${GITHUB_REF} | sed -e 's|refs/heads/||' -e 's|refs/tags/||' -e 's|/|-|g')"
OS="${BUILD:-$(uname)}"
mkdir artifacts
if [ "$BUILD" = "osx" ]; then
    cp -a icons locales print LICENSE VERSION images/examples palettes symbols fonts inx dist/inkstitch.app/Contents/Resources
    rm -rf dist/inkstitch/
    temp_path="/tmp/inkstitch/"
    # inside the scripts folder are:
    # - preinstaller (checks for previously installed inkstitch and deletes it) and
    # - postinstaller (moves inkstitch folder from /tmp to user Inkscape extensions folder in $HOME)
    # The postinstaller is a workaround for a proper way to install in user $HOME space

    # Build on GitHub will be handled differently from local builds.
    # Local builds will not be signed nor notarized. They are run to produce releases for legacy versions of macOS.
    # Notarization for development branches can be forced with this variable set to true
    NOTARIZE_DEVELOPMENT_BUILDS=false

    if [[ ! -z "${GITHUB_REF}" ]]; then
        # This code signs and notarize the inkstitch.app
        DEV_IDENT="Developer ID Application: Lex Neva (929A568N58)"
        echo "Signing of inkstitch.app"
        # Coyping inkstitch-gui.app into inkstitch
        ditto electron/build/mac dist/inkstitch.app/Contents/MacOS/electron
        # signing the binary may fix notary issue
        /usr/bin/codesign -s "${DEV_IDENT}" \
                        --deep \
                        --force \
                        --entitlements installer_scripts/entitlements.plist \
                        -o runtime \
                        --timestamp \
                        dist/inkstitch.app/Contents/MacOS/inkstitch -v
        # last signing before packaging
        /usr/bin/codesign -s "${DEV_IDENT}" \
                        --deep \
                        --force \
                        --entitlements installer_scripts/entitlements.plist \
                        -o runtime \
                        --timestamp \
                        dist/inkstitch.app -v
        echo "Running pkgbuild"
        INSTALLER_IDENT="Developer ID Installer: Lex Neva (929A568N58)"
        /usr/bin/pkgbuild --root dist/inkstitch.app \
                        -s "${INSTALLER_IDENT}" \
                        --component-plist installer_scripts/inkstitch.plist \
                        --ownership recommended \
                        --identifier org.inkstitch.installer \
                        --version ${VERSION} \
                        --scripts installer_scripts/scripts \
                        --install-location ${temp_path}inkstitch.app \
                        artifacts/inkstitch-${VERSION}-${OS}.pkg
        if [[ "${GITHUB_REF}" =~ ^refs/tags/v[0-9.]+$ || $NOTARIZE_DEVELOPMENT_BUILDS == true ]]; then
            echo "Notary starting"
            bash bin/notarize-app "929A568N58" \
                                "${NOTARY_ACCOUNT}" \
                                "${NOTARY_PASSWORD}" \
                                "org.inkstitch.app" \
                                artifacts/inkstitch-${VERSION}-${OS}.pkg
        fi
    else
        # local builds will not be signed or notarized
        cp -a electron/build/mac dist/inkstitch.app/Contents/MacOS/electron
        pkgbuild --root dist/inkstitch.app \
                --component-plist installer_scripts/inkstitch.plist \
                --ownership recommended \
                --identifier org.inkstitch.installer \
                --version ${VERSION} \
                --scripts installer_scripts/scripts \
                --install-location ${temp_path}inkstitch.app \
                artifacts/inkstitch-${VERSION}-${OS}.pkg
    fi
else
    cp -a images/examples palettes symbols fonts inx LICENSE VERSION dist/inkstitch
    cp -a icons locales print dist/inkstitch/bin
    cp -a electron/build/*-unpacked dist/inkstitch/electron

fi

if [ "$BUILD" = "windows" ]; then
    # build the installer locally
    # remotely it will be called through build.yml after signing
    if [[ -z "${GITHUB_REF}" ]]; then
        bash bin/build-windows-installer
    fi
fi

if [ "$BUILD" = "linux" ]; then
    cd dist
    python -m zipfile -c ../artifacts/inkstitch-${VERSION}-${OS}.zip *;
    cd ..
fi