This file is indexed.

postinst is in gitlab 8.5.8+dfsg-5.

This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
#! /bin/sh
# postinst script for gitlab
# copied from postinst script for hplip
# $Id: hplip.postinst,v 1.1 2005/10/15 21:39:04 hmh Exp $
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.


case "$1" in
  configure)
    # Show debconf questions
    . /usr/share/debconf/confmodule

    # Read and export debian specific configuration
    # Only exported variables will be passed on to gitlab app
    gitlab_debian_conf_private=/var/lib/gitlab/gitlab-debian.conf
    export $(cat ${gitlab_debian_conf_private})

    # If /etc/gitlab/gitlab-debian.conf is already present, use it
    test -f ${gitlab_debian_conf} && export $(cat ${gitlab_debian_conf})

    # Create gitlab user
    . /usr/lib/gitlab/scripts/adduser.sh

    gitlab_builds_log=${gitlab_log_dir}/builds
    gitlab_repo_path=${gitlab_data_dir}/repositories
    gitlab_cache_path=${gitlab_data_dir}/cache
    gitlab_uploads_path=${gitlab_data_dir}/public/uploads

    # Create directories and change ownership
    echo "Creating runtime directories for gitlab..."
    for i in ${gitlab_repo_path} ${gitlab_cache_path} ${gitlab_uploads_path}\
    ${gitlab_pid_path} ${gitlab_log_dir} ${gitlab_shell_log} ${gitlab_builds_log}; do
      mkdir -p $i
      chown -R ${gitlab_user}: $i
    done


    # nginx/httpd should be able to connect to gitlab-workhorse.socket and serve public
    chown ${gitlab_user}:${nginx_user} -R ${gitlab_uploads_path}/.. ${gitlab_pid_path}
    
    # Customize permissions
    echo "Updating file permissions..."
    chmod -R ug+rwX,o-rwx ${gitlab_repo_path}/
    chmod -R ug-s ${gitlab_repo_path}/
    find ${gitlab_repo_path}/ -type d -print0 | xargs -0 chmod g+s
    for i in ${gitlab_data_dir} ${gitlab_shell_root}; do
      chown -R ${gitlab_user}: $i
    done

    su ${gitlab_user} -s /bin/sh -c "chmod 700 ${gitlab_uploads_path}"
    su ${gitlab_user} -s /bin/sh -c 'git config --global core.autocrlf "input"'

    # Commands below needs to be run from gitlab_app_root
    cd ${gitlab_app_root}

    # Obtain hostname from debconf db
    db_get gitlab/fqdn
    if [ "${RET}" != "" ]; then
      if ! grep GITLAB_HOST ${gitlab_debian_conf_private}; then
        echo "Configuring hostname and email..."
        export GITLAB_HOST=${RET} # We need this to configure nginx below
	cat <<EOF >> ${gitlab_debian_conf_private}
GITLAB_HOST=${RET} 
GITLAB_EMAIL_FROM="no-reply@${RET}"
GITLAB_EMAIL_DISPLAY_NAME="Gitlab"
GITLAB_EMAIL_REPLY_TO="no-reply@${RET}"
EOF
      fi

      # Check if ssl option is selected
      db_get gitlab/ssl
      gl_proto="http"
      if [ "${RET}" = "true" ]; then
        echo "Configuring nginx with HTTPS..."
        if ! grep GITLAB_HTTPS ${gitlab_debian_conf_private}; then
	  echo GITLAB_HTTPS=${RET} >> ${gitlab_debian_conf_private}
	  # Workaround for #813770
	  gl_proto="https"
	  echo "Configuring gitlab with HTTPS..."
 	  sed -i "s/#port: 80/port: 443/" ${gitlab_yml_private}
	  sed -i "s/https: false/https: true/" ${gitlab_yml_private}
          echo "Updating gitlab_url in gitlab-shell configuration..."
          sed -i \
	  "s/gitlab_url: http*:\/\/.*/gitlab_url: ${gl_proto}:\/\/${GITLAB_HOST}/"\
	  ${gitlab_shell_root}/config.yml
	fi
        mkdir -p /etc/gitlab/ssl
        if [ -f "${nginx_ssl_conf_example_gz}" ]; then
          # undo dh_installdocs auto compress
	  export nginx_conf_example_tmp=$(mktemp)
	  zcat ${nginx_ssl_conf_example_gz} > ${nginx_conf_example_tmp}
	  export nginx_conf_example=${nginx_conf_example_tmp}
	fi

        # Check if letsencrypt option is selected
        db_get gitlab/letsencrypt
        if [ "${RET}" = "true" ]; then
	  echo "Configuring letsencrypt..."
	  # Check if certificate is already present
	  if [ -e /etc/letsencrypt/live/${GITLAB_HOST}/fullchain.pem ]; then
	    echo "Let's encrypt certificate already present."
	  else
            ln -sf /etc/letsencrypt/live/${GITLAB_HOST}/fullchain.pem \
            /etc/gitlab/ssl/gitlab.crt
            ln -sf /etc/letsencrypt/live/${GITLAB_HOST}/privkey.pem \
            /etc/gitlab/ssl/gitlab.key
	    
	    # Port 80 and 443 should be available for letsencrypt
	    if command -v nginx > /dev/null; then
	      echo "Stopping nginx for letsencrypt..."
	      invoke-rc.d nginx stop
	    fi

	    letsencrypt -d ${GITLAB_HOST} certonly || {
	    echo "letsencrypt auto configuration failed..."
	    echo "Stop your webserver and try running letsencrypt manually..."
	    echo "letsencrypt -d ${GITLAB_HOST} certonly" 
	    }
	  fi
        fi
      fi

      # Manage gitlab.yml via ucf
      echo "Registering ${gitlab_yml} via ucf"
      ucf --debconf-ok --three-way ${gitlab_yml_private} ${gitlab_yml}
      ucfr gitlab ${gitlab_yml}

      # Manage gitlab-debian.conf via ucf
      echo "Registering ${gitlab_debian_conf} via ucf"
      ucf --debconf-ok --three-way ${gitlab_debian_conf_private} ${gitlab_debian_conf}
      ucfr gitlab ${gitlab_debian_conf}

      if test -f ${nginx_conf_example}; then
        nginx_site="/etc/nginx/sites-available/${GITLAB_HOST}"
        sed -e "s/YOUR_SERVER_FQDN/${GITLAB_HOST}/"\
        ${nginx_conf_example} >${nginx_site_private}
	ucf --debconf-ok --three-way ${nginx_site_private} ${nginx_site}
	ucfr gitlab ${nginx_site}
        ln -fs ${nginx_site} /etc/nginx/sites-enabled/
        rm -f ${nginx_conf_example_tmp}
      else
        echo "nginx example configuration file not found"
        exit 1
      fi
      # Reload nginx
      if command -v nginx > /dev/null; then
        echo "Reloading nginx configuration..."
        invoke-rc.d nginx reload
      fi
    else
      echo "Failed to retrieve fully qualified domain name"
      exit 1
    fi
    db_stop

    echo "Create database if not present"
    if ! su postgres -s /bin/sh -c "psql  gitlab_production -c ''"; then
      su postgres -c 'createdb -E unicode -T template0 gitlab_production'
    fi

    # Adjust database privileges
    . /usr/lib/gitlab/scripts/grantpriv.sh

    # Remove Gemfile.lock if present
    rm -f ${gitlab_data_dir}/Gemfile.lock

    # Create Gemfile.lock and .secret in /var/lib/gitlab
    su ${gitlab_user} -s /bin/sh -c "touch ${gitlab_data_dir}/Gemfile.lock"
    ln -sf ${gitlab_data_dir}/Gemfile.lock ${gitlab_app_root}/Gemfile.lock
    
    if ! [ -e ${gitlab_app_root}/.secret ] ; then
      ln -sf ${gitlab_data_dir}/.secret ${gitlab_app_root}/.secret
    fi

    echo "Verifying we have all required libraries..."
    su ${gitlab_user} -s /bin/sh -c 'bundle install --local'
        
    echo "Running final rake tasks and tweaks..."
    . /usr/lib/gitlab/scripts/rake-tasks.sh

           
    ;;

  abort-upgrade|abort-remove|abort-deconfigure)
    ;;

  *)
    echo "postinst called with unknown argument \`$1'" >&2
    exit 1
    ;;
esac

# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask gitlab-mailroom.service >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled gitlab-mailroom.service; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable gitlab-mailroom.service >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state gitlab-mailroom.service >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask gitlab-unicorn.service >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled gitlab-unicorn.service; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable gitlab-unicorn.service >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state gitlab-unicorn.service >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask gitlab-sidekiq.service >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled gitlab-sidekiq.service; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable gitlab-sidekiq.service >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state gitlab-sidekiq.service >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask gitlab-workhorse.service >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled gitlab-workhorse.service; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable gitlab-workhorse.service >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state gitlab-workhorse.service >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask gitlab.target >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled gitlab.target; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable gitlab.target >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state gitlab.target >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
	systemctl --system daemon-reload >/dev/null || true
	deb-systemd-invoke start gitlab.target >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installinit
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then
	# In case this system is running systemd, we need to ensure that all
	# necessary tmpfiles (if any) are created before starting.
	if [ -d /run/systemd/system ] ; then
		systemd-tmpfiles --create /usr/lib/tmpfiles.d/gitlab.conf >/dev/null || true
	fi
fi
# End automatically added section
# Automatically added by dh_installinit
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then
	if [ -x "/etc/init.d/gitlab" ]; then
		update-rc.d gitlab defaults >/dev/null || exit $?
	fi
fi
# End automatically added section


exit 0