diff --git a/.github/workflows/build-debian.yml b/.github/workflows/build-debian.yml index 2bebcff33e..c1ff8566d0 100644 --- a/.github/workflows/build-debian.yml +++ b/.github/workflows/build-debian.yml @@ -127,54 +127,59 @@ jobs: # Expose environment variables used by other jobs. This is a workaround, as # environment variables cannot be passed as inputs to reusable workflows. They # can, however, be passed as inputs to actions. - expose-env: + generate-outputs: runs-on: ubuntu-latest steps: - - name: Expose environment variables - run: echo "" + - name: Generate outputs + id: generate + run: | + echo "strategy_matrix_architecture=$(jq -c <<< '${{ env.STRATEGY_MATRIX_ARCHITECTURE }}')" >> "$GITHUB_OUTPUT" + echo "strategy_matrix_os=$(jq -c <<< '${{ env.STRATEGY_MATRIX_OS }}')" >> "$GITHUB_OUTPUT" + echo "strategy_matrix_build_type=$(jq -c <<< '${{ env.STRATEGY_MATRIX_BUILD_TYPE }}')" >> "$GITHUB_OUTPUT" + echo "strategy_matrix_cmake_args=$(jq -c <<< '${{ env.STRATEGY_MATRIX_CMAKE_ARGS }}')" >> "$GITHUB_OUTPUT" outputs: conan_global_conf: ${{ env.CONAN_GLOBAL_CONF }} - strategy_matrix_architecture: ${{ env.STRATEGY_MATRIX_ARCHITECTURE }} - strategy_matrix_os: ${{ env.STRATEGY_MATRIX_OS }} - strategy_matrix_build_type: ${{ env.STRATEGY_MATRIX_BUILD_TYPE }} - strategy_matrix_cmake_args: ${{ env.STRATEGY_MATRIX_CMAKE_ARGS }} + strategy_matrix_architecture: ${{ steps.generate.outputs.strategy_matrix_architecture }} + strategy_matrix_os: ${{ steps.generate.outputs.strategy_matrix_os }} + 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: - - expose-env + - generate-outputs uses: ./.github/workflows/install-dependencies.yml strategy: fail-fast: false matrix: - architecture: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_architecture) }} - os: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_os) }} - build_type: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_build_type) }} + 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) }} with: build_dir: ${{ inputs.build_dir }} build_type: ${{ strategy.matrix.build_type }} - conan_global_conf: ${{ needs.expose-env.outputs.conan_global_conf }} + conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} container: ghcr.io/xrplf/ci/${{ strategy.matrix.os.distro }}-${{ strategy.matrix.os.release }}:${{ strategy.matrix.os.compiler_name }}-${{ strategy.matrix.os.compiler_version }} runner: ${{ strategy.matrix.architecture.runner }} # Build and test the binary using various configurations. build-and-test: needs: - - expose-env + - generate-outputs - install-dependencies uses: ./.github/workflows/build-nix.yml strategy: fail-fast: false matrix: - architecture: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_architecture) }} - os: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_os) }} - build_type: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_build_type) }} - cmake_args: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_cmake_args) }} + 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) }} + cmake_args: ${{ fromJson(needs.generate-outputs.outputs.strategy_matrix_cmake_args) }} with: build_dir: ${{ inputs.build_dir }} build_type: ${{ strategy.matrix.build_type }} cmake_args: ${{ strategy.matrix.cmake_args }} cmake_generator: "Ninja" - conan_global_conf: ${{ needs.expose-env.outputs.conan_global_conf }} + conan_global_conf: ${{ needs.generate-outputs.outputs.conan_global_conf }} container: ghcr.io/xrplf/ci/${{ strategy.matrix.os.distro }}-${{ strategy.matrix.os.release }}:${{ strategy.matrix.os.compiler_name }}-${{ strategy.matrix.os.compiler_version }} runner: ${{ strategy.matrix.architecture.runner }} diff --git a/.github/workflows/build-rhel.yml b/.github/workflows/build-rhel.yml index e40203dee1..92b285122e 100644 --- a/.github/workflows/build-rhel.yml +++ b/.github/workflows/build-rhel.yml @@ -107,29 +107,17 @@ jobs: strategy_matrix_build_type: ${{ env.STRATEGY_MATRIX_BUILD_TYPE }} strategy_matrix_cmake_args: ${{ env.STRATEGY_MATRIX_CMAKE_ARGS }} - # Generate the strategy matrix. - generate-matrix: - needs: - - expose-env - uses: ./.github/workflows/generate-matrix.yml - with: - architecture: ${{ needs.expose-env.outputs.strategy_matrix_architecture }} - os: ${{ needs.expose-env.outputs.strategy_matrix_os }} - build_type: ${{ needs.expose-env.outputs.strategy_matrix_build_type }} - cmake_args: ${{ needs.expose-env.outputs.strategy_matrix_cmake_args }} - # Install and cache the dependencies using various configurations. install-dependencies: needs: - expose-env - - generate-matrix uses: ./.github/workflows/install-dependencies.yml strategy: fail-fast: false matrix: - architecture: ${{ fromJson(needs.generate-matrix.outputs.architecture) }} - os: ${{ fromJson(needs.generate-matrix.outputs.os) }} - build_type: ${{ fromJson(needs.generate-matrix.outputs.build_type) }} + architecture: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_architecture) }} + os: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_os) }} + build_type: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_build_type) }} with: build_dir: ${{ inputs.build_dir }} build_type: ${{ strategy.matrix.build_type }} @@ -141,16 +129,15 @@ jobs: build-and-test: needs: - expose-env - - generate-matrix - install-dependencies uses: ./.github/workflows/build-nix.yml strategy: fail-fast: false matrix: - architecture: ${{ fromJson(needs.generate-matrix.outputs.architecture) }} - os: ${{ fromJson(needs.generate-matrix.outputs.os) }} - build_type: ${{ fromJson(needs.generate-matrix.outputs.build_type) }} - cmake_args: ${{ fromJson(needs.generate-matrix.outputs.cmake_args) }} + architecture: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_architecture) }} + os: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_os) }} + build_type: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_build_type) }} + cmake_args: ${{ fromJson(needs.expose-env.outputs.strategy_matrix_cmake_args) }} with: build_dir: ${{ inputs.build_dir }} build_type: ${{ strategy.matrix.build_type }}