Red Hat

Buildkite Packages provides registry support for Red Hat-based (RPM) packages for Red Hat Linux operating systems.

Once your Red Hat registry has been created, you can publish/upload packages (generated from your application's build) to this registry via the relevant curl command presented on your Red Hat registry's details page.

To view and copy this curl command:

  1. Select Packages in the global navigation to access the Registries page.
  2. Select your Red Hat registry on this page.
  3. Select Publish an RPM Package and in the resulting dialog, use the copy icon at the top-right of the code box to copy this curl command and run it to publish a package to your Red Hat registry.

This command provides:

  • The specific URL to publish a package to your specific Red Hat registry in Buildkite.
  • The API access token required to publish packages to your Red Hat registry.
  • The Red Hat (RPM) package file to be published.

Publish a package

The following curl command (which you'll need to modify as required before submitting) describes the process above to publish an RPM package to your Red Hat registry:

curl -X POST https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{registry.slug}/packages \
  -H "Authorization: Bearer $REGISTRY_WRITE_TOKEN" \
  -F "file=@<path_to_file>"

where:

  • {org.slug} can be obtained from the end of your Buildkite URL, after accessing Packages or Pipelines in the global navigation of your organization in Buildkite.
  • {registry.slug} is the slug of your Red Hat registry, which is the kebab-case version of your Red Hat registry name, and can be obtained after accessing Packages in the global navigation > your Red Hat registry from the Registries page.
  • $REGISTRY_WRITE_TOKEN is your API access token used to publish/upload packages to your Red Hat registry. Ensure this access token has the Write Packages REST API scope, which allows this token to publish packages to any registry your user account has access to within your Buildkite organization.
  • <path_to_file> is the full path required to the package file. If the file is located in the same directory that this command is running from, then no path is required.

For example, to upload the file my-red-hat-package_1.0-2.x86_64.rpm from the current directory to the My Red Hat packages registry in the My organization Buildkite organization, run the curl command:

curl -X POST https://api.buildkite.com/v2/packages/organizations/my-organization/registries/my-red-hat-packages/packages \
  -H "Authorization: Bearer $REPLACE_WITH_YOUR_REGISTRY_WRITE_TOKEN" \
  -F "file=@my-red-hat-package_1.0-2.x86_64.rpm"

Access a package's details

A Red Hat (RPM) package's details can be accessed from this registry using the Packages section of your Red Hat registry page.

To access your RPM package's details page:

  1. Select Packages in the global navigation to access the Registries page.
  2. Select your Red Hat registry on this page.
  3. On your Red Hat registry page, select the package to display its details page.

The package's details page provides the following information in the following sections:

  • Installation (tab): the installation instructions.
  • Contents (tab, where available): a list of directories and files contained within the package.
  • Details (tab): a list of checksum values for this package—MD5, SHA1, SHA256, and SHA512.
  • About this version: a brief (metadata) description about the package.
  • Details: details about:

    • the name of the package (typically the file name excluding any version details and extension).
    • the package version.
    • the registry the package is located in.
    • the package's visibility (based on its registry's visibility)—whether the package is Private and requires authentication to access, or is publicly accessible.
    • the distribution name / version.
    • additional optional metadata contained within the package, such as a homepage, licenses, etc.

  • Pushed: the date when the last package was uploaded to the registry.

  • Total files: the total number of files (and directories) within the package.

  • Dependencies: the number of dependency packages required by this package.

  • Package size: the storage size (in bytes) of this package.

  • Downloads: the number of times this package has been downloaded.

Downloading a package

A Red Hat (RPM) package can be downloaded from the package's details page. To do this:

  1. Access the package's details.
  2. Select Download.

Installing a package

A Red Hat package can be installed using code snippet details provided on the package's details page. To do this:

  1. Access the package's details.
  2. Ensure the Installation > Instructions section is displayed.
  3. For each required command in the relevant code snippets, copy the relevant code snippet, paste it into your terminal, and run it.

The following set of code snippets are descriptions of what each code snippet does and where applicable, its format:

Registry configuration

Configure your Red Hat registry as the source for your Red Hat (RPM) packages:

sudo sh -c 'echo -e "[{registry.slug}]\nname={registry.name}\nbaseurl=https://buildkite:{registry.read.token}@packages.buildkite.com/{org.slug}/{registry.slug}/rpm_any/rpm_any/\$basearch\nenabled=1\nrepo_gpgcheck=1\ngpgcheck=0\ngpgkey=https://buildkite:{registry.read.token}@packages.buildkite.com/{org.slug}/{registry.slug}/gpgkey\npriority=1"' > /etc/yum.repos.d/{registry.slug}.repo

where:

  • {registry.slug} is the slug of your Red Hat registry, which is the kebab-case version of your Red Hat registry name, and can be obtained after accessing Packages in the global navigation > your Red Hat registry from the Registries page.
  • {registry.name} is the name of your Red Hat registry.

  • {registry.read.token} is your API access token or registry token used to download packages from your Red Hat registry. Ensure this access token has the Read Packages REST API scope, which allows this token to download packages from any registry your user account has access to within your Buildkite organization. This URL component, along with its surrounding buildkite: and @ components are not required for registries that are publicly accessible.

  • {org.slug} can be obtained from the end of your Buildkite URL, after accessing Packages or Pipelines in the global navigation of your organization in Buildkite.

Package installation

Use dnf to install the package:

dnf install -y package-name

where package-name is the name of your package, which usually includes the version number and distribution type.