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 gem install fpm if [[ "$VERSION" =~ ^v[0-9][.0-9]+$ ]]; then VERSION=${VERSION#v} else # dpkg requires versions to start with a number, so we have to add # 0.0.1 for development builds VERSION="0.0.1-${VERSION}" fi echo -n "$INKSTITCH_GPG_KEY" | base64 -d | gpg --import cat < $HOME/.rpmmacros %_gpg_name EA93BCE2CCD0FB2E77B2CC29E8120E50709E5C44 %_signature gpg EOF fpm -s dir \ -t deb \ -n inkstitch \ -v "$VERSION" \ -d "inkscape >= 1.0.0" \ --license "GPL-3.0" \ --description "An open-source machine embroidery design platform based on Inkscape" \ --url "https://inkstitch.org" \ --maintainer "maintainer@inkstitch.org" \ --after-install bin/after-install \ --before-remove bin/before-remove \ --verbose \ dist/inkstitch=/opt fpm -s dir \ -t rpm \ -n inkstitch \ -v "$VERSION" \ -d "inkscape >= 1.0.0" \ --license "GPL-3.0" \ --description "An open-source machine embroidery design platform based on Inkscape" \ --url "https://inkstitch.org" \ --maintainer "maintainer@inkstitch.org" \ --after-install bin/after-install \ --before-remove bin/before-remove \ --verbose \ dist/inkstitch=/opt rpmsign --addsign inkstitch*.rpm mv inkstitch*.deb inkstitch*.rpm artifacts/ tar -C dist -Jcf artifacts/inkstitch-${VERSION}-${OS}.tar.xz inkstitch cat "$(dirname "$0")/linux-sh-installer" artifacts/inkstitch-${VERSION}-${OS}.tar.xz > artifacts/inkstitch-${VERSION}-${OS}.sh fi