From eef8054383c94a58711c1040046c459306ae03f8 Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Sat, 21 Jan 2023 18:40:45 +0100 Subject: [PATCH] CI: remove current CI workflow --- .github/workflows/checks.yml | 1130 ---------------------------------- 1 file changed, 1130 deletions(-) delete mode 100644 .github/workflows/checks.yml diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index b97ec31491..0000000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,1130 +0,0 @@ -name: CI -on: - push: - branches: ['master', 'development/toponaming', 'releases/FreeCAD-0-20'] - pull_request: - workflow_dispatch: - -permissions: - pull-requests: write - contents: write - -env: - logdir: logs/ - fixesdir: fixes/ - - # Build and Test - buildFailSilent: false - test: true # run Unit tests - testFailSilent: false # don't fail CI if Unittests fail - - testInstall: true # run CMake install and Unit tests on install - installFailSilent: false # don't fail if CMake install fails - testInstallFailSilent: false # don't fail CI if Unittests fail - - # Linting - checkWhitespace: true - whitespaceFailSilent: true - - checkTabs: true - tabsFailSilent: true - - checkQtconnections: true - qtconnectionSyntaxFailSilent: true - - checkCpplint: true - # This option allows you to specify a comma-separated list of rule-filters to apply. For example, the rule names look like whitespace/indent. In that case, the category is whitespace. - # To turn off, specify - as prefix like -whitespace or -whitespace/indent. On the other hand, to turn on, specify + like +whitespace or +whitespace/indent. - # The recommended filters are taken from https://github.com/sider/runners/blob/HEAD/images/cpplint/sider_recommended_CPPLINT.cfg - cpplintFilters: -build/c++11,-build/header_guard,-build/include,-build/include_alpha,-build/include_order,-build/include_subdir,-build/include_what_you_use,-build/namespaces,-legal/copyright,-readability/braces,-readability-braces-around-statements,-readability/casting,-readability/namespace,-readability/todo,-runtime/indentation_namespace,-runtime/int,-runtime/references,-whitespace/blank_line,-whitespace/braces,-whitespace/comma,-whitespace/comments,-whitespace/end_of_line,-whitespace/indent,-whitespace/line_length,-whitespace/newline,-whitespace/operators,-whitespace/parens,-whitespace/semicolon,-whitespace/tab,-whitespace/todo - cpplintLineLength: 120 - cpplintFailSilent: true - - checkPylint: true - # additional disables to the .pylintrc file - # for the Message codes see: https://pylint.pycqa.org/en/latest/user_guide/messages/index.html - pylintDisable: disable=C0302 # too-many-lines - - checkBlack: true - blackFailSilent: true - - checkClangFormat: false - clangStyle: file #for .clang-format file - clangFormatFailSilent: true - - checkSpelling: true - listIgnoredMisspelling: .github/codespellignore - skip: ./.git,*.po,*_rc.py,*.ts,*.svg,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./build/,./tests/lib - codespellFailSilent: false - - # Static Analysis - checkClangTidy: true - # for the Message codes see: https://clang-tidy.llvm.org/checks/index.html - clangTidyChecks: # empty to use the .clang-tidy file - clangTidyFailSilent: true # if false, the CI will fail if clang-tidy finds errors. Warnings or notes will not fail the CI - - checkClazy: true - # for the Message codes see: https://invent.kde.org/sdk/clazy#list-of-checks - clazyChecks: level1 - clazyFailSilent: true # if false, the CI will fail if clazy finds errors. Warnings or notes will not fail the CI - - checkClazyQT6: true - clazyQT6Checks: qt6-deprecated-api-fixes,qt6-header-fixes,qt6-qhash-signature,qt6-fwd-fixes,missing-qobject-macro # for QT6 Porting https://invent.kde.org/sdk/clazy#list-of-checks - QT6Branch: master # branch to check for QT6 Porting - clazyQT6FailSilent: true # if false, the CI will fail if clazy finds errors. Warnings or notes will not fail the CI - - # Reporting - reportStepSummary: true - reportPRComment: false # disabled because of permission hell (and the comments are to big for Github) - reportPushComment: false # disabled because of permission hell (and the comments are to big for Github) - -jobs: - checks: - name: Checks - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Install FreeCAD dependencies - id: install-dependencies - run: | - sudo apt-get update -qq - - # apt-get install all the dependencies - # TODO: script to install all the dependencies (tools/build/ubuntu.sh) not working - # chmod +x tools/build/ubuntu.sh - # sudo ./tools/build/ubuntu.sh - - sudo apt-get install -y --no-install-recommends \ - python3-dev \ - python3-matplotlib \ - python3-pivy \ - python3-ply \ - python3-pyside2.qtcore \ - python3-pyside2.qtgui \ - python3-pyside2.qtsvg \ - python3-pyside2.qtwidgets \ - python3-pyside2.qtnetwork \ - python3-markdown \ - python3-git \ - libboost-date-time-dev \ - libboost-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-iostreams-dev \ - libboost-program-options-dev \ - libboost-python-dev \ - libboost-regex-dev \ - libboost-serialization-dev \ - libboost-thread-dev \ - libxerces-c-dev \ - libocct-data-exchange-dev \ - libocct-ocaf-dev \ - libocct-visualization-dev \ - occt-draw \ - libvtk7-dev \ - swig \ - libcoin-dev \ - libeigen3-dev \ - libgts-bin \ - libgts-dev \ - libkdtree++-dev \ - libmedc-dev \ - libopencv-dev \ - libproj-dev \ - libpyside2-dev \ - pyside2-tools \ - pyqt5-dev-tools \ - libqt5opengl5-dev \ - libqt5svg5-dev \ - qtwebengine5-dev \ - libqt5x11extras5-dev \ - libqt5xmlpatterns5-dev \ - qtbase5-dev \ - qttools5-dev \ - libx11-dev \ - libzipios++-dev \ - doxygen \ - graphviz \ - libnglib-dev \ - netgen \ - netgen-headers \ - libmetis-dev \ - libspnav-dev \ - libshiboken2-dev \ - shiboken2 \ - imagemagick - - - name: Get Date - if: always() - id: get-date - run: | - echo "::set-output name=date::$(/bin/date -u "+%Y%m%d%H%M")" - shell: bash - - - name: Install ccache - if: always() - run: | - sudo apt-get update -qq - sudo apt-get install -y --no-install-recommends ccache - - - name: make directories - if: always() - run: | - mkdir -p ${{ env.logdir }} - mkdir -p ${{ env.fixesdir }} - - mkdir -p ~/.ccache - - - name: Restore Compiler Cache - if: always() - uses: pat-s/always-upload-cache@v3 - with: - path: | - ~/.ccache - key: CI-cache-${{ steps.get-date.outputs.date }}-${{ github.run_number }} - restore-keys: | - CI-cache-${{ steps.get-date.outputs.date }}- - CI-cache- - - - name: Configure Cache - if: always() - run: | - ccache -z -M 1G - ccache --show-config - ccache -s - - - name: Job summary Header - if: always() - id: header - run: | - echo '# Check Results: :rocket:' >> ${{ env.logdir }}checkReport.md - - - name: Get changed files - if: always() - id: changed-files - uses: tj-actions/changed-files@v24 - - - name: Report all changed Files - id: list-changed-files - run: | - echo "
:clipboard: Changed Files:" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '``` shell' >> ${{ env.logdir }}checkReport.md - for file in ${{ steps.changed-files.outputs.all_changed_files }}; do - echo "$file" >> ${{ env.logdir }}checkReport.md - done - echo '```' >> ${{ env.logdir }}checkReport.md - echo '
' >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - - name: Harmonize Line endings - if: false #disabled because it causes failure when applied on .FCStd files - id: harmonize-line-endings - shell: bash - run: | - # harmonize line endings in all changed files (Windows -> Unix) - for file in ${{ steps.changed-files.outputs.all_changed_files }}; do - if [ -f "$file" ]; then - echo "Harmonizing line endings in $file" - sed -i 's/\r//g' $file - fi - done - - - name: filter files by extensions - if: always() - id: files-by-extensions - shell: bash - run: | - changed_files=$( echo ${{ steps.changed-files.outputs.all_changed_files }} ) - - py=$(grep -oE '\S+\.(py|py3)' <<< $changed_files | tr '\n' ' ') || true # grep returns non-zero exit code if no match is found - cpp=$(grep -oE '\S+\.(c|c\+\+|cc|cpp|cu|cuh|cxx|h|h\+\+|hh|hpp|hxx)' <<< $changed_files | tr '\n' ' ') || true - echo "::set-output name=python_files::$py" - echo "::set-output name=cpp_files::$cpp" - echo "Python Files: $py" - echo "C++ Files: $cpp" - - - name: CMake Configure - id: configure - if: always() - run: | - set +e - - cmake \ - -D CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE \ - -B build/ > ${{ env.logdir }}Cmake.log 2> ${{ env.logdir }}CmakeErrors.log - - exitCode=$? - - # Build Header in Report - echo '### Build:' >> ${{ env.logdir }}checkReport.md - - # Write the configure report - if [ $exitCode -eq 0 ] ; then - echo "
:heavy_check_mark: CMake configure succeeded" >> ${{ env.logdir }}checkReport.md - else - echo "
:fire: CMake configure failed" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - echo "Configure Error Log (stderr output):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}CmakeErrors.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "Configure Log (stdout output):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - tail -n 60 ${{ env.logdir }}Cmake.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - cat ${{ env.logdir }}CmakeErrors.log - echo "::group::Configure Log" - cat ${{ env.logdir }}Cmake.log - echo "::endgroup::" - - exit $exitCode - - - name: Print ccache statistics before Build - if: always() - run: ccache -s - - - name: CMake Build - id: build - if: always() - run: | - set +e - - cmake --build build/ -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.logdir }}checkReport.md - else - echo "
:fire: CMake build failed" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - echo "Build Error Log (stderr output):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}BuildErrors.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "Build Log (stdout output trimmed to the last 100 Lines):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - tail -n 50 ${{ env.logdir }}Build.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # 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 - if [ ${{ env.buildFailSilent }} != true ]; then - exit $exitCode - else - echo "Build exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: Print ccache statistics after Build - if: always() - run: ccache -s - - - name: FreeCAD UnitTests - id: test - if: env.test == 'true' && always() - run: | - set +e - - build/bin/FreeCADCmd -t 0 &> ${{ env.logdir }}Test.log - - exitCode=$? - - # Trim the Log file - # remove "(xx %)" - sed -E '/\t+\([[:digit:]]{1,3} %\)\t/d' ${{ env.logdir }}Test.log > ${{ env.logdir }}TestTrimmed.log - - # Write the test report - if [ $exitCode -eq 0 ] ; then - echo "
:heavy_check_mark: Unittests succeeded" >> ${{ env.logdir }}checkReport.md - else - echo "
:fire: CMake test failed" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - tail -n 100 ${{ env.logdir }}TestTrimmed.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Print the Log to the console - cat ${{ env.logdir }}Test.log - - # Exit the step with the exit code of the UnitTests - if [ ${{ env.testFailSilent }} != true ]; then - exit $exitCode - else - echo "Test exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: CMake Install - id: install - if: env.testInstall == 'true' && always() - run: | - set +e - - # Run the CMake Configure step again to update the install path - cmake \ - -D CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE \ - -D CMAKE_INSTALL_PREFIX='/usr/lib/freecad' \ - -D CMAKE_INSTALL_BINDIR='/usr/lib/freecad/bin' \ - -D CMAKE_INSTALL_LIBDIR='/usr/lib/freecad/lib' \ - -D CMAKE_INSTALL_DATADIR='/usr/share/freecad' \ - -D CMAKE_INSTALL_DATAROOTDIR='/usr/share' \ - -D CMAKE_INSTALL_DOCDIR='/usr/share/doc/freecad' \ - -B build/ >> ${{ env.logdir }}Install.log 2>> ${{ env.logdir }}InstallErrors.log - - # Build again to copy the files to the install path - cmake --build build/ >> ${{ env.logdir }}Install.log 2>> ${{ env.logdir }}InstallErrors.log - - # Run CMake Install - sudo cmake --install build/ >> ${{ env.logdir }}Install.log 2>> ${{ env.logdir }}InstallErrors.log - - exitCode=$? - - # links for bin - FILES=/usr/lib/freecad/bin/* - for f in $FILES - do - sudo ln -vs /usr/lib/freecad/bin/$(basename $f) /usr/bin/$(basename $f) - done - - # Write the install report - if [ $exitCode -eq 0 ] ; then - echo "
:heavy_check_mark: CMake install succeeded" >> ${{ env.logdir }}checkReport.md - else - echo "
:fire: CMake install failed" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - echo "Install Error Log (stderr output):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}InstallErrors.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "Install Error Log (stdout output trimmed to the last 100 Lines):" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - tail -n 100 ${{ env.logdir }}Install.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Print the Log to the console - cat ${{ env.logdir }}InstallErrors.log - echo "::group::Install Log" - cat ${{ env.logdir }}Install.log - echo "::endgroup::" - - # Exit the step with the exit code of the Install - if [ ${{ env.cmakeInstallFailSilent }} != true ]; then - exit $exitCode - else - echo "CMake install exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: FreeCAD UnitTests on Install - id: testInstall - if: env.testInstall == 'true' && always() - run: | - set +e - - LD_LIBRARY_PATH=/usr/lib/freecad/lib FreeCADCmd -t 0 &> ${{ env.logdir }}TestInstall.log - - exitCode=$? - - # Trim the Log file - # remove "(xx %)" - sed -E '/\t+\([[:digit:]]{1,3} %\)\t/d' ${{ env.logdir }}TestInstall.log > ${{ env.logdir }}TestInstallTrimmed.log - - # Write the testInstall report - if [ $exitCode -eq 0 ] ; then - echo "
:heavy_check_mark: Unittests on install succeeded" >> ${{ env.logdir }}checkReport.md - else - echo "
:fire: CMake test on install failed" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - tail -n 100 ${{ env.logdir }}TestInstallTrimmed.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Print the Log to the console - cat ${{ env.logdir }}TestInstall.log - - # Exit the step with the exit code of the UnitTests - if [ ${{ env.testInstallFailSilent }} != true ]; then - exit $exitCode - else - echo "Test on install exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: Report Tests header - if: always() - id: tests-header - run: | - echo '### Tests:' >> ${{ env.logdir }}checkReport.md - - - name: Trailing whitespaces - shell: bash - if: env.checkWhitespace == 'true' && always() - run: | - whitespaceErrors="0" - exclude="*[.md]" - - for file in ${{ steps.changed-files.outputs.all_changed_files }}; do - # check for whitespaces - grep -rnIHE --exclude="$exclude" " $" $file | sed 's/$/<-- trailing whitespace/' >> ${{ env.logdir }}whitespace.log || true - done - - # Write the Log to the console with the Problem Matchers - if [ -f ${{ env.logdir }}whitespace.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json" - cat ${{ env.logdir }}whitespace.log - echo "::remove-matcher owner=grepMatcher-warning::" - - whitespaceErrors=$(wc -l < ${{ env.logdir }}whitespace.log) - fi - - echo "Found $whitespaceErrors whitespace errors" - - echo "whitespaceErrors=$whitespaceErrors" >> $GITHUB_ENV - - # Write the report - if [ $whitespaceErrors -gt 0 ]; then - echo "
:information_source: Found $whitespaceErrors trailing whitespace" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}whitespace.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - else - echo ":heavy_check_mark: No trailing whitespace found " >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - - # Exit the step with the exit code - if [ $whitespaceErrors -gt 0 ] && [ ${{ env.whitespaceFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Tabs - shell: bash - if: env.checkTabs == 'true' && always() - run: | - tabErrors="0" - exclude="*[.md]" - - # check for tabs - for file in ${{ steps.changed-files.outputs.all_changed_files }}; do - grep -rnIHE --exclude="$exclude" $'\t' $file | sed 's/$/ <-- contains tab/' >> ${{ env.logdir }}tab.log || true - done - - # Write the Log to the console with the Problem Matchers - if [ -f ${{ env.logdir }}tab.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json" - cat ${{ env.logdir }}tab.log - echo "::remove-matcher owner=grepMatcher-warning::" - - tabErrors=$(wc -l < ${{ env.logdir }}tab.log) - fi - - echo "Found $tabErrors tab errors" - - echo "tabErrors=$tabErrors" >> $GITHUB_ENV - - # Write the report - if [ $tabErrors -gt 0 ]; then - echo "
:information_source: Found $tabErrors tabs, better to use spaces" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}tab.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - else - echo ":heavy_check_mark: No tabs found" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - - # Exit the step with the exit code - if [ $tabErrors -gt 0 ] && [ ${{ env.tabsFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: QT - old string-based connections (https://wiki.qt.io/New_Signal_Slot_Syntax) - shell: bash - if: env.checkQtconnections == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && always() - run: | - qtconnectionSyntax="0" - exclude="*[.md,.log,.ts,.git]" - - # check all files for QT string-based connections - for file in ${{ steps.changed-files.outputs.all_changed_files }}; do - grep -rnIHE --exclude="$exclude" $' SIGNAL| SLOT' $file | sed 's,$, <--Consider using Functor-Based Connections,' >> ${{ env.logdir }}stringSyntax.log || true - done - - # Parse the log file - if [ -f ${{ env.logdir }}stringSyntax.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json" - cat ${{ env.logdir }}stringSyntax.log - echo "::remove-matcher owner=grepMatcher-warning::" - - qtconnectionSyntax=$(wc -l < ${{ env.logdir }}stringSyntax.log) - fi - - # Pass Variables to GitHub Env - echo "qtconnectionSyntax=$qtconnectionSyntax" >> $GITHUB_ENV - - echo "Found $qtconnectionSyntax QT string-based connections" - - # Step-Report - if [ $qtconnectionSyntax -gt 0 ]; then - echo "
:information_source: Found $qtconnectionSyntax QT string-based connections :arrow_right: consider using QT functor-Based Connections" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - # documentation link - echo "For more information see: https://wiki.qt.io/New_Signal_Slot_Syntax or https://github.com/FreeCAD/FreeCAD/issues/6166" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}stringSyntax.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - else - echo ":heavy_check_mark: No string-based connections found " >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - - # Exit the step with the exit code - if [ $qtconnectionSyntax -gt 0 ] && [ ${{ env.qtconnectionSyntaxFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Cpplint - shell: bash - if: env.checkCpplint == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && always() - run: | - cpplintErrors="0" - - pip install cpplint - - # run cpplint - for file in ${{ steps.files-by-extensions.outputs.cpp_files }}; do - cpplint --filter=${{ env.cpplintFilters }} --linelength=${{ env.cpplintLineLength }} $file &>> ${{ env.logdir }}cpplint.log || true - done - - # if cpplint has run successfully parse the output - if [ -f ${{ env.logdir }}cpplint.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/cpplint.json" - cat ${{ env.logdir }}cpplint.log - echo "::remove-matcher owner=cpplint::" - - cpplintErrors=$(grep -rnIHE "\[[0-9]\]$" ${{ env.logdir }}cpplint.log | wc -l ) || true - fi - - # Pass Variables to GitHub Env - echo "cpplintErrors=$cpplintErrors" >> $GITHUB_ENV - - echo "Found $cpplintErrors cpplint errors" - - # Step-Report - if [ $cpplintErrors -gt 0 ]; then - echo "
:warning: CppLint found $cpplintErrors errors / warnings" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: No cpplint errors found " >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}cpplint.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Exit the step with the exit code - if [ $cpplintErrors -gt 0 ] && [ ${{ env.cpplintFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Pylint - shell: bash - if: env.checkPylint == 'true' && steps.files-by-extensions.outputs.python_files != '' && always() - run: | - set +e - - pylintErrors="0" - - pip install pylint - - pylintErrors="0" - pylintWarnings="0" - pylintRefactorings="0" - pylintConventions="0" - - # List enabled pylint checks - pylint --list-msgs-enabled > ${{ env.logdir }}pylint-enabled-checks.log - - # Run pylint on all python files - pylint --disable=${{ env.pylintDisable }} ${{ steps.files-by-extensions.outputs.python_files }} > ${{ env.logdir }}pylint.log - - exitCode=$? - - # if pylint has run successfully, then parse the output - if [ -f ${{ env.logdir }}pylint.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/pylintError.json" - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/pylintWarning.json" - cat ${{ env.logdir }}pylint.log - echo "::remove-matcher owner=pylint-error::" - echo "::remove-matcher owner=pylint-warning::" - - pylintErrors=$( grep -oP '(?<=error \|)\d+' ${{ env.logdir }}pylint.log) || true # grep returns 0 if no match is found - pylintWarnings=$( grep -oP '(?<=warning \|)\d+' ${{ env.logdir }}pylint.log) || true - pylintRefactorings=$( grep -oP '(?<=refactor \|)\d+' ${{ env.logdir }}pylint.log) || true - pylintConventions=$( grep -oP '(?<=convention \|)\d+' ${{ env.logdir }}pylint.log) || true - fi - - # Pass Variables to GitHub Env - echo "pylintErrors=$pylintErrors" >> $GITHUB_ENV - echo "pylintWarnings=$pylintWarnings" >> $GITHUB_ENV - echo "pylintRefactorings=$pylintRefactorings" >> $GITHUB_ENV - echo "pylintConventions=$pylintConventions" >> $GITHUB_ENV - - echo "Found $pylintErrors errors, $pylintWarnings warnings, $pylintRefactorings refactorings, $pylintConventions conventions" - - #Step-summary - if [ $pylintErrors -gt 0 ]; then - echo "
:fire: Pylint found :fire: $pylintErrors errors, :warning: $pylintWarnings warnings, :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions" >> ${{ env.logdir }}checkReport.md - elif [ $pylintWarnings -gt 0 ]; then - echo "
:warning: Pylint found :warning: $pylintWarnings warnings, :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions" >> ${{ env.logdir }}checkReport.md - elif [ $pylintRefactorings -gt 0 ]; then - echo "
:construction: Pylint found :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions" >> ${{ env.logdir }}checkReport.md - elif [ $pylintConventions -gt 0 ]; then - echo "
:pencil2: Pylint found :pencil2: $pylintConventions conventions" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: No pylint errors found " >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - # list enabled checks - echo "
:information_source: Enabled checks" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}pylint-enabled-checks.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}pylint.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Error the step if pylint has found errors - if [ $pylintErrors -gt 0 ] && [ ${{ env.pylintFailSilent }} != true ]; then - exit $exitCode - else - echo "Pylint exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: Black (Python) - shell: bash - if: env.checkBlack == 'true' && steps.files-by-extensions.outputs.python_files != '' && always() - run: | - set +e - - pip install black - - blackReformats="0" - blackFails="0" - - black --check ${{ steps.files-by-extensions.outputs.python_files }} &> ${{ env.logdir }}black.log - - exitCode=$? - - # if black has run successfully, then parse the output - if [ -f ${{ env.logdir }}black.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/blackWarning.json" - cat ${{ env.logdir }}black.log - echo "::remove-matcher owner=black-warning::" - - blackReformats=$( grep -oP '\d+(?= fil.+ would be reformatted)' ${{ env.logdir }}black.log) || true # grep returns 0 if no match is found - blackFails=$( grep -oP '\d+(?= fil.+ would fail to reformat)' ${{ env.logdir }}black.log) || true - fi - - # Pass Variables to GitHub Env - echo "blackReformats=$blackReformats" >> $GITHUB_ENV - echo "blackFails=$blackFails" >> $GITHUB_ENV - - echo "Found $blackReformats files would be reformatted and $blackFails files would fail to reformat" - - #Step-summary - if [ $blackReformats -gt 0 ] || [ $blackFails -gt 0 ] ; then - echo "
:pencil2: Black would reformat $blackReformats files" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Black would reformat no file" >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}black.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - if [ $exitCode -gt 0 ] && [ ${{ env.blackFailSilent }} != true ]; then - exit $exitCode - else - echo "Black exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: Clang-format - shell: bash - if: env.checkClangFormat == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && always() - run: | - clangFormatErrors="0" - - # run clang-format on all cpp files - clang-format --dry-run --ferror-limit=1 --verbose --style=${{ env.clangStyle }} ${{ steps.files-by-extensions.outputs.cpp_files }} &>> ${{ env.logdir }}clang-format.log || true - - # if cpplint has run successfully parse the output - if [ -f ${{ env.logdir }}clang-format.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json" - cat ${{ env.logdir }}clang-format.log - echo "::remove-matcher owner=clang::" - - clangFormatErrors=$(grep -rnIHE "\[-Wclang-format-violations]$" ${{ env.logdir }}clang-format.log | wc -l ) || true - fi - - # Pass Variables to GitHub Env - echo "clangFormatErrors=$clangFormatErrors" >> $GITHUB_ENV - - echo "Found $clangFormatErrors clang-format errors" - - # Report - - if [ $clangFormatErrors -gt 0 ]; then - echo "
:pencil2: Clang-format would reformat $clangFormatErrors files" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Clang-format would reformat no file " >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}clang-format.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - if [ $clangFormatErrors -gt 0 ] && [ ${{ env.clangFormatFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Codespell - shell: bash - if: env.checkSpelling == 'true' && always() - run: | - pip install codespell - - wget https://raw.githubusercontent.com/codespell-project/codespell/master/codespell_lib/data/dictionary.txt - #wget https://raw.githubusercontent.com/codespell-project/codespell/master/codespell_lib/data/dictionary_rare.txt - - #misspellings=$( codespell --quiet-level 3 --summary --count --ignore-words ${{ env.listIgnoredMisspelling }} --skip ${{ env.skip }} -D dictionary.txt -D dictionary_rare.txt ${{ steps.changed-files.outputs.all_changed_files }} 2>&1 > ${{ env.logdir }}codespell.log ) || true - misspellings=$( codespell --quiet-level 3 --summary --count --ignore-words ${{ env.listIgnoredMisspelling }} --skip ${{ env.skip }} -D dictionary.txt ${{ steps.changed-files.outputs.all_changed_files }} 2>&1 > ${{ env.logdir }}codespell.log ) || true - - # if codespell has run successfully, then parse the output - if [ -f ${{ env.logdir }}codespell.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/codespell.json" - cat ${{ env.logdir }}codespell.log - echo "::remove-matcher owner=codespell::" - fi - - # Pass Variables to GitHub Env - echo "CodespellMisspellings=$misspellings" >> $GITHUB_ENV - - echo "Found $misspellings misspellings" - - #Step-summary - if [ $misspellings -gt 0 ]; then - echo "
:pencil2: Codespell found $misspellings misspellings" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Codespell found no misspellings" >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - # documentation link - echo "To ignore false positives, append the word to the [.github/codespellignore](https://github.com/FreeCAD/FreeCAD/blob/c38e88c61b8926f725215da88940025c94be1daa/.github/codespellignore) file (lowercase)" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}codespell.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Error the step if pylint has found errors - if [ $misspellings -gt 0 ] && [ ${{ env.codespellFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Clang-tidy - shell: bash - if: env.checkClangTidy == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && always() - run: | - set +e - - clangTidyErrors="0" - clangTidyWarnings="0" - clangTidyNotes="0" - - sudo apt-get install -y --no-install-recommends clang-tidy - - clang-tidy --quiet --format-style=${{ env.clangStyle }} --export-fixes=${{ env.fixesdir }}clang-tidy.yaml -checks=${{ env.clangTidyChecks }} -p build/ --explain-config &>> ${{ env.logdir }}clang-tidy-enabled-checks.log - - clang-tidy --quiet --format-style=${{ env.clangStyle }} --export-fixes=${{ env.fixesdir }}clang-tidy.yaml -checks=${{ env.clangTidyChecks }} -p build/ ${{ steps.files-by-extensions.outputs.cpp_files }} &>> ${{ env.logdir }}clang-tidy.log - - exitCode=$? - - # if clang-tidy has run successfully parse the output - if [ -f ${{ env.logdir }}clang-tidy.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json" - cat ${{ env.logdir }}clang-tidy.log - echo "::remove-matcher owner=clang::" - - clangTidyErrors=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true - clangTidyWarnings=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true - clangTidyNotes=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true - fi - - # Pass Variables to GitHub Env - echo "clangTidyErrors=$clangTidyErrors" >> $GITHUB_ENV - echo "clangTidyWarnings=$clangTidyWarnings" >> $GITHUB_ENV - echo "clangTidyNotes=$clangTidyNotes" >> $GITHUB_ENV - - echo "Found $clangTidyErrors errors, $clangTidyWarnings warnings, $clangTidyNotes notes" - - # Step-Report - if [ $clangTidyErrors -gt 0 ]; then - echo "
:fire: Clang-Tidy found :fire: $clangTidyErrors errors, :warning: $clangTidyWarnings warnings and :pencil2: $clangTidyNotes notes" >> ${{ env.logdir }}checkReport.md - elif [ $clangTidyWarnings -gt 0 ]; then - echo "
:warning: Clang-Tidy found :warning: $clangTidyWarnings warnings and :pencil2: $clangTidyNotes notes" >> ${{ env.logdir }}checkReport.md - elif [ $clangTidyNotes -gt 0 ]; then - echo "
:pencil2: Clang-Tidy found :pencil2: $clangTidyNotes notes" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Clang-Tidy found no errors, warnings or notes" >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - # enabled checks - echo "
:information_source: Enabled checks" >> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}clang-tidy-enabled-checks.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}clang-tidy.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Error the step if pylint has found errors - if [ $clangTidyErrors -gt 0 ] && [ ${{ env.clangTidyFailSilent }} != true ]; then - exit 1 - else - echo "Clang-tidy exited with code $exitCode, but we are ignoring it" - exit 0 - fi - - - name: Clazy - shell: bash - if: env.checkClazy == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && always() - run: | - clazyErrors="0" - clazyWarnings="0" - clazyNotes="0" - - sudo apt-get install -y --no-install-recommends clazy - - clazy-standalone --export-fixes=${{ env.fixesdir }}clazy.yaml -checks=${{ env.clazyChecks }} -p build/ ${{ steps.files-by-extensions.outputs.cpp_files }} &>> ${{ env.logdir }}clazy.log || true - - # if Clazy has run successfully parse the output - if [ -f ${{ env.logdir }}clazy.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json" - cat ${{ env.logdir }}clazy.log - echo "::remove-matcher owner=clang::" - - clazyErrors=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true - clazyWarnings=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true - clazyNotes=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true - fi - - # Pass Variables to GitHub Env - echo "clazyErrors=$clazyErrors" >> $GITHUB_ENV - echo "clazyWarnings=$clazyWarnings" >> $GITHUB_ENV - echo "clazyNotes=$clazyNotes" >> $GITHUB_ENV - - echo "Found $clazyErrors errors, $clazyWarnings warnings, $clazyNotes notes" - - # Step-Report - if [ "$clazyErrors" -gt 0 ]; then - echo "
:fire: Clazy found :fire: $clazyErrors errors, :warning: $clazyWarnings warnings and :pencil2: $clazyNotes notes" >> ${{ env.logdir }}checkReport.md - elif [ "$clazyWarnings" -gt 0 ]; then - echo "
:warning: Clazy found :warning: $clazyWarnings warnings and :pencil2: $clazyNotes notes" >> ${{ env.logdir }}checkReport.md - elif [ "$clazyNotes" -gt 0 ]; then - echo "
:pencil2: Clazy found :pencil2: $clazyNotes notes" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Clazy found no errors, warnings or notes" >> ${{ env.logdir }}checkReport.md - fi - echo "" >> ${{ env.logdir }}checkReport.md - # documentation link - echo "[List of checks](https://github.com/KDE/clazy#list-of-checks), [This explains some of the clazy warnings](https://www.kdab.com/uncovering-32-qt-best-practices-compile-time-clazy/) " >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}clazy.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Error the step if pylint has found errors - if [ "$clazyErrors" -gt 0 ] && [ ${{ env.clazyFailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Clazy-QT6 - shell: bash - if: env.checkClazyQT6 == 'true' && steps.files-by-extensions.outputs.cpp_files != '' && github.ref == env.QT6Branch && always() - run: | - clazyQT6Errors="0" - clazyQT6Warnings="0" - clazyQT6Notes="0" - - sudo apt-get install clazy - - # clazy checks for qt6 porting - clazy-standalone --export-fixes=${{ env.fixesdir }}clazyQT6.yaml -checks=${{ env.clazyQT6Checks }} -p build/ ${{ steps.files-by-extensions.outputs.cpp_files }} &>> ${{ env.logdir }}clazyQT6.log || true - - - # if Clazy has run successfully parse the output - if [ -f ${{ env.logdir }}clazyQT6.log ]; then - echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json" - cat ${{ env.logdir }}clazyQT6.log - echo "::remove-matcher owner=clang::" - - clazyQT6Errors=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true - clazyQT6Warnings=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true - clazyQT6Notes=$(grep -rnIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true - fi - - # Pass Variables to GitHub Env - echo "clazyQT6Errors=$clazyQT6Errors" >> $GITHUB_ENV - echo "clazyQT6Warnings=$clazyQT6Warnings" >> $GITHUB_ENV - echo "clazyQT6Notes=$clazyQT6Notes" >> $GITHUB_ENV - - echo "Found $clazyQT6Errors errors, $clazyQT6Warnings warnings, $clazyQT6Notes notes" - - # Step-Report - if [ "$clazyQT6Errors" -gt 0 ]; then - echo "
:fire: Clazy found :fire: $clazyQT6Errors errors, :warning: $clazyQT6Warnings warnings and :pencil2: $clazyQT6Notes notes for porting to QT6" >> ${{ env.logdir }}checkReport.md - elif [ "$clazyQT6Warnings" -gt 0 ]; then - echo "
:warning: Clazy found :warning: $clazyQT6Warnings warnings and :pencil2: $clazyQT6Notes notes for porting to QT6" >> ${{ env.logdir }}checkReport.md - elif [ "$clazyNotes" -gt 0 ]; then - echo "
:pencil2: Clazy found :pencil2: $clazyQT6Notes notes for porting to QT6" >> ${{ env.logdir }}checkReport.md - else - echo "
:heavy_check_mark: Clazy found no errors, warnings or notes for porting to QT6" >> ${{ env.logdir }}checkReport.md - fi - - echo "" >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - cat ${{ env.logdir }}clazyQT6.log >> ${{ env.logdir }}checkReport.md - echo '```' >> ${{ env.logdir }}checkReport.md - echo "
">> ${{ env.logdir }}checkReport.md - echo "" >> ${{ env.logdir }}checkReport.md - - # Error the step if pylint has found errors - if [ "$clazyQT6Errors" -gt 0 ] && [ ${{ env.clazyQT6FailSilent }} != true ]; then - exit 1 - else - exit 0 - fi - - - name: Zip Logs - if: always() - run: | - zip -r ${{ env.logdir }}logs.zip ${{ env.logdir }} - - - name: Upload Logs - if: always() - uses: actions/upload-artifact@v3 - with: - name: Logs - path: ${{ env.logdir }}logs.zip - - - name: Zip Fixes - if: always() - run: | - zip -r ${{ env.fixesdir }}fixes.zip ${{ env.fixesdir }} - - - name: Upload Fixes - if: always() - uses: actions/upload-artifact@v3 - with: - name: Fixes - path: ${{ env.fixesdir }}fixes.zip - - - name: Post Report to GITHUB_STEP_SUMMARY - if: env.reportStepSummary == 'true' && always() - id: post-report-to-github-step-summary - run: | - cat ${{ env.logdir }}checkReport.md > $GITHUB_STEP_SUMMARY - - - name: Create Pull request comment - if: env.reportPRComment == 'true' && github.event_name == 'pull_request' && always() - uses: marocchino/sticky-pull-request-comment@v2 - with: - header: Check results - path: ${{ env.logdir }}checkReport.md - - - name: get comment body - id: get-comment-body - if: env.reportPushComment == 'true' && github.event_name == 'push' && always() - run: | - body=$(cat ${{ env.logdir }}checkReport.md) - body="${body//'%'/'%25'}" - body="${body//$'\n'/'%0A'}" - body="${body//$'\r'/'%0D'}" - echo ::set-output name=body::$body - - - name: Create commit comment - if: env.reportPushComment == 'true' && github.event_name == 'push' && always() - uses: peter-evans/commit-comment@v2 - with: - body: ${{ steps.get-comment-body.outputs.body }}