The site behind software.opensuse.org. It is the default web interface to download openSUSE distribution and to search for OBS packages.Packages at https://build.opensuse.org/project/show/openSUSE:infrastructure:software.opensuse.org
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add GitHub Pull Request Template Nov 15, 2018
app Tumbleweed aarch64 is still a port Feb 17, 2019
bin update rails files Oct 20, 2017
config Merge pull request #477 from lnussel/master Feb 15, 2019
doc start a readme for i18n Feb 11, 2010
lib Add support for the production authorization cookie Jan 20, 2019
locale Translated using Weblate (Slovak) Feb 18, 2019
opensuse-theme-chameleon @ 339ba31 Move opensuse-theme-chameleon assets into this repo Nov 8, 2018
public Initial port of chameleon theme as a gem Oct 14, 2018
script Move the downloads calculation from delayed_job to a rake task May 9, 2014
test Merge pull request #477 from lnussel/master Feb 15, 2019
.editorconfig editorconfig Apr 30, 2018
.gitignore Add vendor to .gitignore Feb 2, 2018
.gitmodules Move opensuse-theme-chameleon assets into this repo Nov 8, 2018
.rubocop.yml Update Rubocop gem to 0.59.2 Oct 3, 2018
.rubocop_todo.yml Update Rubocop gem to 0.59.2 Oct 3, 2018
.travis.yml Merge pull request #459 from alexandergraul/migrate-travis-badge Jan 7, 2019
CONTRIBUTING.md Fix inconsistency of writing "GitHub" and a typo Nov 6, 2018
Capfile Small bump to next rubocop that works Feb 2, 2018
Dockerfile Update docker environment to Leap 15 + ruby2.5 Sep 23, 2018
Gemfile Revamp download section Jan 28, 2019
Gemfile.lock Merge pull request #479 from openSUSE/depfu/update/faker-1.9.3 Feb 14, 2019
Makefile Fix the logo path; adjust asset paths Nov 12, 2018
README.i18n Wrong url in README.i18n Jul 28, 2016
README.md Use travis-ci.com badge Jan 7, 2019
Rakefile Small bump to next rubocop that works Feb 2, 2018
TODO improve display of subpackages in search result list Apr 20, 2012
Vagrantfile Small bump to next rubocop that works Feb 2, 2018
config.ru Enable Style/ExtraSpacing Rubocop cop Jun 8, 2017
manifest.yml manifest: increase disk quota Oct 20, 2017

README.md

software.opensuse.org

Build StatusGitter chat

Ruby on Rails application powering https://software.opensuse.org

We hope you'll get involved! Read our Contributors' Guide for details.

Installing dependencies in a (open)SUSE system

We recommend the usage of Ruby 2.4 or higher for the development.

If you are an openSUSE Tumbleweed user, it comes with the latest Ruby releases as default so you can configure your environment doing:

zypper ref
zypper in ruby ruby-devel ruby2.5-rubygem-bundler nodejs gcc make libxml2-devel libxslt-devel

On openSUSE Leap 42.3 you will need to install the Ruby 2.4 environment doing:

zypper ref
zypper in ruby2.4 ruby2.4-devel ruby2.4-rubygem-bundler nodejs6 gcc make libxml2-devel libxslt-devel

You can find more information about Ruby development and packaging on openSUSE distributions here.

Running the application locally

Just for running it in development mode. If you are playing to deploy it in a server, please apply good Ruby on Rails practices (like generating your own keys for secrets.yml).

git clone https://github.com/openSUSE/software-o-o.git
cd software-o-o

bundle package
bundle exec rails s

Enjoy your software.opensuse.org clone at http://127.0.0.1:3000/

You can also run the unit tests locally using the command:

bundle exec rails test

and also the System Tests that will simulate user interaction using a headless browser:

bundle exec rails test:system

IMPORTANT: For the System Tests, the project is configured to use Firefox Headless Mode feature, available on:

  • Linux: Firefox 55 or higher;
  • Windows/Mac: Firefox 56 or higher.

See more here.

Instrumentation on development

By default in non-production environments, the prometheus instrumentation is disabled. You can enable it by passing INSTRUMENTATION=true environment variable when starting the application:

INSTRUMENTATION=true bundle exec rails s

When doing this, you need to start the prometheus_exporter process separately (otherwise you will observe a lot of warnings in the log as the instrumentation code will try to connect to the collector process). You can do so with this command:

bundle exec prometheus_exporter

After this the prometheus metrics will be exported under http://localhost:9394/metrics.

Updaing opensuse-theme-chameleon assets

git submodule init
git submodule update
make

After running the above commands, run RAILS_ENV=production rails assets:precompile and you should see the new assets.

Running the application in production

The application will take the following environment variables:

  • SECRET_KEY_BASE: See Encrypted Session Storage in Rails documentation.
  • API_USERNAME and API_PASSWORD: Credentials to the Open Build Service API end-point
    • These can be replaced with OPENSUSE_COOKIE if you have admin access to the Open Build Service instance.
  • RAILS_ENV

Puma will honor other variables too:

  • WEB_CONCURRENCY
  • RAILS_MAX_THREADS
  • PORT
  • RACK_ENV
  • SOFTWARE_O_O_RBTRACE

In production, prometheus instrumentation is enabled and prometheus_exporter process must be started.

Debugging

  • If SOFTWARE_O_O_RBTRACE is set, you can use rbtrace to debug the application.

Memcache

memcache should be running. It seems to be hardcoded in environments/production.rb to localhost:11211. This probably needs to be fixed, as the dalli gem, automatically uses MEMCACHE_SERVERS env variable or 127.0.0.1:11211 as default.

PaaS

If you plan to run the application on PaaS, make sure you set all the above variables correctly.

Official instance

The official instance is deployed using an rpm package. The rpm package bundles all the required gems.

There is a software_opensuse_org.service you can control via systemd.

The systemd service will read the variables described above from /etc/software_opensuse_org.conf in the form of an EnvironmentFile:

VAR1=value1
VAR2=value2
...

Development environment using Vagrant

There is also a Vagrant setup to create our development environment. All the tools needed for this are available for Linux, MacOS and Windows.

  1. Install Vagrant and docker. Both tools support Linux, MacOS and Windows.

  2. Clone this code repository:

    git clone --recurse-submodules git@github.com:openSUSE/software-o-o.git
    
  3. Build your Vagrant box:

    vagrant up
    
  4. Attach to your new development box:

    docker attach software_web
    
  5. Install gems:

    bundle install
    
  6. Start the app:

    rails server
    
  7. Enjoy your software.opensuse.org clone at http://127.0.0.1:3000/

If you exit the shell inside the vagrant box your development environment is stopped. Want to continue? Run vagrant up and docker attach software_web again. Happy hacking!

Configuring openSUSE releases

The file config/releases.yml is used by the /distributions end-point to render the right template (leap-$version).

The variables @testing_version, @stable_version and @legacy_version will be set accordingly. @version will be set to the right version of the page you are displaying.

---
- from: '2018-05-25 10:00:00'
  stable_version: '15'
  legacy_version: '42.3'
- from: '2018-01-31 00:00:00'
  stable_version: '42.3'
  testing_version: '15'
  testing_state: 'Beta'
  legacy_version: '42.2'
- from: '2017-07-26 00:00:00'
  stable_version: '42.3'
  legacy_version: '42.2'
- from: '2017-07-08 00:00:00'
  stable_version: '42.2'
  testing_version: '42.3'
  testing_state: 'RC'
  legacy_version: '42.1'
- from: '2016-11-16 00:00:00'
  stable_version: '42.2'
  legacy_version: '42.1'