mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-30 07:55:51 +00:00
This change updates some incorrect Conan commands for Conan 2. As some flags do not exist in Conan 2, such as --settings build_type=[configuration], the commands have been adjusted accordingly. This change further uses the org-level variables and secrets rather than the repo-level ones.
92 lines
4.0 KiB
YAML
92 lines
4.0 KiB
YAML
name: Check libXRPL compatibility with Clio
|
|
env:
|
|
CONAN_REMOTE_URL: ${{ vars.CONAN_REMOTE_URL }}
|
|
CONAN_LOGIN_USERNAME_XRPLF: ${{ secrets.CONAN_REMOTE_USERNAME }}
|
|
CONAN_PASSWORD_XRPLF: ${{ secrets.CONAN_REMOTE_PASSWORD }}
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- 'src/libxrpl/protocol/BuildInfo.cpp'
|
|
- '.github/workflows/libxrpl.yml'
|
|
types: [opened, reopened, synchronize, ready_for_review]
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
publish:
|
|
if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }}
|
|
name: Publish libXRPL
|
|
outputs:
|
|
outcome: ${{ steps.upload.outputs.outcome }}
|
|
version: ${{ steps.version.outputs.version }}
|
|
channel: ${{ steps.channel.outputs.channel }}
|
|
runs-on: [self-hosted, heavy]
|
|
container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
|
|
steps:
|
|
- name: Wait for essential checks to succeed
|
|
uses: lewagon/wait-on-check-action@v1.3.4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
running-workflow-name: wait-for-check-regexp
|
|
check-regexp: '(dependencies|test).*linux.*' # Ignore windows and mac tests but make sure linux passes
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
wait-interval: 10
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Generate channel
|
|
id: channel
|
|
shell: bash
|
|
run: |
|
|
echo channel="clio/pr_${{ github.event.pull_request.number }}" | tee ${GITHUB_OUTPUT}
|
|
- name: Export new package
|
|
shell: bash
|
|
run: |
|
|
conan export . ${{ steps.channel.outputs.channel }}
|
|
- name: Add Conan remote
|
|
shell: bash
|
|
run: |
|
|
echo "Adding Conan remote 'xrplf' at ${{ env.CONAN_REMOTE_URL }}."
|
|
conan remote add xrplf ${{ env.CONAN_REMOTE_URL }} --insert 0 --force
|
|
echo "Listing Conan remotes."
|
|
conan remote list
|
|
- name: Parse new version
|
|
id: version
|
|
shell: bash
|
|
run: |
|
|
echo version="$(cat src/libxrpl/protocol/BuildInfo.cpp | grep "versionString =" \
|
|
| awk -F '"' '{print $2}')" | tee ${GITHUB_OUTPUT}
|
|
- name: Try to authenticate to Conan remote
|
|
id: remote
|
|
shell: bash
|
|
run: |
|
|
# `conan user` implicitly uses the environment variables CONAN_LOGIN_USERNAME_<REMOTE> and CONAN_PASSWORD_<REMOTE>.
|
|
# https://docs.conan.io/1/reference/commands/misc/user.html#using-environment-variables
|
|
# https://docs.conan.io/1/reference/env_vars.html#conan-login-username-conan-login-username-remote-name
|
|
# https://docs.conan.io/1/reference/env_vars.html#conan-password-conan-password-remote-name
|
|
echo outcome=$(conan user --remote xrplf --password >&2 \
|
|
&& echo success || echo failure) | tee ${GITHUB_OUTPUT}
|
|
- name: Upload new package
|
|
id: upload
|
|
if: (steps.remote.outputs.outcome == 'success')
|
|
shell: bash
|
|
run: |
|
|
echo "conan upload version ${{ steps.version.outputs.version }} on channel ${{ steps.channel.outputs.channel }}"
|
|
echo outcome=$(conan upload xrpl/${{ steps.version.outputs.version }}@${{ steps.channel.outputs.channel }} --remote ripple --confirm >&2 \
|
|
&& echo success || echo failure) | tee ${GITHUB_OUTPUT}
|
|
notify_clio:
|
|
name: Notify Clio
|
|
runs-on: ubuntu-latest
|
|
needs: publish
|
|
env:
|
|
GH_TOKEN: ${{ secrets.CLIO_NOTIFY_TOKEN }}
|
|
steps:
|
|
- name: Notify Clio about new version
|
|
if: (needs.publish.outputs.outcome == 'success')
|
|
shell: bash
|
|
run: |
|
|
gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" \
|
|
/repos/xrplf/clio/dispatches -f "event_type=check_libxrpl" \
|
|
-F "client_payload[version]=${{ needs.publish.outputs.version }}@${{ needs.publish.outputs.channel }}" \
|
|
-F "client_payload[pr]=${{ github.event.pull_request.number }}"
|