diff --git a/.env.example b/.env.example index 3cc72910f..2fe0ecf11 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ # Mysql -MYSQL_ROOT_PASSWORD=toor +MYSQL_ROOT_PASSWORD=root MYSQL_DATABASE=rmt MYSQL_USER=rmt MYSQL_PASSWORD=rmt diff --git a/.github/workflows/lint-unit.yml b/.github/workflows/lint-unit.yml index a7ac0ac8b..af293bcb2 100644 --- a/.github/workflows/lint-unit.yml +++ b/.github/workflows/lint-unit.yml @@ -28,8 +28,6 @@ jobs: # Only use 2 workers, gh actions seems to kill jobs when we use more max-parallel: 2 matrix: - # we need to test the Ruby versions of the products we release RMT for, - # those are: SLE15 (2.5.8, 2.5.9) ruby-version: ['3.4.8'] services: @@ -76,7 +74,7 @@ jobs: - name: Prepare database run: | - bundle exec rails db:drop db:create db:migrate + bundle exec rails db:drop db:create db:schema:load - name: Run core tests run: | diff --git a/.rubocop.yml b/.rubocop.yml index 49bf40e2d..708b7df14 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -9,7 +9,7 @@ inherit_mode: - Exclude AllCops: - TargetRubyVersion: 2.5 + TargetRubyVersion: 3.1 SuggestExtensions: false NewCops: enable Exclude: @@ -21,7 +21,10 @@ AllCops: - tmp/**/* - lib/locale/* - package/**/* + - ci/Dockerfile +Style/HashSyntax: + EnforcedShorthandSyntax: never Style/TrailingUnderscoreVariable: Enabled: false diff --git a/Dockerfile b/Dockerfile index 243a46df6..8c9051ce4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,22 @@ -FROM opensuse/leap:15.6 +FROM registry.opensuse.org/opensuse/leap:16.0 -RUN zypper --non-interactive install --no-recommends \ - timezone wget gcc-c++ libffi-devel git-core zlib-devel \ - libxml2-devel libxslt-devel cron libmariadb-devel mariadb-client sqlite3-devel \ - vim ruby2.5 ruby2.5-devel ruby2.5-rubygem-bundler SUSEConnect jq bzip2 gzip && \ - zypper --non-interactive install -t pattern devel_basis && \ - update-alternatives --install /usr/bin/bundle bundle /usr/bin/bundle.ruby2.5 5 && \ - update-alternatives --install /usr/bin/bundler bundler /usr/bin/bundler.ruby2.5 5 +RUN zypper --non-interactive install --no-recommends ruby3.4 ruby3.4-devel + +RUN zypper --non-interactive install libffi-devel libmysqlclient-devel libxml2-devel \ + libxslt-devel rpmbuild systemd gzip tar bzip2 nodejs sqlite-devel \ + make chrpath fdupes gcc libcurl-devel libyaml-devel WORKDIR /srv/www/rmt/ -COPY Gemfile* /srv/www/rmt/ +COPY Gemfile Gemfile.lock /srv/www/rmt/ -RUN bundle.ruby2.5 config build.nokogiri --use-system-libraries && \ - bundle install +RUN bundle install COPY . /srv/www/rmt/ -RUN mkdir /srv/www/rmt/public/repo +RUN mkdir /srv/www/rmt/public/repo -RUN sed -i 's/#!\/usr\/bin\/env ruby/#!\/usr\/bin\/ruby.ruby2.5/g' /srv/www/rmt/bin/rmt-cli && \ - ln -s /srv/www/rmt/bin/rmt-cli /usr/bin && \ +RUN ln -s /srv/www/rmt/bin/rmt-cli /usr/bin && \ mkdir /var/lib/rmt/ && \ groupadd -r nginx && \ useradd -g nginx -s /bin/false -r -c "user for RMT" _rmt && \ diff --git a/Gemfile.lock b/Gemfile.lock index 3a19908b8..04a18694c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -559,4 +559,4 @@ RUBY VERSION ruby 3.4.8p72 BUNDLED WITH - 2.6.3 + 2.6.7 diff --git a/ci/Dockerfile b/ci/Dockerfile index 14e3319ef..97e10e025 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -1,15 +1,36 @@ -#!BuildTag: rmt-ci-container +#!BuildTag: rmt-ci-container-ruby3.4 #!UseOBSRepositories -FROM opensuse/leap:15.5 +FROM opensuse/tumbleweed -RUN zypper --non-interactive in make chrpath fdupes gcc libcurl-devel libffi-devel libmysqlclient-devel \ - libxml2-devel libxslt-devel nodejs sqlite-devel ruby2.5-rubygem-ronn \ - rpmbuild systemd gzip tar bzip2 vim curl wget ruby2.5 ruby2.5-devel \ - ruby2.5-rubygem-bundler +RUN zypper --non-interactive install --no-recommends ruby3.4 ruby3.4-devel -# Set default bundler to the required version. This way we can easily update ruby in case required -RUN update-alternatives --install /usr/bin/bundle bundle /usr/bin/bundle.ruby2.5 5 && \ - update-alternatives --install /usr/bin/bundler bundler /usr/bin/bundler.ruby2.5 5 +RUN zypper --non-interactive install libffi-devel libmysqlclient-devel libxml2-devel \ + libxslt-devel rpmbuild systemd gzip tar bzip2 nodejs sqlite-devel \ + make chrpath fdupes gcc libcurl-devel libyaml-devel + +RUN rm /usr/bin/ruby /usr/bin/gem + +RUN update-alternatives --install /usr/bin/gem gem /usr/bin/gem.ruby3.4 1 +RUN update-alternatives --install /usr/bin/gem gem /usr/bin/gem.ruby4.0 2 +RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby.ruby3.4 1 +RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby.ruby4.0 2 + +RUN update-alternatives --set ruby /usr/bin/ruby.ruby3.4 && \ + update-alternatives --set gem /usr/bin/gem.ruby3.4 && \ + update-alternatives --set bundle /usr/bin/bundle.ruby.ruby3.4 && \ + update-alternatives --set bundler /usr/bin/bundler.ruby.ruby3.4 && \ + update-alternatives --set racc /usr/bin/racc.ruby.ruby3.4 && \ + update-alternatives --set rake /usr/bin/rake.ruby.ruby3.4 && \ + update-alternatives --set rbs /usr/bin/rbs.ruby.ruby3.4 && \ + update-alternatives --set rdoc /usr/bin/rdoc.ruby.ruby3.4 && \ + update-alternatives --set ri /usr/bin/ri.ruby.ruby3.4 && \ + update-alternatives --set typeprof /usr/bin/typeprof.ruby.ruby3.4 && \ + update-alternatives --set rdbg /usr/bin/rdbg.ruby.ruby3.4 && \ + update-alternatives --set syntax_suggest /usr/bin/syntax_suggest.ruby.ruby3.4 + +# HACK: Manually set default macros for ruby builds +RUN sed -i -e 's/4\.[0-9]/3\.4/g' -e 's/4[0-9]/34/g' /usr/lib/rpm/macros.d/macros.suse-ruby4.0-default && \ + cp /usr/lib/rpm/macros.d/macros.suse-ruby4.0-default /usr/lib/rpm/macros.d/macros.suse-ruby3.4-default RUN mkdir /usr/src/rmt-server WORKDIR /usr/src/rmt-server diff --git a/ci/Dockerfile.ruby3 b/ci/Dockerfile.ruby3 deleted file mode 100644 index 97e10e025..000000000 --- a/ci/Dockerfile.ruby3 +++ /dev/null @@ -1,36 +0,0 @@ -#!BuildTag: rmt-ci-container-ruby3.4 -#!UseOBSRepositories -FROM opensuse/tumbleweed - -RUN zypper --non-interactive install --no-recommends ruby3.4 ruby3.4-devel - -RUN zypper --non-interactive install libffi-devel libmysqlclient-devel libxml2-devel \ - libxslt-devel rpmbuild systemd gzip tar bzip2 nodejs sqlite-devel \ - make chrpath fdupes gcc libcurl-devel libyaml-devel - -RUN rm /usr/bin/ruby /usr/bin/gem - -RUN update-alternatives --install /usr/bin/gem gem /usr/bin/gem.ruby3.4 1 -RUN update-alternatives --install /usr/bin/gem gem /usr/bin/gem.ruby4.0 2 -RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby.ruby3.4 1 -RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby.ruby4.0 2 - -RUN update-alternatives --set ruby /usr/bin/ruby.ruby3.4 && \ - update-alternatives --set gem /usr/bin/gem.ruby3.4 && \ - update-alternatives --set bundle /usr/bin/bundle.ruby.ruby3.4 && \ - update-alternatives --set bundler /usr/bin/bundler.ruby.ruby3.4 && \ - update-alternatives --set racc /usr/bin/racc.ruby.ruby3.4 && \ - update-alternatives --set rake /usr/bin/rake.ruby.ruby3.4 && \ - update-alternatives --set rbs /usr/bin/rbs.ruby.ruby3.4 && \ - update-alternatives --set rdoc /usr/bin/rdoc.ruby.ruby3.4 && \ - update-alternatives --set ri /usr/bin/ri.ruby.ruby3.4 && \ - update-alternatives --set typeprof /usr/bin/typeprof.ruby.ruby3.4 && \ - update-alternatives --set rdbg /usr/bin/rdbg.ruby.ruby3.4 && \ - update-alternatives --set syntax_suggest /usr/bin/syntax_suggest.ruby.ruby3.4 - -# HACK: Manually set default macros for ruby builds -RUN sed -i -e 's/4\.[0-9]/3\.4/g' -e 's/4[0-9]/34/g' /usr/lib/rpm/macros.d/macros.suse-ruby4.0-default && \ - cp /usr/lib/rpm/macros.d/macros.suse-ruby4.0-default /usr/lib/rpm/macros.d/macros.suse-ruby3.4-default - -RUN mkdir /usr/src/rmt-server -WORKDIR /usr/src/rmt-server diff --git a/docker-compose.yml b/docker-compose.yml index 912cb5299..6d295fe30 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: db: - image: registry.suse.com/suse/mariadb:10.11 + image: registry.suse.com/suse/mariadb:11.8 restart: unless-stopped volumes: - mariadb:/var/lib/mysql @@ -19,7 +19,7 @@ services: command: bundle exec rails runner /srv/www/rmt/bin/compose-init.rb nginx: - image: nginx:1.14 + image: nginx:1.27.2 volumes: - ./public:/var/www/ - ./nginx/default.conf:/tmp/default.template diff --git a/engines/scc_proxy/lib/scc_proxy/engine.rb b/engines/scc_proxy/lib/scc_proxy/engine.rb index 510495c30..8f34edcaa 100644 --- a/engines/scc_proxy/lib/scc_proxy/engine.rb +++ b/engines/scc_proxy/lib/scc_proxy/engine.rb @@ -18,7 +18,7 @@ Net::HTTPHeaderSyntaxError, Net::ProtocolError, Net::OpenTimeout, - Net::HTTPServerException, + Net::HTTPClientException, Net::HTTPFatalError, OpenSSL::SSL::SSLError, Errno::EHOSTUNREACH, @@ -333,7 +333,7 @@ def status_code(error_message) def has_no_regcode?(auth_header) auth_header ||= '=' - auth_header = auth_header[(auth_header.index('=') + 1)..-1] + auth_header = auth_header[(auth_header.index('=') + 1)..] auth_header.empty? end end diff --git a/lib/rmt/mirror/debian.rb b/lib/rmt/mirror/debian.rb index 51b48c5f7..81a355a72 100644 --- a/lib/rmt/mirror/debian.rb +++ b/lib/rmt/mirror/debian.rb @@ -5,8 +5,8 @@ class RMT::Mirror::Debian < RMT::Mirror::Base SIGNATURE_FILE_NAME = 'Release.gpg'.freeze KEY_FILE_NAME = 'Release.key'.freeze INRELEASE_FILE_NAME = 'InRelease'.freeze - NESTED_REPOSITORY_REGEX = %r{/dists/.*/$}.freeze - PACKAGE_INDEX_FILE_NAME = /Packages\.(gz|xz)/.freeze + NESTED_REPOSITORY_REGEX = %r{/dists/.*/$} + PACKAGE_INDEX_FILE_NAME = /Packages\.(gz|xz)/ def mirror_implementation diff --git a/spec/lib/rmt/file_validator_spec.rb b/spec/lib/rmt/file_validator_spec.rb index 4fe6653a0..92219ed61 100644 --- a/spec/lib/rmt/file_validator_spec.rb +++ b/spec/lib/rmt/file_validator_spec.rb @@ -332,14 +332,14 @@ def initialize(deep_verify) shared_examples 'invalid files on disk' do it 'removes invalid files from the disk' do - previous_state = invalid_files.map { |f| [f[:file].local_path, true] }.to_h - expected_state = invalid_files.map { |f| [f[:file].local_path, false] }.to_h + previous_state = invalid_files.to_h { |f| [f[:file].local_path, true] } + expected_state = invalid_files.to_h { |f| [f[:file].local_path, false] } expect { find_valid_files_by_checksum } .to change { - invalid_files.map do |f| + invalid_files.to_h do |f| [f[:file].local_path, File.exist?(f[:file].local_path)] - end.to_h + end }.from(previous_state).to(expected_state) end end