diff --git a/.github/workflows/CheckCodeQuality.yml b/.github/workflows/CheckCodeQuality.yml index b2ad096..ce32362 100644 --- a/.github/workflows/CheckCodeQuality.yml +++ b/.github/workflows/CheckCodeQuality.yml @@ -88,6 +88,13 @@ jobs: id: bandit if: inputs.artifact != '' run: | + set +e + + ANSI_LIGHT_RED=$'\x1b[91m' + ANSI_LIGHT_GREEN=$'\x1b[92m' + ANSI_LIGHT_BLUE=$'\x1b[94m' + ANSI_NOCOLOR=$'\x1b[0m' + bandit_directory=report/bandit bandit_fullpath=report/bandit/report.xml @@ -97,40 +104,29 @@ jobs: EOF mkdir -p ${bandit_directory} + printf "\nRun bandit ...\n" bandit -c pyproject.toml -r ${{ inputs.package_directory }} -f xml -o ${bandit_fullpath} - - - name: Check if report is empty (⇒ no issues found) - id: check - run: | - set +e - - ANSI_LIGHT_RED=$'\x1b[91m' - ANSI_LIGHT_GREEN=$'\x1b[92m' - ANSI_LIGHT_BLUE=$'\x1b[94m' - ANSI_NOCOLOR=$'\x1b[0m' - - printf "Checking if bandit found problems ... " - if [[ $(grep -P '' ${{ steps.bandit.outputs.bandit_fullpath }}) ]]; then - printf "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}\n" + if [[ $? -eq 0 ]]; then + printf "Bandit result: ${ANSI_LIGHT_GREEN}[PASSED]${ANSI_NOCOLOR}\n" printf "bandit_passed=true\n" >> "${GITHUB_OUTPUT}" else - faults=$(grep -Poh '(?<=)' ${{ steps.bandit.outputs.bandit_fullpath }}) + faults=$(grep -Poh '(?<=)' ${bandit_fullpath}) - printf "${ANSI_LIGHT_RED}[ERROR]${ANSI_NOCOLOR}\n" + printf "Bandit result: ${ANSI_LIGHT_RED}[FAILED]${ANSI_NOCOLOR}\n" printf " ${ANSI_LIGHT_RED}Bandit found %s issues.${ANSI_NOCOLOR}\n" "${faults}" printf "::error title=%s::%s\n" "🚨 Security Scanning (Bandit)" "Bandi found ${faults} issues." printf "bandit_passed=false\n" >> "${GITHUB_OUTPUT}" printf "::group::${ANSI_LIGHT_BLUE}JUnit XML report created by Bandit ...${ANSI_NOCOLOR}\n" - cat ${{ steps.bandit.outputs.bandit_fullpath }} - printf "::endgroup::\n" + cat ${bandit_fullpath} + printf "\n::endgroup::\n" fi - name: 📊 Publish Bandit Results uses: dorny/test-reporter@v2 - if: steps.check.outputs.bandit_passed == 'false' + if: steps.bandit.outputs.bandit_passed == 'false' continue-on-error: true with: name: 'Bandit Results' diff --git a/.github/workflows/_Checking_Releaser.yml b/.github/workflows/_Checking_Releaser.yml deleted file mode 100644 index 3374b20..0000000 --- a/.github/workflows/_Checking_Releaser.yml +++ /dev/null @@ -1,176 +0,0 @@ -# ==================================================================================================================== # -# Authors: # -# Unai Martinez-Corral # -# # -# ==================================================================================================================== # -# Copyright 2020-2025 The pyTooling Authors # -# # -# Licensed under the Apache License, Version 2.0 (the "License"); # -# you may not use this file except in compliance with the License. # -# You may obtain a copy of the License at # -# # -# http://www.apache.org/licenses/LICENSE-2.0 # -# # -# Unless required by applicable law or agreed to in writing, software # -# distributed under the License is distributed on an "AS IS" BASIS, # -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # -# See the License for the specific language governing permissions and # -# limitations under the License. # -# # -# SPDX-License-Identifier: Apache-2.0 # -# ==================================================================================================================== # -name: Verification Pipeline for Releaser - -on: - push: - tags: - - '*' - - '!tip' - - '!v*' - branches: - - '**' - - '!r*' - workflow_dispatch: - schedule: - - cron: '0 0 * * 4' - -env: - CI: true - -jobs: - - - Image: - runs-on: ubuntu-24.04 - env: - DOCKER_BUILDKIT: 1 - steps: - - uses: actions/checkout@v5 - - - name: Build container image - run: docker build -t ghcr.io/pytooling/releaser -f releaser/Dockerfile releaser - - - name: Push container image - uses: ./with-post-step - with: - main: | - echo '${{ github.token }}' | docker login ghcr.io -u GitHub-Actions --password-stdin - docker push ghcr.io/pytooling/releaser - post: docker logout ghcr.io - - - Composite: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - - run: printf "%s\n" "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt - - - name: Single - uses: ./releaser/composite - with: - rm: true - token: ${{ secrets.GITHUB_TOKEN }} - files: artifact-*.txt - - - name: List - uses: ./releaser/composite - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: | - artifact-*.txt - README.md - - - name: Add artifacts/*.txt - run: | - mkdir artifacts - printf "%s\n" "Build some tool and generate some artifacts" > artifacts/artifact.txt - touch artifacts/empty_file.txt - - - name: Single in subdir - uses: ./releaser/composite - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/artifact.txt - - - name: Add artifacts/*.md - run: | - printf "%s\n" "releaser hello" > artifacts/hello.md - printf "%s\n" "releaser world" > artifacts/world.md - - - name: Directory wildcard - uses: ./releaser/composite - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/* - - - name: Add artifacts/subdir - run: | - mkdir artifacts/subdir - printf "%s\n" "Test recursive glob" > artifacts/subdir/deep_file.txt - - - name: Directory wildcard (recursive) - uses: ./releaser/composite - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/** - - - Test: - needs: - - Image - - Composite - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - - run: printf "%s\n" "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt - - - name: Single - uses: ./releaser - with: - rm: true - token: ${{ secrets.GITHUB_TOKEN }} - files: artifact-*.txt - - - name: List - uses: ./releaser - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: | - artifact-*.txt - README.md - - - name: Add artifacts/*.txt - run: | - mkdir artifacts - printf "%s\n" "Build some tool and generate some artifacts" > artifacts/artifact.txt - touch artifacts/empty_file.txt - - - name: Single in subdir - uses: ./releaser - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/artifact.txt - - - name: Add artifacts/*.md - run: | - printf "%s\n" "releaser hello" > artifacts/hello.md - printf "%s\n" "releaser world" > artifacts/world.md - - - name: Directory wildcard - uses: ./releaser - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/* - - - name: Add artifacts/subdir - run: | - mkdir artifacts/subdir - printf "%s\n" "Test recursive glob" > artifacts/subdir/deep_file.txt - - - name: Directory wildcard (recursive) - uses: ./releaser - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: artifacts/** diff --git a/myPackage/__init__.py b/myPackage/__init__.py index d065523..9ea7328 100644 --- a/myPackage/__init__.py +++ b/myPackage/__init__.py @@ -40,6 +40,8 @@ __version__ = "0.4.5" __keywords__ = ["GitHub Actions"] __issue_tracker__ = "https://GitHub.com/pyTooling/Actions/issues" +from subprocess import check_call + from pyTooling.Decorators import export, readonly from pyTooling.Platform import Platform