summaryrefslogtreecommitdiff
path: root/.buildkite/hooks/pre-command
diff options
context:
space:
mode:
Diffstat (limited to '.buildkite/hooks/pre-command')
-rw-r--r--.buildkite/hooks/pre-command35
1 files changed, 35 insertions, 0 deletions
diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command
new file mode 100644
index 0000000000..386c5bb655
--- /dev/null
+++ b/.buildkite/hooks/pre-command
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+set -eu
+
+docker ps || true
+free -m
+
+# We've now seen cases where origin/master on the build hosts can get
+# out of date. This causes us to build components unnecessarily.
+# Fetching it here hopefully will prevent this situation.
+echo "Fetching origin/master"
+git fetch origin master
+
+# DEBUGGING FOR RELENG
+# Fetch the git tags to see if that addresses the weird smart build behavior for Habitat
+git fetch --tags --force
+
+# Rebase onto current master to ensure this PR is closer to what happens when it's merged.
+# Only do this if it's actually a branch (i.e. a PR or a manually created build), not a
+# post-merge CI run of master.
+if [[ "$BUILDKITE_BRANCH" != "master" ]]; then
+ git config user.email "you@example.com" # these are needed for the rebase attempt
+ git config user.name "Your Name"
+ master=$(git show-ref -s --abbrev origin/master)
+ pr_head=$(git show-ref -s --abbrev HEAD)
+ github="https://github.com/chef/automate/commit/"
+ if git rebase origin/master >/dev/null; then
+ buildkite-agent annotate --style success --context "rebase-pr-branch-${master}" \
+ "Rebased onto master ([${master}](${github}${master}))."
+ else
+ git rebase --abort
+ buildkite-agent annotate --style warning --context "rebase-pr-branch-${master}" \
+ "Couldn't rebase onto master ([${master}](${github}${master})), building PR HEAD ([${pr_head}](${github}${pr_head}))."
+ fi
+fi