Skip to content

Instantly share code, notes, and snippets.

@thomaslagies
Last active January 27, 2025 09:16
Show Gist options
  • Select an option

  • Save thomaslagies/e213285f4c05fc9eba0cf35859e50808 to your computer and use it in GitHub Desktop.

Select an option

Save thomaslagies/e213285f4c05fc9eba0cf35859e50808 to your computer and use it in GitHub Desktop.

Notes

on what to do

Pipeline

Install/Update tests

  • Run the download in parallel
  cat urls.txt | xargs -n 1 -P 4 curl -O
  • Run the installation of RPMs in parallel - does not work, rpm has lock file
  cat rpms.txt | xargs -n 1 -P 4 sudo rpm -ivh
  1. Individual Installation:

    time for rpm in /path/to/rpms/*.rpm; do sudo rpm -Uvh "$rpm"; done
  2. Bulk Installation:

    time sudo rpm -Uvh /path/to/rpms/*.rpm
  • Use generator instead of custom shell scripts per bundle

Performance Tests

Create the environment via generator and not via custom shell scripts

Update all actions

  • Look into generator for all actions and update them accordingly
  • Use something like dependabot to update all actions versions
version: 2
updates:
  - package-ecosystem: 'github-actions'
    directory: '/'
    schedule:
      interval: 'weekly'
    commit-message:
      prefix: 'chore'
    open-pull-requests-limit: 10
    ignore:
      - dependency-name: '*'
        versions: ['<breaking-change-version']

Make dependabot pull requests for node.js dependencies auto merge

We have more than 1200 repos, we can't update them manually

  • Use dependabot to update all node.js dependencies
  • Run npm bot and doctor
  • Automerge all pull requests that are green
version: 2
updates:
  - package-ecosystem: 'npm'
    directory: '/'
    schedule:
      interval: 'weekly'
    commit-message:
      prefix: 'chore'
    open-pull-requests-limit: 10
    automerge:
      - match:
          - dependency-type: 'all'
        automerge: true

move to S3

  • FTPX and owncloud combination are very slow and cumbersome
  • Move to S3 and use caboose to handle everything
  • caboose is only available via github action. No one will get a user/api key
  • S3 will be a void bucket with no public access. You can retrieve files but not change them

move to github pages

  • Get rid of netlify (120+ dollars a month) and move to github pages
  • Make release of documentation easier
  • Use github actions to build and deploy the documentation
  • Make use of textblocks for cross-referencing
  • Maybe a monorepo?
  • Make the repo public for a good apperance on the github profile of sealsystems

move azure machines into vSphere

  • safe money on azure vms and storage
  • use the existing vSphere infrastructure (already paid for)
  • use bigger and faster machines
  • introduce long running tests (e.g. after EA stage)

branch releases

  • use branch releases for bundles
  • build docker images in service branches if they are tagged with e.g pi-team-1 or something along those lines
  • use the branch name as a tag for the docker image
  • only merge to master like it is currently. Branch releases are forbidden in release branches of a bundle

bundles

  • get rid of third party bundles
  • instead, install directly from vendor
  • move custom parts (configuration/patches) into the product bundle itself
  • add those custom parts to the generator
  • maybe one sub generator per product (out-ngn / dpf / etc.)
 "seal": {
    "auxiliaries": {
      "clients": {
        "seal-island-checkout": "^1.10.0"
      },
      "apps": {
        "mongodb": "^6.0.0",
        "nats": "^2.10.0",
        "keycloak": "^23.0.0",
        "elasticsearch": "^7.17.5",
        "easyprima": "^1.11.0".
      }
    },
    "packaging": {
      "dependencies": {
        "seal-bodyscanner": "6.18.3",
        "seal-bos2gyros": "1.2.3",
        "seal-checkin": "8.24.1",
        "seal-checkout": "8.21.2",
        "seal-co-notifier": "4.0.1",
        ...

strictly use semver, no more custom versioning

  • use semver for all product bundles, dont care for release planning versions
  • this might need version mapping. so a technical version and a version'name' which is used by product management
  • maybe like ubuntu/node.js naming e.g. iron / xenial / bionic / focal / etc.
  • product management/planning need to work with placeholders like next or latest

don't release without generator update

  • new release needs to have updated generator
  • new release needs to have an update path with it.
  • breaking change might need custom scripts for that
  • if generator run (install/update/performance test) fails, no release

UI - Plossysadmin

  • get rid of potpurri, streamline with generator

Signing

  • current signing is on single vCloud VM (bottleneck)

Icepanel

  • Create PLOSSYS OUTPUT ENGINE for icepanel
  • Create all used 3rd party
  • Create all possible deployment methods
  • Create Build Pipeline as a System for show and tell where things need to be changed
@danthecowboy
Copy link

Noch als Ergänzung so was wie api.sealsystems.de mit Beispielen. Alle Schnittstellen unter einer Doku zusammengefasst. Ähnlich wie: https://operator.docs.sealsystems.de/reference/api/use_cases/create_document

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment