Skip to content

Pin and harden the Qovery CLI and Qovery Skills installs #14

Description

@jpetitcolas

Problem

In the template Dockerfile, both the Qovery CLI and Qovery Skills are installed by piping a remote script into bash, unpinned and unverified:

# Qovery CLI
RUN curl -s https://get.qovery.com | bash
...
# Qovery Skills
RUN curl -fsSL https://skill.qovery.com/install.sh | bash

Both fetch from Qovery-controlled domains, so the external supply-chain risk is lower than for third-party tools — but:

  1. Unpinned. Neither install pins a version, so the CLI and skills can change between builds with no record of what shipped — builds aren't reproducible.
  2. No integrity check. The scripts are executed with no checksum.

Proposed change

Pin both components through .config.rde.qovery.yml (see Qovery/documentation#143). The qovery_cli key accepts a version string (default latest); the skills key controls the Qovery Skills install:

# .config.rde.qovery.yml
qovery_cli: "<pinned-version>"   # was: latest
skills: true                     # pin to a version if/when the install supports it

Where the install path allows, checksum-verify the downloaded install scripts before executing them. Since these are Qovery's own endpoints, publishing a pinnable version and a checksum for each is fully within Qovery's control.

Acceptance criteria

  • The Qovery CLI version is declared as an explicit, pinned version in .config.rde.qovery.yml (not latest)
  • Qovery Skills is installed at a reproducible version (pinned via config where supported)
  • The Qovery CLI and Skills install scripts are checksum-verified before execution, or installed via a verified pinned artifact
  • Bumping either requires only a change to .config.rde.qovery.yml
  • Image builds successfully; qovery runs and the skills are present in the container

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions