307 Commits

Author SHA1 Message Date
Steven Achilles
04bfca3805
Merge pull request #3126 from ysicing/master
feat: Add support for Omniauth JWT login.
2025-06-19 19:56:25 +02:00
Steven Achilles
b8139832ff
Merge pull request #3122 from kkimurak/stop-recompile-assets-for-relative_url
Stop recompiling assets to enable relative url
2025-06-19 19:52:59 +02:00
ysicing
c742614eef
feat: Add support for Omniauth JWT login 2025-06-18 17:24:45 +08:00
Kazunori Kimura
e910e3024c Stop recompiling assets to enable relative url
As a result, an Internet connection is no longer required
to use relative URLs.

To enable relative url, we execute `gitlab:assets:compile`.
This have been removed in official documentation in v10.0.0
(first committed to gitlab-foss, then ported to gitlab(-ee))
- EE: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1139/
- CE: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/8831

An internet connection was required when enabling relative urls
to install the node modules required for compilation.
I reviewed the rake task `gitlab:assets:compile` and investigated
whether it was necessary to compile all assets
just because the relative url changed,
and found that this rake task is internally a separate rake task
`gitlab:assets :fix_urls` which rewrite the reference URL in the css.

I removed rake task `gitlab:assets:compile` at runtime
and confirmed that the gitlab application worked normally as before.
I have confirmed that at least the following functions work properly.
- Administrator password reset at first login
- Create empty project
- Edit/add and commit files using web IDE
- Create merge request/issue
- Attach files to comments
- Create empty group
- Move existing project to group

In addition, we no longer need to do following things
- persist node_modules, recompiled assets and caches
- apply patches to gitlab itself to avoid removing (symlink to) node_modules/

This change also reduces startup time in certain cases
when the relative URL feature is enabled
(when assets are compiled; for example,
when performing a version upgrade or changing the relative URL)
(on my environment, `gitlab:assets:fix_urls` took about 20 seconds)
2025-06-17 19:01:09 +09:00
Kazunori Kimura
ac47124a0d Allow setting ActiveRecord encryption secrets
Add environment variable to set entry in secrets.yml related to
active record encryption

- active_record_encryption_primary_key (can be multiple)
- active_record_encryption_deterministic_key (can be multiple)
- active_record_encryption_key_derivation_salt

Reference for '32 characters length' recommendation:
https://gitlab.com/gitlab-org/gitlab/-/blob/v18.0.0-ee/config/initializers/2_secret_token.rb#L78-80

TODO: fix command line usage in documentation
2025-06-17 18:53:25 +09:00
Steven Achilles
e238e227ab Update NODE_OPTIONS in functions to match install script 2025-05-18 17:48:33 +02:00
Steven Achilles
1bf1c82deb Revert "Ensure grants for user gitlab on schema public are correctly set"
This reverts commit cf154bdf1fecfdb43769eaad256aa5c7eb336ff4.
2025-05-17 18:36:58 +02:00
Steven Achilles
cf154bdf1f Ensure grants for user gitlab on schema public are correctly set 2025-05-17 15:09:19 +02:00
Kazunori Kimura
9dff930f5f Change path to install nginx configuration
Directories such as /etc/nginx/sites-{enabled, available and similar}
are not available for nginx package comes from official nginx repository.

Ubuntu source may create this directory
refer1 : ubuntu distributes nginx with a file "nginx-common.dirs"
which lists these directories
https://git.launchpad.net/ubuntu/+source/nginx/tree/debian/nginx-common.dirs?h=ubuntu/jammy-updates

By default, nginx recognizes configuration files in /etc/nginx/conf.d/
Just change the destination path to install nginx configuration files
2025-02-21 11:37:03 +09:00
Kazunori Kimura
049df9a120 Just use result of $(command -v pg_isready)
instead of `find /usr/lib/postgresql -name pg_isready | sort | tail -n1`
for db readiness query command
To solve following error:

    find /var/lib/postgresql : No such file or directory

I'm sure the directory is exists so I'm not sure why the error reported
2025-01-20 19:21:09 +01:00
Joerg Stoever
e5dc2dd5b6 healthcheck: Use IPv4 loopback address instead of localhost
Access to health check resources such as /-/liveness
is restricted to IPs specified in gitlab.monitoring.ip_whitelist
(`GITLAB_MONITORING_IP_WHITELIST`).
The name `localhost` is solved to IPv6 loopback address (::1)
that is not listed in the whitelist by default.

Possible alternate designs:
- Add IPv6 loopback to whitelist
- Disable IPv6 for gitlab container by specifying `net.ipv6.conf.all.disable_ipv6=1`
  in docker-compose.yml for example
  See https://github.com/sameersbn/docker-gitlab/issues/2766#issuecomment-2098030791
2024-09-21 02:12:02 +09:00
Kazunori Kimura
ba429ab996 Unset default value for GITLAB_MONITORING_IP_WHITELIST
On upstream, expected default value is `127.0.0.1/8`
and it is already listed in corresponding configuration.
`GITLAB_MONITORING_IP_WHITELIST` is used to allow monitoring from hosts other than loopback (localhost).

So just unset default value for it.
If the value is not set, the line specifying this "additional" IP range will be removed.
2024-09-20 23:14:38 +09:00
Joerg Stoever
f9d2c98995 health check: remove curl's --location option
When the healthcheck feature introduced, the script were generated on build time
and url was fixed to "http://localhost/-/liveness".
See pull request #2102

nginx is configured to redirect all http traffic to https when `GITLAB_HTTPS` is enabled.
(see https://github.com/sameersbn/docker-gitlab/blob/ac9e1fe/assets/runtime/config/nginx/gitlab-ssl#L41-L54),
`--location` option is set to follow the redirection.
See pull request #2165

Health check script generation has been ported to the runtime,
allowing us to dynamically generate health check URLs
while referencing configuration parameters.
See #2338

If configured correctly, the redirect will not occur and the option can be removed.

Original removal suggestion by @Gaibhne , additional (historical) research by @kkimurak.
Co-authored-by: Kazunori Kimura <kkimura@ims.ac.jp>
2024-09-20 23:14:38 +09:00
Joerg Stoever
38be108bc0 health check: use https only when https enabled with non-self signed cert 2024-09-20 23:14:38 +09:00
Steven Achilles
c98e4def27
Merge pull request #2953 from molnarpe/omniauth-oidc
Add support for Omniauth OpenID Connect login.
2024-07-12 05:08:03 +02:00
Sebastian Toll
0431ba5ace Create external-diffs directory if missing, closes #2965 2024-07-10 21:35:43 +02:00
Molnár Péter
f30613b192 Add support for Omniauth OpenID Connect login. 2024-06-18 21:37:37 +02:00
Yannis Mazzer
5204971ce0 #2420 Handle encrypted_settings_key_base variable to allow restoring backups from gitlab instances not running from this image and using encrypted settings feature. 2024-05-24 20:34:18 +02:00
Filipe Roque
c9973b4ba6 Fix recompile spelling 2024-04-30 09:26:00 +01:00
Kazunori Kimura
05794a2b47 Allow setting feature flags via configuration parameter
- It requires database is set up because
  feature flags are stored to DB (table `application_settings`)
- Add configuration parameter GITLAB_FEATURE_FLAGS_ENABLE_TARGETS
  and GITLAB_FEATURE_FLAGS_DISABLE_TARGETS
- Add ruby script to configure feature flags from command line
  and invoke runtime (from configure_gitlab())
2024-03-24 18:43:51 +09:00
Kazunori Kimura
846a051bbe Allow additional configurations after DB migration
Such as feature flags (which is stored to database, application_settings table)

At this commit, it does nothing (no operation `:`)
2024-03-24 18:43:51 +09:00
Daniel Mulholland
3f2e8c2ce4
Create ci_secure_files directory if missing, closes #2790 2024-02-11 10:17:36 +13:00
Kazunori Kimura
d16119b54b Remove ajv as an explicit dependency
There was an issue that `ajv` is not installed by mistake.
This issue have been fixed on upstream, a few years ago.

Now, we can revert the change.
This commit partially reverts 985d57afb9673b2f5acb1f12cbc13f230f6ec074
See sameersbn/gitlab#1358

It seems that fix MR on upstream is https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/14543
but we cannot check diff because source / target branch removed by mistake

Anyway, no need to add ajv as an explicit dependency with (at least) gitlab v11 or later
2024-01-18 15:42:17 +09:00
massej
d11ae7b617
Added missing configuration variable OAUTH_ALLOW_BYPASS_TWO_FACTOR. 2023-10-23 22:17:20 -04:00
Steven Achilles
daae8b70d3
Merge pull request #2841 from massej/patch-1
Added - OAuth2 Generic - missing label and scope variables
2023-10-23 22:45:00 +02:00
Kazunori Kimura
a2dd4e5ed8 Accept multiple hosts for RACK_ATTACK_WHITELIST
see sameersbn/docker-gitlab#2828

The current setup also accepts multiple hosts,
but the syntax is a bit strange.
The leading/trailing double quotes are embedded
in the configuration file itself,
so users should expect double quotes around the string they set.
In other words, when setting two hosts 0.0.0.0 and 1.1.1.1,
you will set the strings 0.0.0.0","1.1.1.1 in the
environment variables. This is not intuitive.

This commit removes double quote around corresponding config
and set backward compatibility fallback process
to surround whole with [], each host with double quote.
Also, validation script (written in ruby) will be executed during configuration.

Example docker-compose.yml
````yaml
services:
  gitlab:
    image: sameersbn/gitlab:latest
    environment:
    - RACK_ATTACK_WHITELIST='["127.0.0.1","0.0.0.0"]'
````

Co-authored-by: Mikhail Khadarenka <chodorenko@mail.ru>
2023-10-20 22:24:22 +09:00
massej
a903d98290
Update functions 2023-10-01 13:45:02 -04:00
Kazunori Kimura
7140f0342b Fix unused client removal on restarted container
Handle the case where the target does not exist
in the process of deleting unused clients.
Such a situation will not occur in newly launched containers,
but will occur if they are restarted.

During container restarts, container status are preserved.
If the unused database client was deleted in the last run,
grep will not match anything.
It returns non-zero code and the container stops there
because entrypoint sets option `-e`
(exit immediately on non-zero exit code excluding some special cases)

This commit make the uninstall process to handle the case
UNUSED_DB_CLIENTS is empty.
2023-06-02 22:12:29 +09:00
Kazunori Kimura
598a666693 Add -y option on uninstalling unused db client
Co-authored-by: Steven Achilles <steven.achilles@googlemail.com>
Co-authored-by: @f-io
2023-05-25 12:44:32 +09:00
Kazunori Kimura
24e2b581fb Use purge instead to uninstall unused db clients
Instead of `remove` that does not remove actual files.

Co-authored-by: @f-io
2023-05-24 20:26:15 +09:00
Kazunori Kimura
b3b700a701 Uninstall unused postgresql-client on startup
Unused clients are determinate by checking ~/.postgresqlrc
Uninstall logs like the following will appear in the docker log:

- Uninstalling unused version(s) of client: postgresql-client-12
2023-05-12 06:58:11 +09:00
Kazunori Kimura
260f548c5b Ship with multiple versions of postgresql-client
It is intended to work even in environments without an internet connection.

- Use latest version of pg_isready on checking database connection
- Switch postgresql-client version checking server on startup
- If the server versions do not match exactly, use the latest installed client
  and warn on docker log

From postgresql documentation:
https://www.postgresql.org/docs/15/app-pgdump.html#PG-DUMP-NOTES

> Also, it is not guaranteed that pg_dump's output can be loaded
> into a server of an older major version — not even if the dump
> was taken from a server of that version.

To switch client version, generate a file ~/.postgresqlrc with content like:

{server side major version} {server hostname}:{server port} {default database}

See detail on:
https://manpages.ubuntu.com/manpages/bionic/man5/postgresqlrc.5.html

Following messages appear on docker log:

- Detected server version: 140007
- Generating /home/git/.postgresqlrc
2023-05-12 06:58:11 +09:00
kkkkkks0
f408585d8b
fixes sameersbn#2645 2022-10-20 18:58:03 +08:00
Ivan Baranov
8b9ca622f9 Tested support for azure_activedirectory_v2 2022-09-05 21:46:20 +09:00
Kazunori Kimura
844d57dad2 update *:object_store:enabled regardless of the value
apply for artifact,packages,terraform_state,lfs,uploads
2022-06-21 08:46:05 +09:00
haroldsamuels87
944a638a28
fixed a typo
took me 5 HOURS to find this tiny little typo.
2022-05-12 18:13:55 +04:30
Péter Józsa
82e88ff0ad create terraform state directory based on new configuration variables during datadir initialization
#2501
2022-04-11 12:13:28 +02:00
Péter Józsa
4752be956c Allow to configure terraform state feature 2022-04-11 12:13:09 +02:00
Steven Achilles
1a091cea44
Merge pull request #2511 from getfloret/master
Fix: HealthCheck Script will Fail if the ENV GITLAB_HTTPS set True
2022-03-29 20:45:41 +02:00
AlpsTsui
def7ef5fea Fix: HealthCheck Script will Fail if the ENV GITLAB_HTTPS set True 2022-03-29 22:22:31 +08:00
Kazunori Kimura
e91d9b5f7c support GITLAB_ISSUE_CLOSING_PATTERN 2022-03-27 07:28:01 +09:00
Kazunori Kimura
a9b4feb77b add NGINX_CUSTOM_GITLAB_SERVER_CONFIG 2022-03-04 22:49:52 +09:00
Kazunori Kimura
2448c6aada add terraform/packages dir to initialize_datadir()
Also add them to sanitize_datadir()

Note that the backup will fail if these directories do not exist
with each feature enabled.
2022-01-28 02:12:35 +09:00
Paolo Mainardi
09e76bb2e7 Missing redis db number 2022-01-03 18:28:10 +01:00
Paolo Mainardi
0a24da2cfe Copy cable.yml template file 2022-01-03 16:54:08 +01:00
Paolo Mainardi
36330f5366 Support actioncable 2022-01-03 16:32:16 +01:00
sue445
82576f27d0 Fixed Pages config not being created when GITLAB_PAGES_ACCESS_CONTROL was disabled 2021-12-09 22:24:30 +01:00
Kazunori Kimura
729a00a3c9 remove runtime/config/gitlabhq/rack_attack.rb 2021-10-09 15:45:11 +09:00
Jonathan Kline
f323481206 Corrected a typo in the artifacts section to allow proper updating and
replacement of the AWS_SIGNING_VERSION for artifacts
2021-08-02 16:39:10 -05:00
Akanoa
e2354ed8aa feat: Add "AWS_SIGNATURE_VERSION" related environment variables 2021-07-30 22:41:31 +00:00