#!/bin/sh setup_xcode_cloud_environment () { # Return on failures # Fail when expanding unset variables # Trace each command before executing it set -eEu # Move to the project root cd .. # Prevent installing dependencies in system directories echo 'export GEM_HOME=$HOME/.gem' >>~/.zshrc echo 'export PATH=$GEM_HOME/bin:$PATH' >>~/.zshrc echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/Users/local/Library/Python/3.9/bin:$PATH"' >> ~/.zshrc export GEM_HOME=$HOME/.gem export PATH=$GEM_HOME/bin:$PATH export PATH="/usr/local/opt/ruby/bin:$PATH" export PATH="/Users/local/Library/Python/3.9/bin:$PATH" # Things don't work well on the default ruby version brew install ruby gem install bundler bundle config path vendor/bundle bundle install --jobs 4 --retry 3 } install_xcode_cloud_brew_dependencies () { brew update && brew install xcodegen swiftgen pkl } setup_github_actions_environment() { unset HOMEBREW_NO_INSTALL_FROM_API export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew update && brew install xcodegen swiftlint swiftformat swiftgen git-lfs pkl a7ex/homebrew-formulae/xcresultparser bundle config path vendor/bundle bundle install --jobs 4 --retry 3 } setup_github_actions_translations_environment() { unset HOMEBREW_NO_INSTALL_FROM_API export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew update && brew install swiftgen mint localazy/tools/localazy mint install Asana/locheck } generate_what_to_test_notes() { if [[ -d "$CI_APP_STORE_SIGNED_APP_PATH" ]]; then TESTFLIGHT_DIR_PATH=TestFlight TESTFLIGHT_NOTES_FILE_NAME=WhatToTest.en-US.txt # Xcode Cloud shallow clones the repo, we need to deepen it to fetch tags and commit history # Instead of trying `--deepen=` just do a full unshallow to avoid future surprises git fetch --unshallow --quiet LATEST_TAG="" if [ "$CI_WORKFLOW" = "Release" ]; then # Use -v to invert grep, searching for non-nightlies LATEST_TAG=$(git tag --sort=-creatordate | grep -v 'nightly' | head -n1) elif [ "$CI_WORKFLOW" = "Nightly" ]; then LATEST_TAG=$(git tag --sort=-creatordate | grep 'nightly' | head -n1) fi if [[ -z "$LATEST_TAG" ]]; then echo "generate_what_to_test_notes: Failed fetching previous tag" return 0 # Continue even though this failed fi echo "generate_what_to_test_notes: latest tag is $LATEST_TAG" mkdir $TESTFLIGHT_DIR_PATH NOTES="$(git log --pretty='- %an: %s' "$LATEST_TAG"..HEAD)" echo "generate_what_to_test_notes: Generated notes:\n"$NOTES"" echo "$NOTES" > $TESTFLIGHT_DIR_PATH/$TESTFLIGHT_NOTES_FILE_NAME fi }