From c2183bd814c13740f29ea09576176789a4103949 Mon Sep 17 00:00:00 2001 From: lneto Date: Wed, 17 Jul 2024 15:39:51 +0100 Subject: [PATCH] TUN-8546: rework MacOS build script The rework consists in building and packaging the cloudflared binary based on the OS & ARCH of the system. read TARGET_ARCH from export and exit if TARGET_ARCH is not set --- .teamcity/mac/build.sh | 94 +++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/.teamcity/mac/build.sh b/.teamcity/mac/build.sh index 588ef42f294..d303144be68 100755 --- a/.teamcity/mac/build.sh +++ b/.teamcity/mac/build.sh @@ -7,6 +7,12 @@ if [[ "$(uname)" != "Darwin" ]] ; then exit 1 fi +if [[ "amd64" != "${TARGET_ARCH}" && "arm64" != "${TARGET_ARCH}" ]] +then + echo "TARGET_ARCH must be amd64 or arm64" + exit 1 +fi + go version export GO111MODULE=on @@ -137,56 +143,52 @@ fi # cleanup the build directory because the previous execution might have failed without cleaning up. rm -rf "${TARGET_DIRECTORY}" -archs=("amd64" "arm64") -export TARGET_OS=darwin -for arch in ${archs[@]}; do - - FILENAME="$(pwd)/artifacts/cloudflared-darwin-$arch.tgz" - PKGNAME="$(pwd)/artifacts/cloudflared-$arch.pkg" - TARGET_ARCH=$arch GOCACHE="$PWD/../../../../" GOPATH="$PWD/../../../../" CGO_ENABLED=1 make cloudflared - - # sign the cloudflared binary - if [[ ! -z "$CODE_SIGN_NAME" ]]; then - codesign -s "${CODE_SIGN_NAME}" -f -v --timestamp --options runtime ${BINARY_NAME} - - # notarize the binary - # TODO: TUN-5789 - fi +export TARGET_OS="darwin" +FILENAME="$(pwd)/artifacts/cloudflared-darwin-$TARGET_ARCH.tgz" +PKGNAME="$(pwd)/artifacts/cloudflared-$TARGET_ARCH.pkg" +GOCACHE="$PWD/../../../../" GOPATH="$PWD/../../../../" CGO_ENABLED=1 make cloudflared - ARCH_TARGET_DIRECTORY="${TARGET_DIRECTORY}/${arch}-build" - # creating build directory - rm -rf $ARCH_TARGET_DIRECTORY - mkdir -p "${ARCH_TARGET_DIRECTORY}" - mkdir -p "${ARCH_TARGET_DIRECTORY}/contents" - cp -r ".mac_resources/scripts" "${ARCH_TARGET_DIRECTORY}/scripts" +# sign the cloudflared binary +if [[ ! -z "$CODE_SIGN_NAME" ]]; then + codesign -s "${CODE_SIGN_NAME}" -f -v --timestamp --options runtime ${BINARY_NAME} - # copy cloudflared into the build directory - cp ${BINARY_NAME} "${ARCH_TARGET_DIRECTORY}/contents/${PRODUCT}" - - # compress cloudflared into a tar and gzipped file - tar czf "$FILENAME" "${BINARY_NAME}" + # notarize the binary + # TODO: TUN-5789 +fi - # build the installer package - if [[ ! -z "$PKG_SIGN_NAME" ]]; then +ARCH_TARGET_DIRECTORY="${TARGET_DIRECTORY}/${arch}-build" +# creating build directory +rm -rf $ARCH_TARGET_DIRECTORY +mkdir -p "${ARCH_TARGET_DIRECTORY}" +mkdir -p "${ARCH_TARGET_DIRECTORY}/contents" +cp -r ".mac_resources/scripts" "${ARCH_TARGET_DIRECTORY}/scripts" + +# copy cloudflared into the build directory +cp ${BINARY_NAME} "${ARCH_TARGET_DIRECTORY}/contents/${PRODUCT}" + +# compress cloudflared into a tar and gzipped file +tar czf "$FILENAME" "${BINARY_NAME}" + +# build the installer package +if [[ ! -z "$PKG_SIGN_NAME" ]]; then + pkgbuild --identifier com.cloudflare.${PRODUCT} \ + --version ${VERSION} \ + --scripts ${ARCH_TARGET_DIRECTORY}/scripts \ + --root ${ARCH_TARGET_DIRECTORY}/contents \ + --install-location /usr/local/bin \ + --sign "${PKG_SIGN_NAME}" \ + ${PKGNAME} + + # notarize the package + # TODO: TUN-5789 +else pkgbuild --identifier com.cloudflare.${PRODUCT} \ - --version ${VERSION} \ - --scripts ${ARCH_TARGET_DIRECTORY}/scripts \ - --root ${ARCH_TARGET_DIRECTORY}/contents \ - --install-location /usr/local/bin \ - --sign "${PKG_SIGN_NAME}" \ - ${PKGNAME} - - # notarize the package - # TODO: TUN-5789 - else - pkgbuild --identifier com.cloudflare.${PRODUCT} \ - --version ${VERSION} \ - --scripts ${ARCH_TARGET_DIRECTORY}/scripts \ - --root ${ARCH_TARGET_DIRECTORY}/contents \ - --install-location /usr/local/bin \ - ${PKGNAME} - fi -done + --version ${VERSION} \ + --scripts ${ARCH_TARGET_DIRECTORY}/scripts \ + --root ${ARCH_TARGET_DIRECTORY}/contents \ + --install-location /usr/local/bin \ + ${PKGNAME} +fi # cleanup build directory because this script is not ran within containers, # which might lead to future issues in subsequent runs.