From 13a8722464565b272bc00acd608761a3a83dcce0 Mon Sep 17 00:00:00 2001 From: Amit Rathi Date: Wed, 5 Jun 2019 19:50:29 +0000 Subject: Setup Git client for Jupyter --- app/models/clusters/applications/jupyter.rb | 11 ++++++++++- app/services/clusters/applications/base_service.rb | 2 +- changelogs/unreleased/t1.yml | 5 +++++ spec/models/clusters/applications/jupyter_spec.rb | 2 ++ vendor/jupyter/values.yaml | 18 ++++++++++++++++-- 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 changelogs/unreleased/t1.yml diff --git a/app/models/clusters/applications/jupyter.rb b/app/models/clusters/applications/jupyter.rb index bd9c453e2a4..4aaa1f941e5 100644 --- a/app/models/clusters/applications/jupyter.rb +++ b/app/models/clusters/applications/jupyter.rb @@ -61,6 +61,10 @@ module Clusters "http://#{hostname}/hub/oauth_callback" end + def oauth_scopes + 'api read_repository write_repository' + end + private def specification @@ -94,7 +98,8 @@ module Clusters }, "singleuser" => { "extraEnv" => { - "GITLAB_CLUSTER_ID" => cluster.id.to_s + "GITLAB_CLUSTER_ID" => cluster.id.to_s, + "GITLAB_HOST" => gitlab_host } } } @@ -112,6 +117,10 @@ module Clusters Gitlab.config.gitlab.url end + def gitlab_host + Gitlab.config.gitlab.host + end + def content_values YAML.load_file(chart_values_file).deep_merge!(specification) end diff --git a/app/services/clusters/applications/base_service.rb b/app/services/clusters/applications/base_service.rb index 14a45437287..a9feb60be6e 100644 --- a/app/services/clusters/applications/base_service.rb +++ b/app/services/clusters/applications/base_service.rb @@ -81,7 +81,7 @@ module Clusters oauth_application_params = { name: params[:application], redirect_uri: application.callback_url, - scopes: 'api read_user openid', + scopes: application.oauth_scopes, owner: current_user } diff --git a/changelogs/unreleased/t1.yml b/changelogs/unreleased/t1.yml new file mode 100644 index 00000000000..6740375485d --- /dev/null +++ b/changelogs/unreleased/t1.yml @@ -0,0 +1,5 @@ +--- +title: Set up git client in Jupyter installtion +merge_request: 28783 +author: Amit Rathi +type: added diff --git a/spec/models/clusters/applications/jupyter_spec.rb b/spec/models/clusters/applications/jupyter_spec.rb index fc9ebed863e..43fa1010b2b 100644 --- a/spec/models/clusters/applications/jupyter_spec.rb +++ b/spec/models/clusters/applications/jupyter_spec.rb @@ -96,6 +96,8 @@ describe Clusters::Applications::Jupyter do expect(values).to match(/clientId: '?#{application.oauth_application.uid}/) expect(values).to match(/callbackUrl: '?#{application.callback_url}/) expect(values).to include("gitlabProjectIdWhitelist:\n - #{application.cluster.project.id}") + expect(values).to include("c.GitLabOAuthenticator.scope = ['api read_repository write_repository']") + expect(values).to match(/GITLAB_HOST: '?#{Gitlab.config.gitlab.host}/) end context 'when cluster belongs to a project' do diff --git a/vendor/jupyter/values.yaml b/vendor/jupyter/values.yaml index a5e13fdc104..0fbf36b39cc 100644 --- a/vendor/jupyter/values.yaml +++ b/vendor/jupyter/values.yaml @@ -4,9 +4,9 @@ rbac: hub: extraEnv: JUPYTER_ENABLE_LAB: 1 - SINGLEUSER_IMAGE: 'registry.gitlab.com/gitlab-org/jupyterhub-user-image:latest' extraConfig: | c.KubeSpawner.cmd = ['jupyter-labhub'] + c.GitLabOAuthenticator.scope = ['api read_repository write_repository'] async def add_auth_env(spawner): ''' @@ -23,6 +23,8 @@ hub: spawner.environment['GITLAB_ACCESS_TOKEN'] = auth_state['access_token'] spawner.environment['GITLAB_USER_LOGIN'] = auth_state['gitlab_user']['username'] spawner.environment['GITLAB_USER_ID'] = str(auth_state['gitlab_user']['id']) + spawner.environment['GITLAB_USER_EMAIL'] = auth_state['gitlab_user']['email'] + spawner.environment['GITLAB_USER_NAME'] = auth_state['gitlab_user']['name'] c.KubeSpawner.pre_spawn_hook = add_auth_env @@ -33,10 +35,22 @@ auth: singleuser: defaultUrl: "/lab" + image: + name: registry.gitlab.com/gitlab-org/jupyterhub-user-image + tag: latest lifecycleHooks: postStart: exec: - command: ["sh", "-c", "git clone https://gitlab.com/gitlab-org/nurtch-demo.git DevOps-Runbook-Demo || true"] + command: + - "sh" + - "-c" + - > + git clone https://gitlab.com/gitlab-org/nurtch-demo.git DevOps-Runbook-Demo || true; + echo "https://${GITLAB_USER_LOGIN}:${GITLAB_ACCESS_TOKEN}@${GITLAB_HOST}" > ~/.git-credentials; + git config --global credential.helper store; + git config --global user.email "${GITLAB_USER_EMAIL}"; + git config --global user.name "${GITLAB_USER_NAME}"; + jupyter serverextension enable --py jupyterlab_git ingress: enabled: true -- cgit v1.2.1