diff --git a/.github/workflows/actions/linux/build/action.yml b/.github/workflows/actions/linux/build/action.yml new file mode 100644 index 0000000000..7c9cc8e035 --- /dev/null +++ b/.github/workflows/actions/linux/build/action.yml @@ -0,0 +1,75 @@ +# *************************************************************************** +# * Copyright (c) 2023 0penBrain * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +name: build +description: "Linux: build application" + +inputs: + builddir: + description: "Directory where build will happen" + required: true + logFile: + description: "Path for log file" + required: true + errorFile: + description: "Path to error file" + required: true + reportFile: + description: "Path for report file" + required: true + extraParameters: + description: "Extra parameters to CMake build" + required: false + +runs: + using: "composite" + steps: + - name: Build + id: build + shell: bash + run: | + cmake --build ${{ inputs.builddir }} -j$(nproc) ${{ inputs.extraParameters }} > ${{ inputs.logFile }} 2> ${{ inputs.errorFile }} + - name: Write report + shell: bash + if: always() + run: | + if [ ${{ steps.build.outcome }} == 'success' ] + then + echo "
:heavy_check_mark: CMake build succeeded" >> ${{ inputs.reportFile }} + else + echo "
:fire: CMake build failed" >> ${{ inputs.reportFile }} + fi + echo "" >> ${{ inputs.reportFile }} + echo "Build Error Log (stderr output):" >> ${{ inputs.reportFile }} + echo '```' >> ${{ inputs.reportFile }} + cat ${{ inputs.errorFile }} >> ${{ inputs.reportFile }} + echo '```' >> ${{ inputs.reportFile }} + echo "Build Log (stdout output trimmed to the last 100 Lines):" >> ${{ inputs.reportFile }} + echo '```' >> ${{ inputs.reportFile }} + tail -n 50 ${{ inputs.logFile }} >> ${{ inputs.reportFile }} + echo '```' >> ${{ inputs.reportFile }} + echo "
">> ${{ inputs.reportFile }} + echo "" >> ${{ inputs.reportFile }} + # Print the Log to the console + cat ${{ inputs.errorFile }} + echo "::group::Build Log" + cat ${{ inputs.logFile }} + echo "::endgroup::" diff --git a/.github/workflows/sub_buildUbuntu2004.yml b/.github/workflows/sub_buildUbuntu2004.yml index ce274c47a0..58e5ad3ac6 100644 --- a/.github/workflows/sub_buildUbuntu2004.yml +++ b/.github/workflows/sub_buildUbuntu2004.yml @@ -173,35 +173,12 @@ jobs: errorFile: ${{ env.logdir }}CmakeErrors.log reportFile: ${{env.reportdir}}${{ env.reportfilename }} - name: CMake Build - run: | - set +e - cmake --build ${{ env.builddir}} -j$(nproc) > ${{ env.logdir }}Build.log 2> ${{ env.logdir }}BuildErrors.log - exitCode=$? - # Write the build report - if [ $exitCode -eq 0 ] - then - echo "
:heavy_check_mark: CMake build succeeded" >> ${{env.reportdir}}${{ env.reportfilename }} - else - echo "
:fire: CMake build failed" >> ${{env.reportdir}}${{ env.reportfilename }} - fi - echo "" >> ${{env.reportdir}}${{ env.reportfilename }} - echo "Build Error Log (stderr output):" >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - cat ${{ env.logdir }}BuildErrors.log >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - echo "Build Log (stdout output trimmed to the last 100 Lines):" >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - tail -n 50 ${{ env.logdir }}Build.log >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - echo "
">> ${{env.reportdir}}${{ env.reportfilename }} - echo "" >> ${{env.reportdir}}${{ env.reportfilename }} - # Print the Log to the console - cat ${{ env.logdir }}BuildErrors.log - echo "::group::Build Log" - cat ${{ env.logdir }}Build.log - echo "::endgroup::" - # Exit the step with the exit code of the build - exit $exitCode + uses: ./.github/workflows/actions/linux/build + with: + builddir: ${{ env.builddir }} + logFile: ${{ env.logdir }}Build.log + errorFile: ${{ env.logdir }}BuildErrors.log + reportFile: ${{env.reportdir}}${{ env.reportfilename }} - name: Print ccache statistics after Build run: | ccache -s diff --git a/.github/workflows/sub_buildUbuntu2204.yml b/.github/workflows/sub_buildUbuntu2204.yml index 6a1917af3e..6655f63e64 100644 --- a/.github/workflows/sub_buildUbuntu2204.yml +++ b/.github/workflows/sub_buildUbuntu2204.yml @@ -182,35 +182,12 @@ jobs: errorFile: ${{ env.logdir }}CmakeErrors.log reportFile: ${{env.reportdir}}${{ env.reportfilename }} - name: CMake Build - run: | - set +e - cmake --build ${{ env.builddir}} -j$(nproc) > ${{ env.logdir }}Build.log 2> ${{ env.logdir }}BuildErrors.log - exitCode=$? - # Write the build report - if [ $exitCode -eq 0 ] - then - echo "
:heavy_check_mark: CMake build succeeded" >> ${{env.reportdir}}${{ env.reportfilename }} - else - echo "
:fire: CMake build failed" >> ${{env.reportdir}}${{ env.reportfilename }} - fi - echo "" >> ${{env.reportdir}}${{ env.reportfilename }} - echo "Build Error Log (stderr output):" >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - cat ${{ env.logdir }}BuildErrors.log >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - echo "Build Log (stdout output trimmed to the last 100 Lines):" >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - tail -n 50 ${{ env.logdir }}Build.log >> ${{env.reportdir}}${{ env.reportfilename }} - echo '```' >> ${{env.reportdir}}${{ env.reportfilename }} - echo "
">> ${{env.reportdir}}${{ env.reportfilename }} - echo "" >> ${{env.reportdir}}${{ env.reportfilename }} - # Print the Log to the console - cat ${{ env.logdir }}BuildErrors.log - echo "::group::Build Log" - cat ${{ env.logdir }}Build.log - echo "::endgroup::" - # Exit the step with the exit code of the build - exit $exitCode + uses: ./.github/workflows/actions/linux/build + with: + builddir: ${{ env.builddir }} + logFile: ${{ env.logdir }}Build.log + errorFile: ${{ env.logdir }}BuildErrors.log + reportFile: ${{env.reportdir}}${{ env.reportfilename }} - name: Print ccache statistics after Build run: | ccache -s