48 lines
1.2 KiB
Bash
48 lines
1.2 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# required env vars
|
|
: ${GIT_NAME:?"GIT_NAME env variable is required"}
|
|
: ${GIT_EMAIL:?"GIT_EMAIL env variable is required"}
|
|
: ${GIT_URL:?"GIT_URL env variable is required"}
|
|
|
|
export GIT_DIR="/var/git"
|
|
export GIT_WORK_TREE="$TARGET_FOLDER"
|
|
|
|
echo "Job started: $(date)"
|
|
echo "$GIT_WORK_TREE"
|
|
|
|
if [ ! -d "$GIT_DIR" ]; then
|
|
mkdir -p "$GIT_DIR"
|
|
git init
|
|
git config user.name "$GIT_NAME"
|
|
git config user.email "$GIT_EMAIL"
|
|
git remote add origin "$GIT_URL"
|
|
|
|
mkdir -p "$GIT_DIR/info"
|
|
echo '' > "$GIT_DIR/info/exclude"
|
|
while IFS=';' read -ra IGNORE_PATTERNS; do
|
|
for i in "${IGNORE_PATTERNS[@]}"; do
|
|
echo "$i" >> "$GIT_DIR/info/exclude"
|
|
done
|
|
done <<< "$GIT_IGNORE"
|
|
|
|
git fetch --all
|
|
git symbolic-ref HEAD refs/remotes/origin/$GIT_BRANCH
|
|
git reset
|
|
git checkout -b $GIT_BRANCH
|
|
|
|
# to get rid of ignored files that are already commited to the repo,
|
|
# remove all files for index (but not from working directory!),
|
|
# then re-add everything back to index
|
|
git rm -r --cached . > /dev/null || true
|
|
fi
|
|
|
|
git add -A
|
|
|
|
git commit -m "$GIT_COMMIT_MESSAGE"
|
|
git push origin $GIT_BRANCH
|
|
|
|
echo "Job finished: $(date)"
|