107 lines
3.3 KiB
Bash
Executable File
107 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "$CIRCLECI" == "true" ]; then
|
|
if [[ ! -z $CIRCLE_PULL_REQUEST ]] ; then
|
|
CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}"
|
|
REPO=$CIRCLE_PULL_REQUEST
|
|
REPO=${REPO##https://github.com/}
|
|
REPO=${REPO%%/pull/$CIRCLE_PR_NUMBER}
|
|
else
|
|
REPO=$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME
|
|
fi
|
|
BRANCH=${CIRCLE_BRANCH:-$CIRCLE_TAG}
|
|
PR_NUMBER=${CIRCLE_PR_NUMBER:-false}
|
|
elif [ "$TRAVIS" == "true" ]; then
|
|
REPO=$TRAVIS_REPO_SLUG
|
|
BRANCH=${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}
|
|
PR_NUMBER=$TRAVIS_PULL_REQUEST
|
|
elif [ "$TF_BUILD" == "True" ]; then
|
|
REPO=$BUILD_REPOSITORY_NAME
|
|
BRANCH=${SYSTEM_PULLREQUEST_SOURCEBRANCH:-$BUILD_SOURCEBRANCHNAME}
|
|
PR_NUMBER=${SYSTEM_PULLREQUEST_PULLREQUESTNUMBER:-false}
|
|
elif [[ -n $BUILD_NUMBER ]]; then
|
|
echo "CHANGE_ID=$CHANGE_ID"
|
|
echo "CHANGE_URL=$CHANGE_URL"
|
|
REPO=${CHANGE_URL##https://github.com/}
|
|
if [[ ! -z $CHANGE_ID ]] ; then
|
|
REPO=${REPO%%/pull/$CHANGE_ID}
|
|
fi
|
|
PR_NUMBER=${CHANGE_ID:-false}
|
|
BRANCH=$BRANCH_NAME
|
|
fi
|
|
|
|
REPOSITORY_OWNER=monicahq/monica
|
|
|
|
set -euo pipefail
|
|
|
|
# Update assets
|
|
echo -e "\033[1;32m# Build assets ...\033[0;37m"
|
|
echo -e "\033[1;36myarn run production\033[0;37m"
|
|
yarn run production
|
|
echo ""
|
|
|
|
# Check if there is zero update needed
|
|
status=$(git status --porcelain)
|
|
if [ "$status" = "" ]; then
|
|
echo "Nothing to push, already up to date."
|
|
exit 0;
|
|
fi
|
|
echo "Waiting modifications:"
|
|
echo $status
|
|
|
|
# Add files
|
|
git add public/mix-manifest.json
|
|
git add public/js/*
|
|
git add public/css/*
|
|
git add public/fonts/*
|
|
|
|
# Commit
|
|
if [ -z "${ASSETS_USERNAME:-}" ]; then
|
|
#No username
|
|
echo -e "\033[0;31mMonica asset are not up to date.\033[0;37m"
|
|
echo "Please update the Monica assets yourself by running:"
|
|
echo " ~ yarn run production"
|
|
exit 2
|
|
fi
|
|
git config user.email $ASSETS_EMAIL
|
|
git config user.name $ASSETS_USERNAME
|
|
git commit -m "chore(assets): Update assets"
|
|
|
|
# Push
|
|
if [ "$BRANCH" == "main" ] && [ "$PR_NUMBER" == "false" ]; then
|
|
echo -e "\033[0;31mmain branch is not up to date, but we can't update it directly...\033[0;37m"
|
|
exit 0
|
|
|
|
elif [ -n "${ASSETS_GITHUB_TOKEN:-}" ]; then
|
|
REPOS_VALUES=($(curl -H "Authorization: token $ASSETS_GITHUB_TOKEN" -sSL https://api.github.com/repos/$REPO/pulls/$PR_NUMBER | jq -r -c ".head.repo.full_name, .head.ref"))
|
|
|
|
PULL_REQUEST_BRANCH=
|
|
PULL_REQUEST_REPOSITORY=${REPOS_VALUES[0]}
|
|
PULL_REQUEST_HEADBRANCH=${REPOS_VALUES[1]}
|
|
|
|
if [ -z "${PULL_REQUEST_REPOSITORY:-}" ] || [ "$PULL_REQUEST_REPOSITORY" == "null" ]; then
|
|
echo -e "\033[0;31mError with github api call\033[0;37m"
|
|
exit 1
|
|
elif [ "$PULL_REQUEST_REPOSITORY" == "$REPOSITORY_OWNER" ]; then
|
|
PULL_REQUEST_BRANCH=$PULL_REQUEST_HEADBRANCH
|
|
else
|
|
echo -e "\033[0;31mMonica asset are not up to date.\033[0;37m"
|
|
echo "We can't commit in $PULL_REQUEST_REPOSITORY to update them directly."
|
|
echo "Please update the Monica assets yourself by running:"
|
|
echo " ~ yarn run production"
|
|
exit 2
|
|
fi
|
|
|
|
echo "Pushing files to $PULL_REQUEST_BRANCH branch ..."
|
|
remote=monica-origin
|
|
remoteurl="https://$ASSETS_USERNAME:$ASSETS_GITHUB_TOKEN@github.com/$REPO"
|
|
git remote remove $remote || true
|
|
git remote add -f $remote $remoteurl || true
|
|
git push $remote HEAD:$PULL_REQUEST_BRANCH
|
|
|
|
# Exit with error to stop the current build
|
|
echo "...pushed files successfully."
|
|
echo "Exit with error to stop the current build."
|
|
exit -1
|
|
fi
|