File gitlab-ce.spec of Package gitlab-ce

#
# spec file for package 
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

%bcond_with     allow_rebuilding_assets
%bcond_with     gitlab_ruby26
# %{name}-puma.service
%define gitlab_service_list %{name}-update.service %{name}-unicorn.service %{name}-sidekiq.service gitlab-ce.target

Name:           gitlab-ce
Version:        0

Release:        0
#
%define vhosts_dir     /srv/www/vhosts/
%define app_dir        %{vhosts_dir}/%{name}/
#
License:        MIT
Summary:        Open source software to collaborate on code
Url:            https://about.gitlab.com/
Group:          Development/Tools/Version Control
Source:         %{name}-%{version}.tar.xz
Source1:        %{name}-rpmlintrc
Source2:        %{name}-update
Source3:        %{name}-puma.service
Source4:        %{name}-sidekiq.service
Source6:        gitlab.target
Source7:        %{name}-unicorn.service
Source8:        gitlab-js-stuff.tar.xz
Source9:        %{name}-update.service
# keep in sync with rubygem(gettext_i18n_rails_js)
Source96:       series
Source97:       gettext_i18n_rails_js_tasks_override.rake
Source98:       _constraints
Source99:       dump-version-info.rb
Patch:          gitlab-ce.disable.dev_testing.patch
Patch1:         gitlab-ce.less_strict.patch
Patch2:         gitlab-ce.default_config.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildArch:      noarch
#
BuildRequires:  rsync
BuildRequires:  yarn
BuildRequires:  ruby-common-rails >= 2.6
BuildRequires:  gitlab-common
%requires_eq    gitlab-common
Provides:       gitlab-ci = %{version}-%{release}
Obsoletes:      gitlab-ci < %{version}-%{release}
BuildRequires:  gitaly = 12.8.0
Requires:       gitaly = 12.8.0
BuildRequires:  gitlab-elasticsearch-indexer = 2.1.0
Requires:       gitlab-elasticsearch-indexer = 2.1.0
BuildRequires:  gitlab-pages = 1.16.0
Requires:       gitlab-pages = 1.16.0
BuildRequires:  gitlab-shell = 11.0.0
Requires:       gitlab-shell = 11.0.0
BuildRequires:  gitlab-workhorse = 8.21.0
Requires:       gitlab-workhorse = 8.21.0
%if 0%{?suse_version} > 1315
BuildRequires:  python3-docutils
Requires:       python3-docutils
%else
BuildRequires:  python-docutils
Requires:       python-docutils
%endif
#BuildRequires:  gyp
BuildRequires:  gcc-c++
# didnt help can even trigger it with 8 ( this is a workaround until we find out why nodejs10 runs out of memory )
#define nodejs_min_version 8
BuildRequires:  npm%{nodejs_min_version}
%requires_eq    nodejs%{nodejs_min_version}
BuildRequires:  pkgconfig(systemd)
%{?systemd_requires}
%define rb_build_versions ruby26
%define rb_build_abi      ruby:2.6.0
%define rb_suffix         ruby2.6
# generated!!!
#
BuildRequires:  %{rubygem bundler:2}
#
#
BuildRequires:  %{rubygem rails:6.0 >= 6.0.2}
BuildRequires:  %{rubygem bootsnap:1 >= 1.4}
BuildRequires:  %{rubygem nakayoshi_fork:0.0 >= 0.0.4}
BuildRequires:  %{rubygem responders:3 >= 3.0}
BuildRequires:  %{rubygem sprockets:3.7 >= 3.7.0}
BuildRequires:  %{rubygem default_value_for:3.3 >= 3.3.0}
BuildRequires:  %{rubygem pg:1 >= 1.1}
BuildRequires:  %{rubygem rugged:0 >= 0.28}
BuildRequires:  %{rubygem grape-path-helpers:1 >= 1.2}
BuildRequires:  %{rubygem faraday:0 >= 0.12}
BuildRequires:  %{rubygem marginalia:1.8 >= 1.8.0}
BuildRequires:  %{rubygem devise:4 >= 4.6}
BuildRequires:  %{rubygem doorkeeper:5.0 >= 5.0.2}
BuildRequires:  %{rubygem doorkeeper-openid_connect:1.6 >= 1.6.3}
BuildRequires:  %{rubygem omniauth:1 >= 1.8}
BuildRequires:  %{rubygem omniauth-auth0:2.0 >= 2.0.0}
BuildRequires:  %{rubygem omniauth-azure-oauth2:0.0 >= 0.0.9}
BuildRequires:  %{rubygem omniauth-cas3:1.1 >= 1.1.4}
BuildRequires:  %{rubygem omniauth-facebook:6.0 >= 6.0.0}
BuildRequires:  %{rubygem omniauth-github:1 >= 1.4}
BuildRequires:  %{rubygem omniauth-gitlab:1.0 >= 1.0.2}
BuildRequires:  %{rubygem omniauth-google-oauth2:0 >= 0.6}
BuildRequires:  %{rubygem omniauth-kerberos:0.3 >= 0.3.0}
BuildRequires:  %{rubygem omniauth-oauth2-generic:0.2 >= 0.2.2}
BuildRequires:  %{rubygem omniauth-saml:1 >= 1.10}
BuildRequires:  %{rubygem omniauth-shibboleth:1.3 >= 1.3.0}
BuildRequires:  %{rubygem omniauth-twitter:1 >= 1.4}
BuildRequires:  %{rubygem omniauth_crowd:2.2 >= 2.2.0}
BuildRequires:  %{rubygem omniauth-authentiq:0.3 >= 0.3.3}
BuildRequires:  %{rubygem omniauth_openid_connect:0.3 >= 0.3.3}
BuildRequires:  %{rubygem omniauth-ultraauth:0.0 >= 0.0.2}
BuildRequires:  %{rubygem omniauth-salesforce:1.0 >= 1.0.5}
BuildRequires:  %{rubygem rack-oauth2:1.9 >= 1.9.3}
BuildRequires:  %{rubygem jwt:2 >= 2.1}
BuildRequires:  %{rubygem gssapi}
BuildRequires:  %{rubygem recaptcha:4 >= 4.11}
BuildRequires:  %{rubygem akismet:3 >= 3.0}
BuildRequires:  %{rubygem invisible_captcha:0.12 >= 0.12.1}
BuildRequires:  %{rubygem devise-two-factor:3.1 >= 3.1.0}
BuildRequires:  %{rubygem rqrcode-rails3:0.1 >= 0.1.7}
BuildRequires:  %{rubygem attr_encrypted:3.1 >= 3.1.0}
BuildRequires:  %{rubygem u2f:0.2 >= 0.2.1}
BuildRequires:  %{rubygem validates_hostname:1.0 >= 1.0.6}
BuildRequires:  %{rubygem rubyzip:2.0 >= 2.0.0}
BuildRequires:  %{rubygem acme-client:2.0 >= 2.0.5}
BuildRequires:  %{rubygem browser:2 >= 2.5}
BuildRequires:  %{rubygem gpgme:2.0 >= 2.0.19}
BuildRequires:  %{rubygem gitlab_omniauth-ldap:2.1 >= 2.1.1}
BuildRequires:  %{rubygem net-ldap}
BuildRequires:  %{rubygem grape:1.1 >= 1.1.0}
BuildRequires:  %{rubygem grape-entity:0.7 >= 0.7.1}
BuildRequires:  %{rubygem rack-cors:1 >= 1.0}
BuildRequires:  %{rubygem graphql:1.9 >= 1.9.12}
BuildRequires:  %{rubygem graphiql-rails:1.4 >= 1.4.10}
BuildRequires:  %{rubygem apollo_upload_server:2.0.0 >= 2.0.0.beta3}
BuildRequires:  %{rubygem hashie-forbidden_attributes}
BuildRequires:  %{rubygem kaminari:1 >= 1.0}
BuildRequires:  %{rubygem hamlit:2.11 >= 2.11.0}
BuildRequires:  %{rubygem carrierwave:1 >= 1.3}
BuildRequires:  %{rubygem mini_magick}
BuildRequires:  %{rubygem fog-aws:3 >= 3.5}
BuildRequires:  %{rubygem fog-core = 2.1.0}
BuildRequires:  %{rubygem fog-google:1 >= 1.9}
BuildRequires:  %{rubygem fog-local:0 >= 0.6}
BuildRequires:  %{rubygem fog-openstack:1 >= 1.0}
BuildRequires:  %{rubygem fog-rackspace:0.1 >= 0.1.1}
BuildRequires:  %{rubygem fog-aliyun:0 >= 0.3}
BuildRequires:  %{rubygem google-api-client:0 >= 0.23}
BuildRequires:  %{rubygem unf:0.1 >= 0.1.4}
BuildRequires:  %{rubygem seed-fu:2.3 >= 2.3.7}
BuildRequires:  %{rubygem elasticsearch-model:6 >= 6.1}
BuildRequires:  %{rubygem elasticsearch-rails:6 >= 6.1}
BuildRequires:  %{rubygem elasticsearch-api:6 >= 6.8}
BuildRequires:  %{rubygem aws-sdk}
BuildRequires:  %{rubygem faraday_middleware-aws-signers-v4}
BuildRequires:  %{rubygem html-pipeline:2 >= 2.12}
BuildRequires:  %{rubygem deckar01-task_list = 2.3.1}
BuildRequires:  %{rubygem gitlab-markup:1.7 >= 1.7.0}
BuildRequires:  %{rubygem github-markup:1.7 >= 1.7.0}
BuildRequires:  %{rubygem commonmarker:0 >= 0.20}
BuildRequires:  %{rubygem RedCloth:4.3 >= 4.3.2}
BuildRequires:  %{rubygem rdoc:6.1 >= 6.1.2}
BuildRequires:  %{rubygem org-ruby:0.9 >= 0.9.12}
BuildRequires:  %{rubygem creole:0.5 >= 0.5.0}
BuildRequires:  %{rubygem wikicloth = 0.8.1}
BuildRequires:  %{rubygem asciidoctor:2.0 >= 2.0.10}
BuildRequires:  %{rubygem asciidoctor-include-ext:0.3 >= 0.3.1}
BuildRequires:  %{rubygem asciidoctor-plantuml = 0.0.10}
BuildRequires:  %{rubygem rouge:3.16 >= 3.16.0}
BuildRequires:  %{rubygem truncato:0.7 >= 0.7.11}
BuildRequires:  %{rubygem bootstrap_form:4.2 >= 4.2.0}
BuildRequires:  %{rubygem nokogiri:1.10 >= 1.10.5}
BuildRequires:  %{rubygem escape_utils:1 >= 1.1}
BuildRequires:  %{rubygem icalendar}
BuildRequires:  %{rubygem diffy:3.3 >= 3.3.0}
BuildRequires:  %{rubygem diff_match_patch:0.1 >= 0.1.0}
BuildRequires:  %{rubygem rack:2.0 >= 2.0.7}
BuildRequires:  %{rubygem unicorn:5.5 >= 5.5.0}
BuildRequires:  %{rubygem unicorn-worker-killer:0.4 >= 0.4.4}
BuildRequires:  %{rubygem state_machines-activerecord:0.6 >= 0.6.0}
BuildRequires:  %{rubygem acts-as-taggable-on:6 >= 6.0}
BuildRequires:  %{rubygem sidekiq:5.2 >= 5.2.7}
BuildRequires:  %{rubygem sidekiq-cron:1 >= 1.0}
BuildRequires:  %{rubygem redis-namespace:1.7 >= 1.7.0}
BuildRequires:  %{rubygem gitlab-sidekiq-fetcher = 0.5.2}
BuildRequires:  %{rubygem fugit:1.2 >= 1.2.1}
BuildRequires:  %{rubygem httparty:0.16 >= 0.16.4}
BuildRequires:  %{rubygem rainbow:3 >= 3.0}
BuildRequires:  %{rubygem ruby-progressbar}
BuildRequires:  %{rubygem settingslogic:2.0 >= 2.0.9}
BuildRequires:  %{rubygem re2:1.1 >= 1.1.1}
BuildRequires:  %{rubygem version_sorter:2.2 >= 2.2.4}
BuildRequires:  %{rubygem js_regex:3 >= 3.1}
BuildRequires:  %{rubygem device_detector}
BuildRequires:  %{rubygem redis:4 >= 4.0}
BuildRequires:  %{rubygem connection_pool:2 >= 2.0}
BuildRequires:  %{rubygem redis-rails:5.0 >= 5.0.2}
BuildRequires:  %{rubygem discordrb-webhooks-blackst0ne:3 >= 3.3}
BuildRequires:  %{rubygem hipchat:1.6 >= 1.6.0}
BuildRequires:  %{rubygem jira-ruby:1 >= 1.7}
BuildRequires:  %{rubygem atlassian-jwt:0.2 >= 0.2.0}
BuildRequires:  %{rubygem flowdock:0 >= 0.7}
BuildRequires:  %{rubygem slack-notifier:1.5 >= 1.5.1}
BuildRequires:  %{rubygem hangouts-chat:0.0 >= 0.0.5}
BuildRequires:  %{rubygem asana:0 >= 0.9}
BuildRequires:  %{rubygem ruby-fogbugz:0.2 >= 0.2.1}
BuildRequires:  %{rubygem kubeclient:4.6 >= 4.6.0}
BuildRequires:  %{rubygem sanitize:4 >= 4.6}
BuildRequires:  %{rubygem babosa:1.0 >= 1.0.2}
BuildRequires:  %{rubygem loofah:2 >= 2.2}
BuildRequires:  %{rubygem licensee:8 >= 8.9}
BuildRequires:  %{rubygem ace-rails-ap:4.1 >= 4.1.0}
BuildRequires:  %{rubygem charlock_holmes:0.7 >= 0.7.5}
BuildRequires:  %{rubygem mimemagic:0.3 >= 0.3.2}
BuildRequires:  %{rubygem fast_blank}
BuildRequires:  %{rubygem gitlab-chronic:0.10 >= 0.10.5}
BuildRequires:  %{rubygem gitlab_chronic_duration:0.10.6 >= 0.10.6.2}
BuildRequires:  %{rubygem webpack-rails:0.9 >= 0.9.10}
BuildRequires:  %{rubygem rack-proxy:0.6 >= 0.6.0}
BuildRequires:  %{rubygem sassc:2.0 >= 2.0.0}
BuildRequires:  %{rubygem sassc-rails:2.1 >= 2.1.0}
BuildRequires:  %{rubygem uglifier:2.7 >= 2.7.2}
BuildRequires:  %{rubygem addressable:2 >= 2.7}
BuildRequires:  %{rubygem font-awesome-rails:4 >= 4.7}
BuildRequires:  %{rubygem gemojione:3 >= 3.3}
BuildRequires:  %{rubygem gon:6 >= 6.2}
BuildRequires:  %{rubygem request_store:1 >= 1.3}
BuildRequires:  %{rubygem base32:0.3 >= 0.3.0}
BuildRequires:  %{rubygem gitlab-license:1 >= 1.0}
BuildRequires:  %{rubygem rack-attack:6.2 >= 6.2.0}
BuildRequires:  %{rubygem sentry-raven:2 >= 2.9}
BuildRequires:  %{rubygem premailer-rails:1.10 >= 1.10.3}
BuildRequires:  %{rubygem gitlab-labkit = 0.9.1}
BuildRequires:  %{rubygem ruby_parser:3 >= 3.8}
BuildRequires:  %{rubygem rails-i18n:6 >= 6.0}
BuildRequires:  %{rubygem gettext_i18n_rails:1.8 >= 1.8.0}
BuildRequires:  %{rubygem gettext_i18n_rails_js:1 >= 1.3}
BuildRequires:  %{rubygem batch-loader:1.4 >= 1.4.0}
BuildRequires:  %{rubygem peek:1 >= 1.1}
BuildRequires:  %{rubygem snowplow-tracker:0.6 >= 0.6.1}
BuildRequires:  %{rubygem derailed_benchmarks}
BuildRequires:  %{rubygem method_source:0 >= 0.8}
BuildRequires:  %{rubygem influxdb:0 >= 0.2}
BuildRequires:  %{rubygem prometheus-client-mmap:0.10 >= 0.10.0}
BuildRequires:  %{rubygem raindrops:0 >= 0.18}
BuildRequires:  %{rubygem octokit:4 >= 4.15}
BuildRequires:  %{rubygem mail_room:0.10 >= 0.10.0}
BuildRequires:  %{rubygem email_reply_trimmer:0 >= 0.1}
BuildRequires:  %{rubygem html2text}
BuildRequires:  %{rubygem ruby-prof:1.0 >= 1.0.0}
BuildRequires:  %{rubygem stackprof:0.2 >= 0.2.15}
BuildRequires:  %{rubygem rbtrace:0 >= 0.4}
BuildRequires:  %{rubygem memory_profiler:0 >= 0.9}
BuildRequires:  %{rubygem benchmark-memory:0 >= 0.1}
BuildRequires:  %{rubygem activerecord-explain-analyze:0 >= 0.1}
BuildRequires:  %{rubygem oauth2:1 >= 1.4}
BuildRequires:  %{rubygem health_check:2.6 >= 2.6.0}
BuildRequires:  %{rubygem vmstat:2.3 >= 2.3.0}
BuildRequires:  %{rubygem sys-filesystem:1 >= 1.1}
BuildRequires:  %{rubygem net-ntp}
BuildRequires:  %{rubygem net-ssh:5 >= 5.2}
BuildRequires:  %{rubygem sshkey:2 >= 2.0}
BuildRequires:  %{rubygem ed25519:1 >= 1.2}
BuildRequires:  %{rubygem bcrypt_pbkdf:1 >= 1.0}
BuildRequires:  %{rubygem gitaly:1.86 >= 1.86.0}
BuildRequires:  %{rubygem grpc:1.24 >= 1.24.0}
BuildRequires:  %{rubygem google-protobuf:3.8 >= 3.8.0}
BuildRequires:  %{rubygem toml-rb:1.0 >= 1.0.0}
BuildRequires:  %{rubygem flipper:0.17 >= 0.17.1}
BuildRequires:  %{rubygem flipper-active_record:0.17 >= 0.17.1}
BuildRequires:  %{rubygem flipper-active_support_cache_store:0.17 >= 0.17.1}
BuildRequires:  %{rubygem unleash:0.1 >= 0.1.5}
BuildRequires:  %{rubygem lograge:0 >= 0.5}
BuildRequires:  %{rubygem grape_logging:1 >= 1.7}
BuildRequires:  %{rubygem gitlab-net-dns:0.9 >= 0.9.1}
BuildRequires:  %{rubygem countries:3 >= 3.0}
BuildRequires:  %{rubygem retriable:3.1 >= 3.1.2}
BuildRequires:  %{rubygem liquid:4 >= 4.0}
BuildRequires:  %{rubygem lru_redux}
BuildRequires:  %{rubygem erubi:1.9 >= 1.9.0}
BuildRequires:  %{rubygem mail = 2.7.1}
#
# /generated

%description
GitLab offers git repository management, code reviews, issue tracking, activity
feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP
and Active Directory servers for secure authentication and authorization. A
single GitLab server can handle more than 25,000 users but it is also possible
to create a high availability setup with multiple active servers.

%prep
%setup -q -a 8
%rails_save_gemfile
%patch
%patch1 -p1
%patch2 -p1
perl -p -i -e 's|-ee||g' VERSION

%build
export RAILS5="false"
export RAILS_ENV="production"
export NODE_ENV="production"
%rails_fix_ruby_shebang bin/* qa/bin/qa scripts/* spec/support/*
%rails_regen_gemfile_lock
%rails_fix_ruby_suffix
%rails_write_appinfo

npm rebuild
%if %{with allow_rebuilding_assets}
find node_modules/ \( -name \*.md~ -o -name \*.un~ \) -print -delete
%endif

# allow webpack to use more memory for source maps
for S in node_modules/.bin/webpack* ; do
  SB="${S}.backup"
  cp ${S} ${SB}
  perl -p -i -e 's|#!/usr/bin/env node|#!%{_bindir}/node --max-old-space-size=4096|g' $S
  diff -urN ${SB} ${S} || :
  rm ${SB}
done
# fill the REVISION file used for the admin dashboard
ruby "%{S:99}" "%{version}"
sha256sum Gemfile.lock Gemfile

# generate assets
sed -e "s|/usr/share/gitlab/shell/|$PWD/|g" < config/gitlab.yml.example > config/gitlab.yml
install -m 0644 %{SOURCE97} lib/tasks/gettext_i18n_rails_js_tasks_override.rake
export RAILS_ENV="production"
export DATABASE_URL=postgresql://none:none@127.0.0.1/none
./bin/bundle exec ./bin/rake \
   assets:clean               \
   gettext:po_to_json2        \
   assets:precompile          \
   webpack:compile            \
   gitlab:assets:fix_urls

# make sure we own the config/*yml files by copying example files
for i in gitlab.yml resque.yml secrets.yml sidekiq.yml unicorn.rb puma.rb ; do
  install -m 0640 config/$i{.example,}
done

touch .gitlab_shell_secret .gitlab_workhorse_secret .gitlab_pages_secret

touch                      \
  log/api_json.log         \
  log/application.log      \
  log/audit_json.log       \
  log/githost.log          \
  log/gitlab-shell.log     \
  log/grpc.log             \
  log/production.log       \
  log/production_json.log  \
  log/sidekiq.log          \
  log/puma.stderr.log      \
  log/puma.stdout.log      \
  log/unicorn.stderr.log   \
  log/unicorn.stdout.log

# https://gitlab.com/gitlab-org/gitlab-ce/issues/57047
chmod -x                                      \
  lib/support/deploy/deploy.sh                \
  scripts/review_apps/automated_cleanup.rb    \
  scripts/review_apps/review-apps.sh          \
  vendor/languages.yml
chmod +x                          \
  scripts/create_postgres_user.sh \
  scripts/schema_changed.sh

# cleanup
rm -r \
%if ! %{with allow_rebuilding_assets}
  tmp/cache/assets/sprockets/v3.0/* node_modules/ \
  tmp/cache/vue-loader/* tmp/cache/babel-loader/* \
%endif
  spec/
find -type f \( -name .gitkeep -o -name .gitignore \) -print -delete

# add missing directories
mkdir -p public/uploads/-/system/{tmp,user,project,group} public/uploads/tmp tmp/sessions tmp/sockets/private/internal
chmod -R u=rwX,g=rX,o= .
chmod -R o+rX public config.ru
chmod go+X .
chmod -R go+X tmp/
chmod -R go=  tmp/sockets/private/
cp ${RPM_SOURCE_DIR}/gitlab-ce-update{,.back}
perl -p -i -e "s/SPROCKETS_FILE/$(basename $(find -name .sprockets-man\*))/" ${RPM_SOURCE_DIR}/gitlab-ce-update
diff -urN ${RPM_SOURCE_DIR}/gitlab-ce-update{.back,} ||:
rm ${RPM_SOURCE_DIR}/gitlab-ce-update.back

perl -p -i -e 's|-ee||g' VERSION

%install
install -D -d -m 0751 %{buildroot}%{app_dir}/
rsync -a $PWD/ %{buildroot}%{app_dir}/
install -D -m 0755 %{S:2} %{buildroot}%{_sbindir}/%{name}-update
#install -D -m 0644 %{S:3} %{buildroot}%{_unitdir}/%{name}-puma.service
install -D -m 0644 %{S:7} %{buildroot}%{_unitdir}/%{name}-unicorn.service
install -D -m 0644 %{S:4} %{buildroot}%{_unitdir}/%{name}-sidekiq.service
install -D -m 0644 %{S:9} %{buildroot}%{_unitdir}/%{name}-update.service
install -D -m 0644 %{S:6} %{buildroot}%{_unitdir}/%{name}.target

install -d -m 0755        %{buildroot}%{_sbindir}
# TODO: puma
for i in sidekiq unicorn update ; do
  ln -sf /sbin/service    %{buildroot}%{_sbindir}/rc%{name}-$i
done

%pre
%service_add_pre  %{gitlab_service_list}

%post
%service_add_post %{gitlab_service_list}

%preun
%service_del_preun %{gitlab_service_list}

%postun
touch %{app_dir}/tmp/rebuild.txt
%service_del_postun %{gitlab_service_list}

%files
%defattr(-,root,root)
%{_sbindir}/rc%{name}-*
%{_unitdir}/%{name}.target
%{_unitdir}/%{name}-sidekiq.service
#%{_unitdir}/%{name}-puma.service
%{_unitdir}/%{name}-unicorn.service
%{_unitdir}/%{name}-update.service
%{_sbindir}/%{name}-update
%dir %{vhosts_dir}
%defattr(-,root,gitlab)
%config(noreplace) %{app_dir}/config/
%{app_dir}/.appinfo.yml
%{app_dir}/app
%{app_dir}/bin
%{app_dir}/CHANGELOG.md
%{app_dir}/config.ru
%{app_dir}/CONTRIBUTING.md
%{app_dir}/changelogs/
%{app_dir}/db
%{app_dir}/Dangerfile
%{app_dir}/danger
%{app_dir}/doc
%{app_dir}/.dockerignore
%{app_dir}/docker-compose.yml
%{app_dir}/docker
%{app_dir}/Dockerfile.assets
%{app_dir}/fixtures
%{app_dir}/generator_templates/
%{app_dir}/Gemfile
%{app_dir}/Gemfile.upstream
%{app_dir}/Gemfile.lock
%{app_dir}/Gemfile.lock.upstream
%{app_dir}/GITLAB_ELASTICSEARCH_INDEXER_VERSION
%{app_dir}/GITLAB_PAGES_VERSION
%{app_dir}/GITLAB_SHELL_VERSION
%{app_dir}/GITLAB_WORKHORSE_VERSION
%{app_dir}/GITALY_SERVER_VERSION
%{app_dir}/Guardfile
%{app_dir}/jest.config.js
%{app_dir}/lib/
%{app_dir}/locale/
%if %{with allow_rebuilding_assets}
%{app_dir}/node_modules/
%endif
%{app_dir}/LICENSE
%{app_dir}/MAINTENANCE.md
%{app_dir}/PROCESS.md
%{app_dir}/Procfile
%dir %{app_dir}/public
%{app_dir}/public/404.html
%{app_dir}/public/422.html
%{app_dir}/public/500.html
%{app_dir}/public/502.html
%{app_dir}/public/503.html
%{app_dir}/public/apple-touch-icon-precomposed.png
%{app_dir}/public/apple-touch-icon.png
#verify(not mtime size md5)
%{app_dir}/public/-/
%{app_dir}/public/assets/
%{app_dir}/public/deploy.html
%{app_dir}/public/robots.txt
%{app_dir}/public/slash-command-logo.png
%{app_dir}/rubocop
%{app_dir}/Rakefile
%{app_dir}/README.md
%{app_dir}/REVISION
%{app_dir}/scripts
#{app_dir}/spec
%{app_dir}/vendor
%{app_dir}/VERSION
%{app_dir}/babel.config.js
%{app_dir}/.codeclimate.yml
%{app_dir}/.csscomb.json
%{app_dir}/.eslintignore
%{app_dir}/.eslintrc.yml
%{app_dir}/package.json
%{app_dir}/.projections.json.example
%{app_dir}/.foreman
%{app_dir}/.github/
%{app_dir}/.gitlab/
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_pages_secret
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_shell_secret
%ghost %config(noreplace) %attr(0640,root,gitlab) %{app_dir}/.gitlab_workhorse_secret
%{app_dir}/.gitattributes
%{app_dir}/.gitlab-ci.yml
%{app_dir}/.haml-lint.yml
%{app_dir}/INSTALLATION_TYPE
%{app_dir}/.mailmap
%{app_dir}/.nvmrc
%{app_dir}/PHILOSOPHY.md
%{app_dir}/Pipfile
%{app_dir}/Pipfile.lock
%{app_dir}/.pkgr.yml
%{app_dir}/.prettierignore
%{app_dir}/.prettierrc
%{app_dir}/.rubocop.yml
%{app_dir}/.rubocop_todo.yml
%{app_dir}/.ruby-version
%{app_dir}/security.txt
%{app_dir}/.scss-lint.yml
%{app_dir}/.stylelintrc
%{app_dir}/plugins/
%{app_dir}/symbol/
%{app_dir}/tooling/
%{app_dir}/yarn.lock
%{app_dir}/qa/
%{app_dir}/.haml-lint_todo.yml
%{app_dir}/.yamllint
%{app_dir}/haml_lint/
%{app_dir}/.license_encryption_key.pub
%{app_dir}/.markdownlint.json
%{app_dir}/.overcommit.yml.example
%{app_dir}/.vale.ini
%{app_dir}/CHANGELOG-EE.md
%{app_dir}/crowdin.yml
%defattr(-,gitlab,gitlab)
%{app_dir}/public/uploads/
%{app_dir}/tmp/
%dir %{app_dir}/log/
%ghost %{app_dir}/log/*

%changelog