mirror of
https://github.com/XRPLF/rippled.git
synced 2026-02-06 15:05:31 +00:00
To allow developers to consume the latest unstable and (near-)stable versions of our `xrpl` Conan recipe, we should export and upload it whenever a push occurs to the corresponding branch or a release tag has been created. This way, developers do not have to figure out themselves what the most recent shortened commit hash was to determine the latest unstable recipe version (e.g. `3.2.0-b0+a1b2c3d`) or what the most recent release (candidate) was to determine the latest (near-)stable recipe version (e.g. `3.1.0-rc2`). Now, pushes to the `develop` branch will produce the `develop` recipe version, pushes to the `release` branch will produce the `rc` recipe version, and creation of versioned tags will produce the `release` recipe version.
98 lines
3.1 KiB
YAML
98 lines
3.1 KiB
YAML
# This workflow exports the built libxrpl package to the Conan remote.
|
|
name: Upload Conan recipe
|
|
|
|
# This workflow can only be triggered by other workflows.
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
remote_name:
|
|
description: "The name of the Conan remote to use."
|
|
required: false
|
|
type: string
|
|
default: xrplf
|
|
remote_url:
|
|
description: "The URL of the Conan endpoint to use."
|
|
required: false
|
|
type: string
|
|
default: https://conan.ripplex.io
|
|
|
|
secrets:
|
|
remote_username:
|
|
description: "The username for logging into the Conan remote."
|
|
required: true
|
|
remote_password:
|
|
description: "The password for logging into the Conan remote."
|
|
required: true
|
|
|
|
outputs:
|
|
recipe_ref:
|
|
description: "The Conan recipe reference ('name/version') that was uploaded."
|
|
value: ${{ jobs.upload.outputs.ref }}
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}-upload-recipe
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
upload:
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/xrplf/ci/ubuntu-noble:gcc-13-sha-5dd7158
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
|
|
- name: Generate build version number
|
|
id: version
|
|
uses: ./.github/actions/generate-version
|
|
|
|
- name: Set up Conan
|
|
uses: ./.github/actions/setup-conan
|
|
with:
|
|
remote_name: ${{ inputs.remote_name }}
|
|
remote_url: ${{ inputs.remote_url }}
|
|
|
|
- name: Log into Conan remote
|
|
env:
|
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
|
REMOTE_USERNAME: ${{ secrets.remote_username }}
|
|
REMOTE_PASSWORD: ${{ secrets.remote_password }}
|
|
run: conan remote login "${REMOTE_NAME}" "${REMOTE_USERNAME}" --password "${REMOTE_PASSWORD}"
|
|
|
|
- name: Upload Conan recipe (version)
|
|
env:
|
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
|
run: |
|
|
conan export . --version=${{ steps.version.outputs.version }}
|
|
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/${{ steps.version.outputs.version }}
|
|
|
|
- name: Upload Conan recipe (develop)
|
|
if: ${{ github.ref == 'refs/heads/develop' }}
|
|
env:
|
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
|
run: |
|
|
conan export . --version=develop
|
|
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/develop
|
|
|
|
- name: Upload Conan recipe (rc)
|
|
if: ${{ startsWith(github.ref, 'refs/heads/release') }}
|
|
env:
|
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
|
run: |
|
|
conan export . --version=rc
|
|
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/rc
|
|
|
|
- name: Upload Conan recipe (release)
|
|
if: ${{ github.event_name == 'tag' }}
|
|
env:
|
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
|
run: |
|
|
conan export . --version=release
|
|
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/release
|
|
|
|
outputs:
|
|
ref: xrpl/${{ steps.version.outputs.version }}
|