Skip to content

Commit 2004e24

Browse files
committed
Merge remote-tracking branch 'origin/master' into special-user-data-dirs
Conflicts: test/test-ghe-backup.sh
2 parents 9480348 + 8d2c79f commit 2004e24

5 files changed

Lines changed: 68 additions & 2 deletions

File tree

bin/ghe-backup

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,25 @@ echo "Backing up GitHub settings ..."
9494
ghe-ssh "$host" -- 'ghe-export-settings' > settings.json ||
9595
failures="$failures settings"
9696

97+
# transfer license file
9798
ghe-ssh "$host" -- "cat '$GHE_REMOTE_LICENSE_FILE'" > enterprise.ghl ||
9899
failures="$failures license"
99100

101+
# transfer enterprise manage password hash if running against a v2.x instance.
102+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
103+
manage_password_file="$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
104+
if echo "sudo cat '$manage_password_file' 2>/dev/null || true" |
105+
ghe-ssh "$host" -- /bin/sh > manage-password+
106+
then
107+
if [ -n "$(cat manage-password+)" ]; then
108+
mv manage-password+ manage-password
109+
fi
110+
else
111+
unlink manage-password+
112+
failures="$failures manage-password"
113+
fi
114+
fi
115+
100116
echo "Backing up SSH authorized keys ..."
101117
ghe-ssh "$host" -- 'ghe-export-authorized-keys' > authorized-keys.json ||
102118
failures="$failures authorized-keys"

bin/ghe-restore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ if $clean_restore; then
9494
echo "Restoring license ..."
9595
ghe-ssh "$host" -- 'ghe-import-license' < "$GHE_RESTORE_SNAPSHOT_PATH/enterprise.ghl" 1>&3
9696

97+
if [ -f "$GHE_RESTORE_SNAPSHOT_PATH/manage-password" ]; then
98+
echo "Restoring management console password ..."
99+
cat "$GHE_RESTORE_SNAPSHOT_PATH/manage-password" |
100+
ghe-ssh "$host" -- \
101+
"sudo -u git dd of='$GHE_REMOTE_DATA_USER_DIR/common/manage-password' 2>&1"
102+
ghe-ssh "$host" -- \
103+
"sudo -u git chmod 0600 '$GHE_REMOTE_DATA_USER_DIR/common/manage-password'"
104+
fi
105+
97106
echo "
98107
sudo ghe-service-ensure-mysql &&
99108
sudo ghe-service-ensure-elasticsearch

test/test-ghe-backup.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ cd "$GHE_REMOTE_DATA_USER_DIR/pages"
1313
mkdir -p alice bob
1414
touch alice/index.html bob/index.html
1515

16+
# Create a fake manage password file
17+
mkdir -p "$GHE_REMOTE_DATA_USER_DIR/common"
18+
echo "fake password hash data" > "$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
19+
1620
# Create some fake hookshot data in the remote data directory
1721
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
1822
mkdir -p "$GHE_REMOTE_DATA_USER_DIR/hookshot"
@@ -120,6 +124,11 @@ begin_test "ghe-backup first snapshot"
120124
diff -ru "$GHE_REMOTE_DATA_USER_DIR/elasticsearch-snapshots" "$GHE_DATA_DIR/current/elasticsearch"
121125
fi
122126

127+
# verify manage-password file was backed up under v2.x VMs
128+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
129+
[ "$(cat "$GHE_DATA_DIR/current/manage-password")" = "fake password hash data" ]
130+
fi
131+
123132
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
124133
# verify all hookshot user data was transferred
125134
diff -ru "$GHE_REMOTE_DATA_USER_DIR/hookshot" "$GHE_DATA_DIR/current/hookshot"
@@ -193,6 +202,11 @@ begin_test "ghe-backup subsequent snapshot"
193202
diff -ru "$GHE_REMOTE_DATA_USER_DIR/elasticsearch-snapshots" "$GHE_DATA_DIR/current/elasticsearch"
194203
fi
195204

205+
# verify manage-password file was backed up under v2.x VMs
206+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
207+
[ "$(cat "$GHE_DATA_DIR/current/manage-password")" = "fake password hash data" ]
208+
fi
209+
196210
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
197211
# verify all hookshot user data was transferred
198212
diff -ru "$GHE_REMOTE_DATA_USER_DIR/hookshot" "$GHE_DATA_DIR/current/hookshot"
@@ -241,5 +255,18 @@ begin_test "ghe-backup fails fast when other run in progress"
241255

242256
ln -s 1 "$GHE_DATA_DIR/in-progress"
243257
! ghe-backup
258+
259+
unlink "$GHE_DATA_DIR/in-progress"
260+
)
261+
end_test
262+
263+
begin_test "ghe-backup without manage-password file"
264+
(
265+
set -e
266+
267+
unlink "$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
268+
ghe-backup
269+
270+
[ ! -f "$GHE_DATA_DIR/current/manage-password" ]
244271
)
245272
end_test

test/test-ghe-restore.sh

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ echo "fake ghe-export-ssh-host-keys data" > "$GHE_DATA_DIR/current/ssh-host-keys
6060
echo "fake ghe-export-repositories data" > "$GHE_DATA_DIR/current/repositories.tar"
6161
echo "fake ghe-export-settings data" > "$GHE_DATA_DIR/current/settings.json"
6262
echo "fake license data" > "$GHE_DATA_DIR/current/enterprise.ghl"
63+
echo "fake manage password hash data" > "$GHE_DATA_DIR/current/manage-password"
6364
echo "rsync" > "$GHE_DATA_DIR/current/strategy"
6465

6566
begin_test "ghe-restore into unconfigured vm"
@@ -73,8 +74,10 @@ begin_test "ghe-restore into unconfigured vm"
7374
export GHE_RESTORE_HOST
7475

7576
# run ghe-restore and write output to file for asserting against
76-
ghe-restore -v > "$TRASHDIR/restore-out" 2>&1
77-
cat "$TRASHDIR/restore-out"
77+
if ! ghe-restore -v > "$TRASHDIR/restore-out" 2>&1; then
78+
cat "$TRASHDIR/restore-out"
79+
false
80+
fi
7881

7982
# verify connect to right host
8083
grep -q "Connect 127.0.0.1 OK" "$TRASHDIR/restore-out"
@@ -95,6 +98,12 @@ begin_test "ghe-restore into unconfigured vm"
9598
test -d "$GHE_REMOTE_DATA_USER_DIR/elasticsearch-legacy"
9699
fi
97100

101+
# verify manage password was restored under v2.x or greater VMs
102+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
103+
test -f "$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
104+
[ "$(cat "$GHE_REMOTE_DATA_USER_DIR/common/manage-password")" = "fake manage password hash data" ]
105+
fi
106+
98107
# verify service-ensure scripts were run under versions >= v2.x
99108
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
100109
grep -q "ghe-service-ensure-mysql OK" "$TRASHDIR/restore-out"

test/testlib.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ cd "$TRASHDIR"
7777
setup_remote_metadata () {
7878
mkdir -p "$GHE_REMOTE_DATA_DIR" "$GHE_REMOTE_DATA_USER_DIR"
7979
mkdir -p "$(dirname "$GHE_REMOTE_METADATA_FILE")"
80+
81+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
82+
mkdir -p "$GHE_REMOTE_DATA_USER_DIR/common"
83+
fi
84+
8085
echo '
8186
{
8287
"timestamp": "Wed Jul 30 13:48:52 +0000 2014",

0 commit comments

Comments
 (0)