name: Upload Conan Dependencies on: schedule: - cron: "0 9 * * 1-5" 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: - .github/workflows/upload-conan-deps.yml - .github/actions/conan/action.yml - ".github/scripts/conan/**" - conanfile.py - conan.lock - conan/profiles/** push: branches: [develop] paths: - .github/workflows/upload-conan-deps.yml - .github/actions/conan/action.yml - ".github/scripts/conan/**" - conanfile.py - conan.lock - conan/profiles/** concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash jobs: generate-matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Calculate conan matrix id: set-matrix run: .github/scripts/conan/generate_matrix.py >>"${GITHUB_OUTPUT}" upload-conan-deps: name: Build ${{ matrix.compiler }} ${{ matrix.sanitizers }} ${{ matrix.build_type }} needs: generate-matrix strategy: fail-fast: false matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} max-parallel: 10 runs-on: ${{ matrix.os }} container: ${{ matrix.container != '' && fromJson(matrix.container) || null }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Prepare runner uses: XRPLF/actions/prepare-runner@7bf7ceca5932114abdd0d43493c3c30c5a654e13 with: enable_ccache: false - name: Print build environment uses: XRPLF/actions/print-build-env@59dec886e4afb05a1724443af08baccbc045b574 - name: Set compiler environment if: ${{ runner.os == 'Linux' }} uses: ./.github/actions/set-compiler-env with: compiler: ${{ matrix.compiler }} - name: Setup conan run: conan/init.sh - name: Show conan profile env: SANITIZERS: ${{ matrix.sanitizers }} run: conan profile show --profile:all ci - name: Run conan uses: ./.github/actions/conan with: sanitizers: ${{ matrix.sanitizers }} # We check that everything builds fine from source on scheduled runs # But we do build and upload packages with build=missing by default force_conan_source_build: ${{ github.event_name == 'schedule' || github.event.inputs.force_source_build == 'true' }} build_type: ${{ matrix.build_type }} - name: Log into Conan remote if: ${{ github.repository == 'XRPLF/clio' && github.event_name != 'pull_request' }} run: conan remote login -p ${{ secrets.NEXUS_REMOTE_PASSWORD }} xrplf ${{ secrets.NEXUS_REMOTE_USERNAME }} - name: Upload Conan packages if: ${{ github.repository == 'XRPLF/clio' && github.event_name != 'pull_request' && github.event_name != 'schedule' }} env: FORCE_OPTION: ${{ github.event.inputs.force_upload == 'true' && '--force' || '' }} CONAN_LOGIN_USERNAME_XRPLF: ${{ secrets.NEXUS_REMOTE_USERNAME }} CONAN_PASSWORD_XRPLF: ${{ secrets.NEXUS_REMOTE_PASSWORD }} run: conan upload "*" -r=xrplf --confirm ${FORCE_OPTION}