mirror of
				https://github.com/XRPLF/rippled.git
				synced 2025-11-04 11:15:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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_<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 }}"
 |