summaryrefslogtreecommitdiff
path: root/.gitpod.yml
blob: 684f9a8e5a29c29a617792ec9d513e2355273832 (plain)
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
# Gitpod file reference
# https://www.gitpod.io/docs/configure/workspaces/tasks

image: registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:stable
checkoutLocation: gitlab-development-kit/gitlab

tasks:

  - name: GDK
    # "command:" emits gitpod-start
    before: |
      START_UNIXTIME="$(date +%s)"
      echo START_UNIXTIME="$(date +%s)" > /workspace/gitpod_start_time.sh
    command: |
      # send signal to other tasks that Gitpod started
      gp sync-done gitpod-start
      echo "Waiting for other task to copy GDK.."
      gp sync-await gdk-copied && cd /workspace/gitlab-development-kit && gdk help

  - name: GitLab
    # "command:" emits gdk-copied
    init: |
      (
        set -e
        echo "$(date) – Copying GDK" | tee -a /workspace/startup.log
        cp -r $HOME/gitlab-development-kit /workspace/
        cd /workspace/gitlab-development-kit
        mv -v /workspace/gitlab-development-kit/secrets.yml /workspace/gitlab-development-kit/gitlab/config
        # ensure gdk.yml has correct instance settings
        gdk config set gitlab.rails.port 443  |& tee -a /workspace/startup.log
        gdk config set gitlab.rails.https.enabled true  |& tee -a /workspace/startup.log
        gdk config set webpack.host 127.0.0.1  |& tee -a /workspace/startup.log
        gdk config set webpack.static false  |& tee -a /workspace/startup.log
        gdk config set webpack.live_reload false  |& tee -a /workspace/startup.log
        # reconfigure GDK
        echo "$(date) – Reconfiguring GDK" | tee -a /workspace/startup.log
        gdk reconfigure
        # run DB migrations
        echo "$(date) – Running DB migrations" | tee -a /workspace/startup.log
        make gitlab-db-migrate
        # stop GDK
        echo "$(date) – Stopping GDK" | tee -a /workspace/startup.log
        gdk stop
        echo "$(date) – GDK stopped" | tee -a /workspace/startup.log
      )
    command: |
      (
        set -e
        gp sync-done gdk-copied
        gp sync-await gitpod-start
        [[ -f /workspace/gitpod_start_time.sh ]] && source /workspace/gitpod_start_time.sh
        SECONDS=0
        cd /workspace/gitlab-development-kit
        make gitlab-update
        make gitlab-shell-update
        make gitlab-workhorse-update
        # update GDK
        if [ "$GITLAB_UPDATE_GDK" == true ]; then
          echo "$(date) – Updating GDK" | tee -a /workspace/startup.log
          gdk update
        fi
        # ensure gdk.yml has correct instance settings
        gdk config set gitlab.rails.hostname $(gp url 3000 | sed -e 's+^http[s]*://++')
        gdk config set gitlab.rails.port 443
        gdk config set gitlab.rails.https.enabled true
        gdk config set webpack.host 127.0.0.1
        gdk config set webpack.static false
        gdk config set webpack.live_reload false
        # reconfigure GDK
        echo "$(date) – Reconfiguring GDK" | tee -a /workspace/startup.log
        gdk reconfigure
        # start GDK
        echo "$(date) – Starting GDK" | tee -a /workspace/startup.log
        export DEV_SERVER_PUBLIC_ADDR=$(gp url 3808)
        export RAILS_HOSTS=$(gp url 3000 | sed -e 's+^http[s]*://++')
        gdk start
        # Run DB migrations
        if [ "$GITLAB_RUN_DB_MIGRATIONS" == true ]; then
          make gitlab-db-migrate
        fi
        cd /workspace/gitlab-development-kit/gitlab
        echo "--- on branch: $(git branch --show-current)"
        echo "--- installing lefthook"
        bundle exec lefthook install
        echo "--- resetting db/structure.sql"
        git checkout db/structure.sql
        echo "--- waiting for GitLab"
        gp ports await 3000
        printf "Awaiting /-/readiness on $(gp url 3000) ..."
        # Check /-/readiness which returns JSON, but we're only interested in the exit code
        #
        # We use http://localhost:3000 instead of the public hostname because
        # it's no longer possible to access as specific cookies are required
        until curl --silent --no-buffer --fail http://localhost:3000/-/readiness > /dev/null 2>&1; do printf '.'; sleep 5; done && echo ""
        # Give Gitpod a few more seconds to set up everything ...
        sleep 5
        printf "$(date) – GitLab is up (took ~%.1f minutes)\n" "$((10*$SECONDS/60))e-1" | tee -a /workspace/startup.log
        gp preview $(gp url 3000) || true
        PREBUILD_LOG=(/workspace/.gitpod/prebuild-log-*)
        [[ -f /workspace/gitpod_start_time.sh ]] && printf "Took %.1f minutes from https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitpod.yml being executed through to completion %s\n" "$((10*(($(date +%s)-${START_UNIXTIME}))/60))e-1" "$([[ -f "$PREBUILD_LOG" ]] && echo "With Prebuilds")"
      )

ports:
  - port: 2222  # sshd
    onOpen: ignore
  - port: 3000  # rails-web
    onOpen: notify
  - port: 3005  # gitlab-docs
    onOpen: notify
  - port: 3010  # gitlab-pages
    onOpen: ignore
  - port: 3808  # webpack
    onOpen: ignore
  - port: 5000  # auto_devops
    onOpen: ignore
  - port: 5778  # jaeger
    onOpen: ignore
  - port: 9000  # object_store / minio
    onOpen: ignore
  - port: 9122  # gitlab-shell
    onOpen: ignore

vscode:
  extensions:
    - rebornix.ruby@0.28.1
    - wingrunr21.vscode-ruby@0.28.0
    - karunamurti.haml@1.4.1
    - octref.vetur@0.36.0
    - dbaeumer.vscode-eslint@2.2.6
    - GitLab.gitlab-workflow@3.56.0
    - DavidAnson.vscode-markdownlint@0.47.0
    - esbenp.prettier-vscode