name: Check libXRPL compatibility with Clio env: CONAN_REMOTE_URL: https://conan.ripplex.io 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_ and CONAN_PASSWORD_. # 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 }}"