Testing
Go to file
David Runge 00d3b9ab7f
Update instructions on updating iPXE images
README.md:
Update the instructions on updating the iPXE images.
We now have a properly working ipxe package in the repositories, that
allows us to directly copy files from and test images with.
2021-07-23 19:12:50 +02:00
.github Update www.archlinux.org links 2021-02-14 14:03:10 +01:00
devel Add deletion for old sonames 2021-06-20 20:46:38 +02:00
docs Add Tier 0 Mirror Access support 2021-05-26 20:57:33 +02:00
main Fix build-log link for rebuilderd 2021-07-19 21:39:39 +02:00
mirrors Fix mirror status test case for caching 2021-03-09 23:53:13 +01:00
news Make announcement email address configurable 2020-12-31 17:37:49 +01:00
packages Allow to download sig from "download from mirror" 2021-07-05 23:06:45 +02:00
planet planet: resovle django 3.2 valuerrror 2021-04-12 21:51:27 +02:00
public Introduce planet functionality in archweb 2020-02-03 21:25:31 +01:00
releng extended release model to include wkd_email 2021-07-05 22:52:16 +02:00
sitestatic Add rebuilderd status to the package details page 2021-05-26 22:38:47 +02:00
templates Update packages download url on packages page 2021-07-05 23:07:48 +02:00
todolists Add todolist kind for rebuilds or tasks 2021-01-31 21:47:46 +01:00
visualize Fix pep8 errors 2020-11-11 22:23:29 +01:00
.coveragerc Remove non-functional travisci 2020-12-30 21:36:25 +01:00
.flake8 Increase max-line-length to 300 2020-11-11 22:23:29 +01:00
.gitattributes Add gitattributes file 2010-09-30 12:51:36 -05:00
.gitignore add mypy_cache to gitignore 2019-02-01 21:27:57 +01:00
.gitlab-ci.yml Update docker container image name 2021-01-10 21:13:50 +01:00
.pyup.yml create pyup.io config file 2018-05-31 20:35:29 +02:00
archweb.wsgi Fix hardcoded python version in archweb.wsgi 2019-01-21 21:19:58 +01:00
AUTHORS Add myself as maintainer 2018-06-08 19:02:11 +02:00
feeds.py Fix pep8 errors 2020-11-11 22:23:29 +01:00
HACKING update documentation 2008-10-10 18:38:08 -04:00
LICENSE Initial import for public release... 2007-11-03 03:45:10 -04:00
local_settings.py.example Fix pep8 errors 2020-11-11 22:23:29 +01:00
manage.py Switch shebang for Python 3 support 2019-01-21 21:19:58 +01:00
README Move markdown formatted readme to README.md 2013-11-25 21:54:15 -06:00
README.md Update instructions on updating iPXE images 2021-07-23 19:12:50 +02:00
requirements_prod.txt remove psycopg2 from production requirements 2019-12-18 17:27:44 +01:00
requirements.txt Update django dependency to 3.2.5 2021-07-05 20:33:40 +02:00
settings.py Fix warnings related to missing default_auto_field 2021-07-21 09:52:44 +02:00
sitemaps.py Fix pep8 errors 2020-11-11 22:23:29 +01:00
urls.py Fix pep8 errors 2020-11-11 22:23:29 +01:00

Archweb README

Build Status

To get a pretty version of this document, run

$ markdown README > README.html

License

See LICENSE file.

Authors

See AUTHORS file.

Dependencies

  • python
  • rsync (optional for mirrorcheck with rsync mirrors)

Python dependencies

More detail in requirements.txt and requirements_prod.txt; it is best to use virtualenv and pip to handle these. But if you insist on (Arch Linux) packages, you will probably want the following:

  • python-django
  • python-psycopg2
  • python-markdown
  • python-memcached

Testing Installation

  1. Run python -m venv env.

     cd /path/to/archweb && python -m venv ./env/
    
  2. Activate the virtualenv.

     source ./env/bin/activate
    
  3. Install dependencies through pip.

     pip install -r requirements.txt
    
  4. Copy local_settings.py.example to local_settings.py and modify. Make sure to uncomment the appropriate database section (either sqlite or PostgreSQL).

  5. Migrate changes.

     ./manage.py migrate
    
  6. Load the fixtures to pre populate some data. If you don't want some of the provided data, adjust the file glob accordingly.

     ./manage.py loaddata main/fixtures/*.json
     ./manage.py loaddata devel/fixtures/*.json
     ./manage.py loaddata mirrors/fixtures/*.json
     ./manage.py loaddata releng/fixtures/*.json
    
  7. Use the following commands to start a service instance

     ./manage.py runserver
    
  8. To optionally populate the database with real data:

     wget http://mirrors.kernel.org/archlinux/core/os/x86_64/core.db.tar.gz
     ./manage.py reporead x86_64 core.db.tar.gz
     # Package file listing
     wget http://mirrors.kernel.org/archlinux/core/os/x86_64/core.files.tar.gz
     ./manage.py reporead --filesonly x86_64 core.files.tar.gz
    

Alter architecture and repo to get x86_64 and packages from other repos if needed.

  1. Database Updates for Added/Removed packages

     sqlite3 archweb.db < packages/sql/update.sqlite3.sql
    

For PostgreSQL use packages/sql/update.postgresql_psycopg2.sql

Testing SMTP server

To be able to create an account on your test environment an SMTP server is required. A simple debugging SMTP server can be setup using Python.

    python -m smtpd -n -c DebuggingServer localhost:1025

In local_settings.py add entries to set EMAIL_HOST to 'localhost' and EMAIL_PORT to 1025.

Running tests and coverage

To the unittests execute the following commands:

    ./manage.py collectstatic --noinput
    ./manage.py test

Running coverage:

    pip install coverage
    coverage run --omit='env*' --source='.' manage.py test
    coverage report

Django Debug toolbar

To use the Django Debug toolbar install django-debug-toolbar and in local_settings.py set DEBUG_TOOLBAR to True.

Management commands

Archweb provides multiple management commands for importing various sorts of data. An overview of commands:

  • generate_keyring - Assemble a GPG keyring with all known developer keys.
  • pgp_import - Import keys and signatures from a given GPG keyring.
  • read_rebuilderd_status - Import rebuilderd status into Archweb.
  • rematch_developers - Rematch flag requests and packages where user_id/packager_id is NULL to a Developer.
  • reporead - Parses a repo.db.tar.gz, repo.files.tar.gz file and updates the Arch database with the relevant changes.
  • reporead_inotify - Watches a templated patch for updates of *.files.tar.gz to update Arch databases with.
  • donor_import - Import a single donator from a mail passed to stdin
  • mirrorcheck - Poll every active mirror URLs to store the lastsnyc time and record network timing details.
  • mirrorresolv - Poll every active mirror URLs and determine wheteher they have IP4 and/or IPv6 addresses.
  • populate_signoffs - retrieves the latest commit message of a signoff-eligible package.
  • update_planet - Import all feeds for users who have a valid website and website_rss in their user profile.
  • read_links - Reads a repo.links.db.tar.gz file and updates the Soname model.
  • read_links_inotify - Watches a templated patch for updates of *.links.tar.gz to update Arch databases with.

Updating iPXE images

The binaries required for iPXE based netboot are updated by copying them from the ipxe package to the static content directory (with the run_ipxe script the binaries may be tested beforehand):

cp -v /usr/share/ipxe/x86_64/ipxe-arch.efi /usr/share/ipxe/ipxe-arch.{ipxe,lkrn} sitestatic/releng

Afterwards a detached PGP signature using a valid WKD enabled packager key is created for each file:

gpg --sender "User Name <your@mail.address>" --detach-sign sitestatic/netboot/*.{efi,ipxe,lkrn}

Production Installation

Arch Linux has an Ansible role for Archweb in their infrastructure repo.

vim: set syntax=markdown et: