mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 23:38:08 +00:00
121 lines
4.1 KiB
YAML
121 lines
4.1 KiB
YAML
# Install one package format on every distro family it targets, one job per
|
|
# package name and image, and run the binaries there. Called once per format by
|
|
# reusable-package.yml, which owns the names and the image lists.
|
|
name: Install packages
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
package_type:
|
|
description: 'The package format to install ("deb" or "rpm").'
|
|
required: true
|
|
type: string
|
|
package_names:
|
|
description: "JSON array of package names built for this format."
|
|
required: true
|
|
type: string
|
|
images:
|
|
description: "JSON array of container images to install in."
|
|
required: true
|
|
type: string
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
env:
|
|
PACKAGE_DIR: packages
|
|
|
|
jobs:
|
|
install:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
package_name: ${{ fromJson(inputs.package_names) }}
|
|
image: ${{ fromJson(inputs.images) }}
|
|
name: "${{ matrix.package_name }} on ${{ matrix.image }}"
|
|
permissions:
|
|
contents: read
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.image }}
|
|
timeout-minutes: 5
|
|
|
|
steps:
|
|
# Every package lands in one directory; the step below picks its own,
|
|
# which keeps this independent of the artifact names.
|
|
- name: Download package artifacts
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
pattern: "*-pkg"
|
|
merge-multiple: true
|
|
path: ${{ env.PACKAGE_DIR }}
|
|
|
|
- name: Find the package
|
|
id: find
|
|
env:
|
|
PACKAGE_NAME: ${{ matrix.package_name }}
|
|
PACKAGE_TYPE: ${{ inputs.package_type }}
|
|
run: |
|
|
# The version follows the name, separated by '_' in a DEB and '-' in an
|
|
# RPM. Requiring a digit after it is what keeps 'xrpld' from picking up
|
|
# another package, such as 'xrpld-assert'.
|
|
pattern="${PACKAGE_NAME}[_-][0-9]*.${PACKAGE_TYPE}"
|
|
package="$(find "${PACKAGE_DIR}" -type f -name "${pattern}" -print -quit)"
|
|
test -n "${package}" || {
|
|
echo "no ${pattern} found in ${PACKAGE_DIR}" >&2
|
|
exit 1
|
|
}
|
|
echo "package=${package}" >>"${GITHUB_OUTPUT}"
|
|
|
|
# Debian 11 went end-of-life on 2026-08-31
|
|
# (https://www.debian.org/News/2026/20260831) and its packages are
|
|
# already partly gone from deb.debian.org, so switch to the
|
|
# snapshot.debian.org entries the image ships commented out in its
|
|
# sources.list: they are pinned to the snapshot the image was built
|
|
# from, so they serve every version it needs and never go away.
|
|
# Snapshots keep their original, long-passed Valid-Until, hence the
|
|
# disabled check; the retries absorb snapshot.debian.org's throttling.
|
|
- name: Switch Debian 11 to snapshot.debian.org
|
|
if: ${{ matrix.image == 'debian:11' }}
|
|
run: |
|
|
sed -i 's|^deb |# deb |; s|^# deb http://snapshot|deb http://snapshot|' /etc/apt/sources.list
|
|
printf '%s\n' \
|
|
'Acquire::Check-Valid-Until "false";' \
|
|
'Acquire::Retries "3";' \
|
|
>/etc/apt/apt.conf.d/99snapshot
|
|
|
|
- name: Install the DEB
|
|
if: ${{ inputs.package_type == 'deb' }}
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
PACKAGE: ${{ steps.find.outputs.package }}
|
|
run: |
|
|
# Stock Debian and Ubuntu images carry no package lists, so apt has
|
|
# nothing to resolve the systemd dependency from until it fetches them.
|
|
apt-get update -qq
|
|
apt-get install -y "./${PACKAGE}"
|
|
|
|
- name: Install the RPM
|
|
if: ${{ inputs.package_type == 'rpm' }}
|
|
env:
|
|
PACKAGE: ${{ steps.find.outputs.package }}
|
|
run: dnf install -y "./${PACKAGE}"
|
|
|
|
- name: Run xrpld
|
|
run: xrpld --version
|
|
|
|
- name: Run validator-keys
|
|
run: validator-keys --version
|
|
|
|
- name: Run rippled, the legacy compatibility symlink
|
|
run: rippled --version
|
|
|
|
- name: Check the service account
|
|
run: id xrpld
|
|
|
|
- name: Check the state directory
|
|
run: test -d /var/lib/xrpld
|
|
|
|
- name: Check the log directory
|
|
run: test -d /var/log/xrpld
|