Challenges with GitLab Docker Image and Initial Repo Import

43 views
Skip to first unread message

Michael Hoffman

unread,
Aug 29, 2016, 3:42:59 PM8/29/16
to GitLab
I'm working on a project that automates the creation of a project's build box, including the setup of GitLab CE with sample projects. I'm facing a variety of challenges 

- Question 1 - 

Is there a way to initialize the root admin account through the CLI? Per issue 1980 (https://gitlab.com/gitlab-org/gitlab-ce/issues/1980) it looks as if the default login credentials are no longer available. I need this as I'm setting up GitLab as part of the initialization of a build box and wouldn't have logged in to GitLab yet. 

- Question 2 - 

I need to initialize SSH keys as part of the startup of my GitLab instance, but I have not found any details on how to do this. 

- Scripts - 

Here are the scripts of what I'm trying to do:

docker-compose.yml

version: '2'
services
:
  registry
:
    restart
: always
    image
: registry:2
    ports
:
     
- 5000:5000
    networks
:
     
- front-tier
     
- back-tier
  gitlab
:
        build
: ./gitlab
        image
: mycompany/gitlab
        ports
:
               
- "10080:80"
               
- "10022:22"
        networks
:
         
- front-tier
         
- back-tier
        environment
:
               
- TZ=America/Chicago
               
- GITLAB_TIMEZONE=Chicago


               
- GITLAB_SECRETS_DB_KEY_BASE=NmVlNmUzM2ZlYmFlYWQ2YjUxNzJmNmE2MG


               
- GITLAB_HOST=localhost
               
- GITLAB_PORT=10080
               
- GITLAB_SSH_PORT=10022


               
- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
               
- GITLAB_NOTIFY_PUSHER=false


               
- GITLAB_EMAIL=operator@localhost
               
- GITLAB_EMAIL_REPLY_TO=noreply@localhost
               
- GITLAB_INCOMING_EMAIL_ADDRESS=reply@localhost


               
- GITLAB_BACKUPS=daily
               
- GITLAB_BACKUP_TIME=01:00


               
- SMTP_ENABLED=false
               
- SMTP_DOMAIN=localdomain
               
- SMTP_HOST=localhost
               
- SMTP_PORT=587
               
- SMTP_USER=postmaster@localhost
               
- SMTP_PASS=password
               
- SMTP_STARTTLS=true
               
- SMTP_AUTHENTICATION=login


               
- IMAP_ENABLED=false
               
- IMAP_HOST=localhost
               
- IMAP_PORT=993
               
- IMAP_USER=postmaster@localhost
               
- IMAP_PASS=password
               
- IMAP_SSL=true
               
- IMAP_STARTTLS=false
        volumes
:
               
- gitlab-config-data:/etc/gitlab
               
- gitlab-logs-data:/var/opt/gitlab/postgresql/data
               
- gitlab-data:/var/opt/gitlab/git-data
        restart
: always


volumes
:
  gitlab
-config-data:
    driver
: local
   
  gitlab
-logs-data:
    driver
: local


  gitlab
-data:
    driver
: local


networks
:
  front
-tier:
    driver
: bridge
  back
-tier:
    driver
: bridge

Dockerfile

FROM gitlab/gitlab-ce:latest


RUN apt
-get update \
     
&& apt-get install -y sudo
     
COPY
./run.sh /assets/run.sh


COPY
./data /tmp/config/


COPY
./projects /tmp/projects/


RUN chmod
+x /assets/run.sh


CMD
"./assets/run.sh"


run.sh


#!/bin/bash


# Initialize configuration files if not already done


if [ ! -f /etc/gitlab/ssh_host_ed25519_key.pub ]; then
  cp
-r /tmp/config/* /etc/gitlab
  chmod 600 /etc/gitlab/ssh_*_key
fi


# Start the app in the background, we need to have postgres running.
/assets/wrapper &


# Wait for it to start up.
sleep 2m


# If no repos exist, pre-populate
if [[ ! $(gitlab-rake gitlab:list_repos) ]]; then
  # Configure up git
  git config --global user.email "in...@nvisia.com"
  git config --global user.name "root"


  # Work in the tmp folder  
  cd /tmp/projects
  chmod 777 *.tar
 
  # Create group repo directory
  mkdir /var/opt/gitlab/git-data/repositories/nvisia


  # Create the four project directories
  mkdir /var/opt/gitlab/git-data/repositories/nvisia/hello-world-pipeline.git
  mkdir /var/opt/gitlab/git-data/repositories/nvisia/hello-world-service.git
  mkdir /var/opt/gitlab/git-data/repositories/nvisia/hello-world-ui.git
  mkdir /var/opt/gitlab/git-data/repositories/nvisia/hello-world-util.git


  # Set ownership to git and rights to folders
  chown -R git:git /var/opt/gitlab/git-data/repositories
  chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories


  # Import the bare repos into GitLab
  gitlab-rake gitlab:import:repos
  gitlab-rake gitlab:import:all_users_to_all_groups
  gitlab-rake gitlab:import:all_users_to_all_projects


  # Clone each repo, add the files and commit up.
  git clone http://root:password@localhost/nvisia/hello-world-pipeline.git
  tar -xvf hello-world-pipeline.tar
  cd /tmp/projects/hello-world-pipeline
  git add .
  git commit -m "Initial Project"
  git push -u origin master
fi


wait

Reply all
Reply to author
Forward
0 new messages