Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: testing_support/gerrit-init.sh

Issue 20441002: Ability to install custom Gerrit version. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 if [ -n "$1" ]; then 6 set -e
7 rundir="$1" 7
8 else 8 while test $# -ne 0; do
9 case "$1" in
10 -v)
11 version="$2"
12 shift
13 ;;
14 -d)
15 rundir="$2"
16 shift
17 ;;
18 *)
19 rundir="$1"
20 ;;
21 esac
22 shift
23 done
24
25 if [ -z "$rundir" ]; then
9 rundir=$(mktemp -d) 26 rundir=$(mktemp -d)
10 fi 27 fi
11 28
12 this_dir=$(dirname $0) 29 this_dir=$(dirname $0)
13 gerrit_exe="$this_dir/gerrit.war" 30 gerrit_exe="$this_dir/gerrit.war"
14 31
15 account_id=101 32 account_id=101
16 full_name='Test Account' 33 full_name='Test Account'
17 maximum_page_size='25' 34 maximum_page_size='25'
18 password='test-password' 35 password='test-password'
19 preferred_email="test-username@test.org" 36 preferred_email="test-username@test.org"
20 registered_on=$(date '+%Y-%m-%d %H:%M:%S.000%:::z') 37 registered_on=$(date '+%Y-%m-%d %H:%M:%S.000%:::z')
21 username='test-username' 38 username='test-username'
22 39
23 # The python code below for picking the "latest" gerrit release is cribbed and 40 # The python code below for picking the "latest" gerrit release is cribbed and
24 # ported from the javascript at: 41 # ported from the javascript at:
25 # 42 #
26 # http://gerrit-releases.storage.googleapis.com/index.html 43 # http://gerrit-releases.storage.googleapis.com/index.html
27 url='https://www.googleapis.com/storage/v1beta2/b/gerrit-releases/o?projection=n oAcl' 44 url='https://www.googleapis.com/storage/v1beta2/b/gerrit-releases/o?projection=n oAcl'
28 curl --ssl-reqd -s $url | python <(cat <<EOF 45 curl --ssl-reqd -s $url | python <(cat <<EOF
29 # Reads json-encoded text from stdin in the format: 46 # Receives Gerrit version via command line and reads json-encoded
47 # text from stdin in the format:
30 # 48 #
31 # { 49 # {
32 # "items": [ 50 # "items": [
33 # { 51 # {
34 # "name": "gerrit-<version>.war", 52 # "name": "gerrit-<version>.war",
35 # "md5Hash": "<base64 encoded md5sum>", 53 # "md5Hash": "<base64 encoded md5sum>",
36 # }, 54 # },
37 # { 55 # {
38 # "name": "gerrit-<version>.war", 56 # "name": "gerrit-<version>.war",
39 # "md5Hash": "<base64 encoded md5sum>", 57 # "md5Hash": "<base64 encoded md5sum>",
40 # }, 58 # },
41 # ... 59 # ...
42 # } 60 # }
43 # 61 #
44 # ...and prints the name and md5sum of the latest non-release-candidate version. 62 # ...and prints the name and md5sum of the corresponding *.war file.
45 63
46 import json 64 import json
47 import re 65 import re
48 import sys 66 import sys
49 67
68 requested_version = sys.argv[1] if len(sys.argv) > 1 else None
50 gerrit_re = re.compile('gerrit(?:-full)?-([0-9.]+(?:-rc[0-9]+)?)[.]war') 69 gerrit_re = re.compile('gerrit(?:-full)?-([0-9.]+(?:-rc[0-9]+)?)[.]war')
51 j = json.load(sys.stdin) 70 j = json.load(sys.stdin)
52 items = [(x, gerrit_re.match(x['name'])) for x in j['items']] 71 items = [(x, gerrit_re.match(x['name'])) for x in j['items']]
53 items = [(x, m.group(1)) for x, m in items if m] 72 items = [(x, m.group(1)) for x, m in items if m]
54 def _cmp(a, b): 73 def _cmp(a, b):
55 an = a[1].replace('-rc', '.rc').split('.') 74 an = a[1].replace('-rc', '.rc').split('.')
56 bn = b[1].replace('-rc', '.rc').split('.') 75 bn = b[1].replace('-rc', '.rc').split('.')
57 while len(an) < len(bn): 76 while len(an) < len(bn):
58 an.append('0') 77 an.append('0')
59 while len(bn) < len(an): 78 while len(bn) < len(an):
60 bn.append('0') 79 bn.append('0')
61 for i in range(len(an)): 80 for i in range(len(an)):
62 ai = int(an[i][2:]) if 'rc' in an[i] else 1000 + int(an[i]) 81 ai = int(an[i][2:]) if 'rc' in an[i] else 1000 + int(an[i])
63 bi = int(bn[i][2:]) if 'rc' in bn[i] else 1000 + int(bn[i]) 82 bi = int(bn[i][2:]) if 'rc' in bn[i] else 1000 + int(bn[i])
64 if ai != bi: 83 if ai != bi:
65 return -1 if ai > bi else 1 84 return -1 if ai > bi else 1
66 return 0 85 return 0
86
87 if requested_version:
88 for info, version in items:
89 if version == requested_version:
90 print '"%s" "%s"' % (info['name'], info['md5Hash'])
91 sys.exit(0)
92 print >> sys.stderr, 'No such Gerrit version: %s' % requested_version
93 sys.exit(1)
94
67 items.sort(cmp=_cmp) 95 items.sort(cmp=_cmp)
68 for x in items: 96 for x in items:
69 if 'rc' not in x[0]['name']: 97 if 'rc' not in x[0]['name']:
70 print '"%s" "%s"' % (x[0]['name'], x[0]['md5Hash']) 98 print '"%s" "%s"' % (x[0]['name'], x[0]['md5Hash'])
71 sys.exit(0) 99 sys.exit(0)
72 EOF 100 EOF
73 ) | xargs | while read name md5; do 101 ) "$version" | xargs | while read name md5; do
74 # Download the latest gerrit version if necessary, and verify the md5sum. 102 # Download the requested gerrit version if necessary, and verify the md5sum.
75 target="$this_dir/$name" 103 target="$this_dir/$name"
76 net_sum=$(echo -n $md5 | base64 -d | od -tx1 | head -1 | cut -d ' ' -f 2- | 104 net_sum=$(echo -n $md5 | base64 -d | od -tx1 | head -1 | cut -d ' ' -f 2- |
77 sed 's/ //g') 105 sed 's/ //g')
78 if [ -f "$target" ]; then 106 if [ -f "$target" ]; then
79 file_sum=$(md5sum "$target" | awk '{print $1}' | xargs) 107 file_sum=$(md5sum "$target" | awk '{print $1}' | xargs)
80 if [ "$file_sum" = "$net_sum" ]; then 108 if [ "$file_sum" = "$net_sum" ]; then
81 ln -sf "$name" "$gerrit_exe" 109 ln -sf "$name" "$gerrit_exe"
82 break 110 break
83 else 111 else
84 rm -rf "$target" 112 rm -rf "$target"
(...skipping 22 matching lines...) Expand all
107 mkdir -p "${rundir}/etc" 135 mkdir -p "${rundir}/etc"
108 cat <<EOF > "${rundir}/etc/gerrit.config" 136 cat <<EOF > "${rundir}/etc/gerrit.config"
109 [auth] 137 [auth]
110 type = http 138 type = http
111 gitBasicAuth = true 139 gitBasicAuth = true
112 EOF 140 EOF
113 141
114 # Initialize the gerrit instance. 142 # Initialize the gerrit instance.
115 java -jar "$gerrit_exe" init --no-auto-start --batch -d "${rundir}" 143 java -jar "$gerrit_exe" init --no-auto-start --batch -d "${rundir}"
116 144
145 # Create SSH key pair for the first user.
146 mkdir -p "${rundir}/tmp"
147 ssh-keygen -t rsa -q -f "${rundir}/tmp/id_rsa" -N ""
148 ssh_public_key="$(cat ${rundir}/tmp/id_rsa.pub)"
149
117 # Set up the first user, with admin priveleges. 150 # Set up the first user, with admin priveleges.
118 cat <<EOF | java -jar "$gerrit_exe" gsql -d "${rundir}" > /dev/null 151 cat <<EOF | java -jar "$gerrit_exe" gsql -d "${rundir}" > /dev/null
119 INSERT INTO ACCOUNTS (FULL_NAME, MAXIMUM_PAGE_SIZE, PREFERRED_EMAIL, REGISTERED_ ON, ACCOUNT_ID) VALUES ('${full_name}', ${maximum_page_size}, '${preferred_email }', '${registered_on}', ${account_id}); 152 INSERT INTO ACCOUNTS (FULL_NAME, MAXIMUM_PAGE_SIZE, PREFERRED_EMAIL, REGISTERED_ ON, ACCOUNT_ID) VALUES ('${full_name}', ${maximum_page_size}, '${preferred_email }', '${registered_on}', ${account_id});
120 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EXTERNAL_ID) VALUES (${account_id} , 'gerrit:${username}'); 153 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EXTERNAL_ID) VALUES (${account_id} , 'gerrit:${username}');
121 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EXTERNAL_ID) VALUES (${account_id} , 'username:${username}'); 154 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EXTERNAL_ID) VALUES (${account_id} , 'username:${username}');
122 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EMAIL_ADDRESS, PASSWORD) VALUES ($ {account_id}, '${preferred_email}', '${password}'); 155 INSERT INTO ACCOUNT_EXTERNAL_IDS (ACCOUNT_ID, EMAIL_ADDRESS, PASSWORD) VALUES ($ {account_id}, '${preferred_email}', '${password}');
123 INSERT INTO ACCOUNT_GROUP_MEMBERS (ACCOUNT_ID, GROUP_ID) VALUES (${account_id}, 1); 156 INSERT INTO ACCOUNT_GROUP_MEMBERS (ACCOUNT_ID, GROUP_ID) VALUES (${account_id}, 1);
157 INSERT INTO ACCOUNT_SSH_KEYS (ACCOUNT_ID, SSH_PUBLIC_KEY, VALID, SEQ) VALUES (${ account_id}, '${ssh_public_key}', 'Y', 0);
124 EOF 158 EOF
125 159
126 # Create a netrc file to authenticate as the first user. 160 # Create a netrc file to authenticate as the first user.
127 mkdir -p "${rundir}/tmp"
128 cat <<EOF > "${rundir}/tmp/.netrc" 161 cat <<EOF > "${rundir}/tmp/.netrc"
129 machine localhost login ${username} password ${password} 162 machine localhost login ${username} password ${password}
130 EOF 163 EOF
131 164
132 # Create a .git-credentials file, to enable password-less push. 165 # Create a .git-credentials file, to enable password-less push.
133 cat <<EOF > "${rundir}/tmp/.git-credentials" 166 cat <<EOF > "${rundir}/tmp/.git-credentials"
134 http://${username}:${password}@localhost:8080 167 http://${username}:${password}@localhost:8080
135 EOF 168 EOF
136 169
137 echo 170 echo
138 echo "To start gerrit server:" 171 echo "To start gerrit server:"
139 echo " ${rundir}/bin/gerrit.sh start" 172 echo " ${rundir}/bin/gerrit.sh start"
140 echo 173 echo
141 echo "To use the REST API:" 174 echo "To use the REST API:"
142 echo " curl --netrc-file ${rundir}/tmp/.netrc http://localhost:8080/<endpoint>" 175 echo " curl --netrc-file ${rundir}/tmp/.netrc http://localhost:8080/<endpoint>"
143 echo 176 echo
177 echo "To use SSH API:"
178 echo " ssh ${username}@localhost -p 29418 -i ${rundir}/tmp/id_rsa gerrit"
179 echo
144 echo "To enable 'git push' without a password prompt:" 180 echo "To enable 'git push' without a password prompt:"
145 echo " git config credential.helper 'store --file=${rundir}/tmp/.git-credential s'" 181 echo " git config credential.helper 'store --file=${rundir}/tmp/.git-credential s'"
146 echo 182 echo
147 echo "To stop the server:" 183 echo "To stop the server:"
148 echo " ${rundir}/bin/gerrit.sh stop" 184 echo " ${rundir}/bin/gerrit.sh stop"
149 echo 185 echo
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698