Upload Conan Dependencies #301
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Upload Conan Dependencies | |
| on: | |
| schedule: | |
| - cron: "0 3 * * 2-6" | |
| workflow_dispatch: | |
| inputs: | |
| force_source_build: | |
| description: "Force source build of all dependencies" | |
| required: false | |
| default: false | |
| type: boolean | |
| force_upload: | |
| description: "Force upload of all dependencies" | |
| required: false | |
| default: false | |
| type: boolean | |
| pull_request: | |
| branches: [develop] | |
| paths: | |
| # This allows testing changes to the upload workflow in a PR | |
| - .github/workflows/upload-conan-deps.yml | |
| push: | |
| branches: [develop] | |
| paths: | |
| - .github/workflows/upload-conan-deps.yml | |
| - .github/workflows/reusable-strategy-matrix.yml | |
| - .github/actions/build-deps/action.yml | |
| - .github/actions/setup-conan/action.yml | |
| - ".github/scripts/strategy-matrix/**" | |
| - conanfile.py | |
| - conan.lock | |
| env: | |
| CONAN_REMOTE_NAME: xrplf | |
| CONAN_REMOTE_URL: https://conan.ripplex.io | |
| NPROC_SUBTRACT: 2 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| # Generate the strategy matrix to be used by the following job. | |
| generate-matrix: | |
| uses: ./.github/workflows/reusable-strategy-matrix.yml | |
| with: | |
| strategy_matrix: ${{ github.event_name == 'pull_request' && 'minimal' || 'all' }} | |
| # Build and upload the dependencies for each configuration. | |
| run-upload-conan-deps: | |
| needs: | |
| - generate-matrix | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
| max-parallel: 10 | |
| runs-on: ${{ matrix.architecture.runner }} | |
| container: ${{ contains(matrix.architecture.platform, 'linux') && format('ghcr.io/xrplf/ci/{0}-{1}:{2}-{3}-sha-{4}', matrix.os.distro_name, matrix.os.distro_version, matrix.os.compiler_name, matrix.os.compiler_version, matrix.os.image_sha) || null }} | |
| steps: | |
| - name: Cleanup workspace (macOS and Windows) | |
| if: ${{ runner.os == 'macOS' || runner.os == 'Windows' }} | |
| uses: XRPLF/actions/.github/actions/cleanup-workspace@01b244d2718865d427b499822fbd3f15e7197fcc | |
| - name: Checkout repository | |
| uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 | |
| - name: Prepare runner | |
| uses: XRPLF/actions/.github/actions/prepare-runner@99685816bb60a95a66852f212f382580e180df3a | |
| with: | |
| disable_ccache: false | |
| - name: Print build environment | |
| uses: ./.github/actions/print-env | |
| - name: Get number of processors | |
| uses: XRPLF/actions/.github/actions/get-nproc@046b1620f6bfd6cd0985dc82c3df02786801fe0a | |
| id: nproc | |
| with: | |
| subtract: ${{ env.NPROC_SUBTRACT }} | |
| - name: Setup Conan | |
| uses: ./.github/actions/setup-conan | |
| with: | |
| conan_remote_name: ${{ env.CONAN_REMOTE_NAME }} | |
| conan_remote_url: ${{ env.CONAN_REMOTE_URL }} | |
| - name: Build dependencies | |
| uses: ./.github/actions/build-deps | |
| with: | |
| build_dir: .build | |
| build_nproc: ${{ steps.nproc.outputs.nproc }} | |
| build_type: ${{ matrix.build_type }} | |
| force_build: ${{ github.event_name == 'schedule' || github.event.inputs.force_source_build == 'true' }} | |
| # Set the verbosity to "quiet" for Windows to avoid an excessive | |
| # amount of logs. For other OSes, the "verbose" logs are more useful. | |
| log_verbosity: ${{ runner.os == 'Windows' && 'quiet' || 'verbose' }} | |
| - name: Log into Conan remote | |
| if: ${{ github.repository_owner == 'XRPLF' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }} | |
| run: conan remote login "${CONAN_REMOTE_NAME}" "${{ secrets.CONAN_REMOTE_USERNAME }}" --password "${{ secrets.CONAN_REMOTE_PASSWORD }}" | |
| - name: Upload Conan packages | |
| if: ${{ github.repository_owner == 'XRPLF' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }} | |
| env: | |
| FORCE_OPTION: ${{ github.event.inputs.force_upload == 'true' && '--force' || '' }} | |
| run: conan upload "*" --remote="${CONAN_REMOTE_NAME}" --confirm ${FORCE_OPTION} |