diff --git a/.github/actions/build-test-nix/action.yml b/.github/actions/build-test-nix/action.yml index b841a862d1..5c07da9c76 100644 --- a/.github/actions/build-test-nix/action.yml +++ b/.github/actions/build-test-nix/action.yml @@ -2,7 +2,7 @@ name: Build and Test (Linux and MacOS) inputs: build_dir: - description: 'The directory where the build will take place.' + description: 'The directory where to build.' required: true type: string build_type: @@ -22,25 +22,7 @@ inputs: required: false type: string default: 'all' - conan_global_conf: - description: 'The contents of the global Conan configuration.' - required: true - type: string - conan_remote_name: - description: 'The name of the Conan remote to use.' - required: true - type: string - conan_remote_url: - description: 'The URL of the Conan remote to use.' - required: true - type: string - conan_remote_username: - description: 'The username for logging into the Conan remote.' - required: true - conan_remote_password: - description: 'The password for logging into the Conan remote.' - required: true - linking: + link_check: description: 'A boolean representing whether to check how the binary is linked.' required: true type: boolean @@ -51,30 +33,6 @@ inputs: runs: using: composite steps: - - name: Check configuration - shell: bash - run: | - echo "Checking path" - echo ${PATH} | tr ':' '\n' - - echo "Checking environment variables." - env | sort - - name: Check versions - shell: bash - run: | - echo "Checking CMake version." - cmake --version - - echo "Checking compiler version." - ${CC} --version - - name: Configure Conan - uses: ./.github/actions/configure-conan - with: - conan_global_conf: ${{ inputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ inputs.conan_remote_username }} - conan_remote_password: ${{ inputs.conan_remote_password }} - name: Configure CMake shell: bash working-directory: ${{ inputs.build_dir }} @@ -96,7 +54,7 @@ runs: --parallel $(nproc) \ --target ${{ inputs.cmake_target }} - name: Check linking - if: inputs.linking + if: inputs.link_check shell: bash working-directory: ${{ inputs.build_dir }} run: | diff --git a/.github/actions/configure-conan/action.yml b/.github/actions/configure-conan/action.yml index c98f1b9f6a..c1b2b1d2b6 100644 --- a/.github/actions/configure-conan/action.yml +++ b/.github/actions/configure-conan/action.yml @@ -28,11 +28,6 @@ inputs: runs: using: composite steps: - - name: Check versions - shell: bash - run: | - echo "Checking Conan version." - conan --version - name: Install Conan profile shell: bash run: | diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index f4c206bb5f..59175a0890 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -2,31 +2,17 @@ name: Install-dependencies inputs: build_dir: - description: 'The directory where the build will take place.' + description: 'The directory where to build.' required: true type: string build_type: description: 'The build type to use.' required: true type: string - conan_global_conf: - description: 'The contents of the global Conan configuration.' - required: true - type: string conan_remote_name: description: 'The name of the Conan remote to use.' required: true type: string - conan_remote_url: - description: 'The URL of the Conan remote to use.' - required: true - type: string - conan_remote_username: - description: 'The username for logging into the Conan remote.' - required: true - conan_remote_password: - description: 'The password for logging into the Conan remote.' - required: true # Install the Conan profiles and log into the specified remote. We first remove # the remote if it already exists, which can occur on self-hosted runners where @@ -34,30 +20,6 @@ inputs: runs: using: composite steps: - - name: Check configuration - shell: bash - run: | - echo "Checking path" - echo ${PATH} | tr ':' '\n' - - echo "Checking environment variables." - env | sort - - name: Check versions - shell: bash - run: | - echo "Checking CMake version." - cmake --version - - echo "Checking compiler version." - ${CC} --version - - name: Configure Conan - uses: ./.github/actions/configure-conan - with: - conan_global_conf: ${{ inputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ inputs.conan_remote_username }} - conan_remote_password: ${{ inputs.conan_remote_password }} - name: Install Conan dependencies shell: bash run: | diff --git a/.github/workflows/build-debian.yml b/.github/workflows/build-debian.yml index 19c6fe9ee6..6d869c5777 100644 --- a/.github/workflows/build-debian.yml +++ b/.github/workflows/build-debian.yml @@ -5,7 +5,7 @@ on: workflow_call: inputs: build_dir: - description: 'The directory where the build will take place.' + description: 'The directory where to build.' required: false type: string default: '.build' @@ -160,41 +160,16 @@ jobs: strategy_matrix_build_type: ${{ steps.generate.outputs.strategy_matrix_build_type }} strategy_matrix_cmake_args: ${{ steps.generate.outputs.strategy_matrix_cmake_args }} - # Install and cache the dependencies using various configurations. - install-dependencies: - needs: - - generate-outputs - runs-on: ${{ matrix.architecture.runner }} - container: ghcr.io/xrplf/ci/${{ matrix.os.distro }}-${{ matrix.os.release }}:${{ matrix.os.compiler_name }}-${{ matrix.os.compiler_version }} - strategy: - fail-fast: false - matrix: - architecture: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_architecture) }} - os: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_os) }} - build_type: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_build_type) }} - steps: - - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - name: Install dependencies - uses: ./.github/actions/install-dependencies - with: - build_dir: ${{ inputs.build_dir }} - build_type: ${{ matrix.build_type }} - conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ secrets.conan_remote_username }} - conan_remote_password: ${{ secrets.conan_remote_password }} - - # Build and test the binary using various configurations. + # Install and cache the dependencies, and then build and test the binary using + # various configurations. build-and-test: needs: - generate-outputs - - install-dependencies runs-on: ${{ matrix.architecture.runner }} container: ghcr.io/xrplf/ci/${{ matrix.os.distro }}-${{ matrix.os.release }}:${{ matrix.os.compiler_name }}-${{ matrix.os.compiler_version }} strategy: fail-fast: false + max-parallel: 4 matrix: architecture: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_architecture) }} os: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_os) }} @@ -203,16 +178,44 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - name: Check configuration + shell: bash + run: | + echo "Checking path" + echo ${PATH} | tr ':' '\n' + + echo "Checking environment variables." + env | sort + - name: Check versions + shell: bash + run: | + echo "Checking CMake version." + cmake --version + + echo "Checking compiler version." + ${CC} --version + + echo "Checking Conan version." + conan --version + - name: Configure Conan + uses: ./.github/actions/configure-conan + with: + conan_global_conf: ${{ inputs.conan_global_conf }} + conan_remote_name: ${{ inputs.conan_remote_name }} + conan_remote_url: ${{ inputs.conan_remote_url }} + conan_remote_username: ${{ secrets.conan_remote_username }} + conan_remote_password: ${{ secrets.conan_remote_password }} + - name: Install dependencies + uses: ./.github/actions/install-dependencies + with: + build_dir: ${{ inputs.build_dir }} + build_type: ${{ matrix.build_type }} + conan_remote_name: ${{ inputs.conan_remote_name }} - name: Build and test the binary uses: ./.github/actions/build-test-nix with: build_dir: ${{ inputs.build_dir }} build_type: ${{ matrix.build_type }} cmake_args: ${{ matrix.cmake_args }} - cmake_generator: "Ninja" - conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ secrets.conan_remote_username }} - conan_remote_password: ${{ secrets.conan_remote_password }} - linking: true + cmake_generator: 'Ninja' + link_check: true diff --git a/.github/workflows/build-rhel.yml b/.github/workflows/build-rhel.yml index 32face9746..8237650a66 100644 --- a/.github/workflows/build-rhel.yml +++ b/.github/workflows/build-rhel.yml @@ -6,7 +6,7 @@ on: workflow_call: inputs: build_dir: - description: 'The directory where the build will take place.' + description: 'The directory where to build.' required: false type: string default: '.build' @@ -137,41 +137,16 @@ jobs: strategy_matrix_build_type: ${{ steps.generate.outputs.strategy_matrix_build_type }} strategy_matrix_cmake_args: ${{ steps.generate.outputs.strategy_matrix_cmake_args }} - # Install and cache the dependencies using various configurations. - install-dependencies: - needs: - - generate-outputs - runs-on: ${{ matrix.architecture.runner }} - container: ghcr.io/xrplf/ci/${{ matrix.os.distro }}-${{ matrix.os.release }}:${{ matrix.os.compiler_name }}-${{ matrix.os.compiler_version }} - strategy: - fail-fast: false - matrix: - architecture: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_architecture) }} - os: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_os) }} - build_type: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_build_type) }} - steps: - - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - name: Install dependencies - uses: ./.github/actions/install-dependencies - with: - build_dir: ${{ inputs.build_dir }} - build_type: ${{ matrix.build_type }} - conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ secrets.conan_remote_username }} - conan_remote_password: ${{ secrets.conan_remote_password }} - - # Build and test the binary using various configurations. + # Install and cache the dependencies, and then build and test the binary using + # various configurations. build-and-test: needs: - generate-outputs - - install-dependencies runs-on: ${{ matrix.architecture.runner }} container: ghcr.io/xrplf/ci/${{ matrix.os.distro }}-${{ matrix.os.release }}:${{ matrix.os.compiler_name }}-${{ matrix.os.compiler_version }} strategy: fail-fast: false + max-parallel: 4 matrix: architecture: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_architecture) }} os: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_os) }} @@ -180,16 +155,44 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - name: Check configuration + shell: bash + run: | + echo "Checking path" + echo ${PATH} | tr ':' '\n' + + echo "Checking environment variables." + env | sort + - name: Check versions + shell: bash + run: | + echo "Checking CMake version." + cmake --version + + echo "Checking compiler version." + ${CC} --version + + echo "Checking Conan version." + conan --version + - name: Configure Conan + uses: ./.github/actions/configure-conan + with: + conan_global_conf: ${{ inputs.conan_global_conf }} + conan_remote_name: ${{ inputs.conan_remote_name }} + conan_remote_url: ${{ inputs.conan_remote_url }} + conan_remote_username: ${{ secrets.conan_remote_username }} + conan_remote_password: ${{ secrets.conan_remote_password }} + - name: Install dependencies + uses: ./.github/actions/install-dependencies + with: + build_dir: ${{ inputs.build_dir }} + build_type: ${{ matrix.build_type }} + conan_remote_name: ${{ inputs.conan_remote_name }} - name: Build and test the binary uses: ./.github/actions/build-test-nix with: build_dir: ${{ inputs.build_dir }} build_type: ${{ matrix.build_type }} cmake_args: ${{ matrix.cmake_args }} - cmake_generator: "Ninja" - conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} - conan_remote_name: ${{ inputs.conan_remote_name }} - conan_remote_url: ${{ inputs.conan_remote_url }} - conan_remote_username: ${{ secrets.conan_remote_username }} - conan_remote_password: ${{ secrets.conan_remote_password }} - linking: true + cmake_generator: 'Ninja' + link_check: true