Python required for RST rendering
Summary
We in the University of Cambridge are kicking the tires on our GitLab EE install and have discovered that RST documents do not get rendered. Example repository and logs are linked to from https://gitlab.developers.cam.ac.uk/uis/devops/devhub/docs/issues/1. The logs suggest that one of the GitLab containers should have Python installed.
Steps to reproduce
- Install GitLab from helm chart.
- Create a project and repository with a ReStructuredText README.
- Visit project page.
Configuration used
We use terraform to manage the helm release. The command line options used to build the configuration are as follows. Specific values for the variables can be provided on request.
# By default, new users cannot create groups. This does not affect the ability
# of existing group owners to create subgroups and it does not change the "can
# create groups" bit for existing users.
set {
name = "global.appConfig.defaultCanCreateGroup"
value = "false"
}
# Users (unless invited by others) will have their usernames match their
# crsids. In general, we want to discourage changing usernames.
set {
name = "global.appConfig.usernameChangingEnabled"
value = "false"
}
# Components which should not be installed
set {
name = "gitlab-runner.install"
value = "false"
}
set {
name = "postgresql.install"
value = "false"
}
set {
name = "global.minio.enabled"
value = "false"
}
# Certmanager issuer
set {
name = "certmanager-issuer.email"
value = "${var.certmanager_email}"
}
# Database configuration redacted
# Domain, hostname and external IP configuration redacted
# Persistence. Use a custom retained storage class which is SSD backed.
set {
name = "redis.persistence.storageClass"
value = "${var.storage_class}"
}
set {
name = "gitlab.gitaly.persistence.storageClass"
value = "${var.storage_class}"
}
set {
name = "gitlab.gitaly.persistence.size"
value = "${var.gitaly_persistence_size}"
}
# Backup object storage
set {
name = "global.appConfig.backups.bucket"
value = "${google_storage_bucket.backup.name}"
}
set {
name = "global.appConfig.backups.tmpBucket"
value = "${google_storage_bucket.backup_temp.name}"
}
set {
name = "gitlab.task-runner.backups.objectStorage.config.secret"
value = "${local.backups_s3cfg_secret}"
}
set {
name = "gitlab.task-runner.backups.objectStorage.config.key"
value = "s3cfg"
}
# Uploads object storage
set {
name = "global.appConfig.uploads.bucket"
value = "${local.uploads_storage_bucket}"
}
set {
name = "global.appConfig.uploads.connection.secret"
value = "${local.uploads_storage_secret}"
}
set {
name = "global.appConfig.uploads.connection.key"
value = "${local.uploads_storage_key}"
}
# Lfs object storage
set {
name = "global.appConfig.lfs.bucket"
value = "${local.lfs_storage_bucket}"
}
set {
name = "global.appConfig.lfs.connection.secret"
value = "${local.lfs_storage_secret}"
}
set {
name = "global.appConfig.lfs.connection.key"
value = "${local.lfs_storage_key}"
}
# Artifacts object storage
set {
name = "global.appConfig.artifacts.bucket"
value = "${local.artifacts_storage_bucket}"
}
set {
name = "global.appConfig.artifacts.connection.secret"
value = "${local.artifacts_storage_secret}"
}
set {
name = "global.appConfig.artifacts.connection.key"
value = "${local.artifacts_storage_key}"
}
# Packages object storage
set {
name = "global.appConfig.packages.bucket"
value = "${local.packages_storage_bucket}"
}
set {
name = "global.appConfig.packages.connection.secret"
value = "${local.packages_storage_secret}"
}
set {
name = "global.appConfig.packages.connection.key"
value = "${local.packages_storage_key}"
}
# Configuration for docker image registry storage
set {
name = "registry.storage.secret"
value = "${local.registry_storage_secret}"
}
set {
name = "registry.storage.key"
value = "${local.registry_storage_key}"
}
set {
name = "registry.storage.extraKey"
value = "${local.registry_storage_extra_key}"
}
set {
name = "global.registry.bucket"
value = "${local.registry_storage_bucket}"
}
# SAML configuration
set {
name = "global.appConfig.omniauth.enabled"
value = "true"
}
set {
name = "global.appConfig.omniauth.allowSingleSignOn[0]"
value = "saml"
}
set {
name = "global.appConfig.omniauth.blockAutoCreatedUsers"
value = "false"
}
set {
name = "global.appConfig.omniauth.autoLinkSamlUser"
value = "true"
}
set {
name = "global.appConfig.omniauth.providers[0].secret"
value = "${local.saml_config_secret}"
}
set {
name = "global.appConfig.omniauth.providers[0].key"
value = "config"
}
Current behavior
We cannot render repositories with ReStrucutredText READMEs
Expected behavior
READMEs either render or are shown as text.
Versions
- Chart: 1.3.4
- Platform: GKE
- Helm: (
helm version)- Client: 2.11.0
- Server: 2.11.0
Relevant logs
Completed 500 Internal Server Error in 64ms (ActiveRecord: 10.0ms | Elasticsearch: 0.0ms)
ActionView::Template::Error (No such file or directory - python2):
3: - unless context[:markdown_engine] == :redcarpet
4: - context[:rendered] = blob.rendered_markup if blob.respond_to?(:rendered_markup)
5: .file-content.wiki
6: = markup(blob.name, blob.data, context)
lib/gitlab/other_markup.rb:11:in `render'
app/helpers/markup_helper.rb:277:in `other_markup_unsafe'
app/helpers/markup_helper.rb:162:in `markup_unsafe'
app/helpers/markup_helper.rb:120:in `markup'
app/views/projects/blob/viewers/_markup.html.haml:6:in `_app_views_projects_blob_viewers__markup_html_haml__3397475243023731680_46969018836380'
app/views/projects/blob/_viewer.html.haml:23:in `_app_views_projects_blob__viewer_html_haml___3868546677886242378_46969012500280'
app/controllers/application_controller.rb:318:in `view_to_html_string'
app/controllers/concerns/renders_blob.rb:20:in `blob_json'
app/controllers/projects/blob_controller.rb:288:in `show_json'
app/controllers/projects/blob_controller.rb:50:in `block (2 levels) in show'
app/controllers/projects/blob_controller.rb:42:in `show'
lib/gitlab/i18n.rb:55:in `with_locale'
lib/gitlab/i18n.rb:61:in `with_user_locale'
app/controllers/application_controller.rb:427:in `set_locale'
lib/gitlab/middleware/multipart.rb:101:in `call'
lib/gitlab/request_profiler/middleware.rb:14:in `call'
ee/lib/gitlab/jira/middleware.rb:15:in `call'
lib/gitlab/middleware/go.rb:17:in `call'
lib/gitlab/etag_caching/middleware.rb:11:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:22:in `call'
lib/gitlab/metrics/rack_middleware.rb:15:in `block in call'
lib/gitlab/metrics/transaction.rb:53:in `run'
lib/gitlab/metrics/rack_middleware.rb:15:in `call'
lib/gitlab/middleware/read_only/controller.rb:40:in `call'
lib/gitlab/middleware/read_only.rb:16:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/request_context.rb:20:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:27:in `call'
lib/gitlab/middleware/release_env.rb:10:in `call'
Edited by DJ Mountney