Skip to content
Snippets Groups Projects
  1. Dec 22, 2021
    • Emanuele Aina's avatar
      Use more structured reports · c0c77cb6
      Emanuele Aina authored
      
      Rather than using plaintext error messages, use readable codes and
      structured metadata for errors and updates to make them easier
      to process.
      
      This will be particularly useful for filtering: for instance we
      preserve the branch information rather than muddling it in the
      error message.
      
      Signed-off-by: Emanuele Aina's avatarEmanuele Aina <emanuele.aina@collabora.com>
      c0c77cb6
  2. Nov 18, 2021
    • Ryan Gonzalez's avatar
      Add support for computing repository storage statistics · 6f8935c8
      Ryan Gonzalez authored
      This adds a new tool, storage_stats, to gather statistics on the used
      storage, as well as a new dashboard page to display the statistics. Due
      to exceedingly poor performance from attempting to use pure Python to
      parse all the packaging files in over 2000 snapshots (a total of several
      thousand files to parse & process), Rust was used for the storage_stats
      implementation; on my system, it determines the full extent of storage
      usage in under 20 minutes.
      
      On the dashboard's side, the common HTML and styling was moved into a
      single shared template that both the current index/packages page *and*
      the new storage page can use, and navigational links were added to the
      pages.
      
      https://phabricator.apertis.org/T8197
      
      
      
      Signed-off-by: default avatarRyan Gonzalez <ryan.gonzalez@collabora.com>
      6f8935c8
  3. Oct 21, 2021
  4. Oct 01, 2021
  5. Sep 30, 2021
  6. Sep 20, 2021
    • Emanuele Aina's avatar
      updates: Do not fail on updatable branches with no base · 261823c2
      Emanuele Aina authored
      
      The `golang-k8s-sigs-yaml` update in `apertis/v2021-updates` broke the
      rendering for downstream instances since it does not have a base branch:
      
          golang-k8s-sigs-yaml:
            git:
              path_with_namespace: pkg/golang-k8s-sigs-yaml
            updates:
            - branch:
                name: apertis/v2021-updates
                version: 1.2.0-2+apertis1
              upstream:
                component: development
                name: golang-k8s-sigs-yaml
                source: apertis/v2021-updates
                version: 1.2.0-3+apertis1
      
      This is due to the fact that `golang-k8s-sigs-yaml` is a new dependency
      introduced by a package that got updated in `apertis/v2021-updates` and
      has not been folded into `apertis/v2021` yet: no `golang-k8s-sigs-yaml`
      exists in `apertis/v2021`, and for this reason there's no `base` object.
      
      In this case it is enough to trigger the pipeline directly on the
      `apertis/v2021-updates` branch.
      
      Signed-off-by: Emanuele Aina's avatarEmanuele Aina <emanuele.aina@collabora.com>
      261823c2
  7. Sep 04, 2021
  8. Jul 14, 2021
  9. Jun 09, 2021
  10. Mar 14, 2021
  11. Feb 26, 2021
  12. Feb 24, 2021
  13. Feb 21, 2021
  14. Feb 20, 2021
  15. Feb 16, 2021
  16. Feb 15, 2021
  17. Oct 12, 2020
  18. Aug 21, 2020
  19. Jul 29, 2020
    • Emanuele Aina's avatar
      Index data by package name · 070001e5
      Emanuele Aina authored and Martyn Welch's avatar Martyn Welch committed
      
      Rather than indexing by repository name, use the package name as the
      main key since it is the common concept that ties GitLab, OBS and
      upstream sources.
      
      This simplifies some parts of the code as all the information is
      available from a single object instead of being spread across multiple
      data sources.
      
      Error reporting is also largely simplified by having a single `errors:`
      array on each package and have each error to be an object rather than a
      single string: iterating over every error is thus much simpler and the
      information about the error itself is now explicit rather than implicit
      based on its surrounding context (for instance, whether it was located
      on a branch, on the git project, or on the OBS package entry).
      
      The YAML structure went from:
      
          obs:
            packages:
              aalib:
                entries:
                  apertis:v2020:target:
                    name: aalib
                    errors:
                      - "ooops"
          projects:
            pkg/target/aalib:
              branches:
                debian/buster:
                  name: debian/buster
                  errors:
                    - "eeeww"
              errors:
                - "aaargh"
          sources:
            debian/buster:
              packages:
                aalib: [...]
      
      to:
      
          packages:
            aalib:
              obs:
                entries:
                  apertis:v2020:target: {...}
              git:
                branches:
                  debian/buster: {...}
              upstreams:
                debian/buster: [...]
              errors:
                - msg: "aaargh"
                - msg: "eeeww"
                  branch: debian/buster
                - msg: "ooops"
                  projects: [ "apertis:v2020:target" ]
      
      Signed-off-by: Emanuele Aina's avatarEmanuele Aina <emanuele.aina@collabora.com>
      070001e5
  20. Jul 14, 2020
  21. May 15, 2020
    • Emanuele Aina's avatar
      packaging: Gather data and trigger actions on packaging repositories · e7163690
      Emanuele Aina authored
      
      Introduce a pipeline to fetch data from multiple sources, cross-check
      the retrieved information and trigger actions.
      
      Each step emits YAML data that can be consumed by later steps and then
      merged again to render a dashboard, with the goal of easing the addition
      of more data sources and checks as much as possible.
      
      The current steps are:
      * packaging-data-fetch-upstream: grab package listings from the
        configured upstream sources
      * packaging-data-fetch-downstream: scan GitLab to collect data about
        the packaging repositories and branches
      * yaml-merge: dedicated tool to merge data from multiple sources
      * packaging-sanity-check: verify some invariants and report mismatches
      * packaging-updates: compute which packages have a newer upstream and
        trigger the pipeline to pull them in
      * dashboard: render a basic dashboard listing the identified errors
      
      By triggering only the pipelines where there's a known update pending
      we avoid the issues with the previous approach that involved running
      the pipeline on each of the 4000+ repositories every week, which ended
      up overwhelming GitLab.
      
      Signed-off-by: Emanuele Aina's avatarEmanuele Aina <emanuele.aina@collabora.com>
      e7163690
Loading