diff --git a/.ci/gen_output.sh b/.ci/gen_output.sh new file mode 100755 index 0000000..7c7662c --- /dev/null +++ b/.ci/gen_output.sh @@ -0,0 +1,28 @@ +echo "\`\`\`" > output.txt + +process_output() { + if [ $? -eq 0 ]; then + head -n 5 output_tmp.txt >> output.txt + echo "... [See pipeline output for full details]" >> output.txt + tail -n 5 output_tmp.txt >> output.txt + else + cat output_tmp.txt >> output.txt + fi +} + +echo "-- START Port attribution watcher --" | tee -a output.txt +python3 .ci/port_attribution_watcher.py | tee output_tmp.txt + +process_output + +echo "-- END Port attribution watcher --" | tee -a output.txt +echo "" >> output.txt +echo "-- START Traefik label watcher --" | tee -a output.txt + +python3 .ci/traefik_label_watcher.py | tee output_tmp.txt + +process_output + +echo "-- END Traefik label watcher --" | tee -a output.txt +echo "\`\`\`" >> output.txt # Close the code block + diff --git a/.ci/lint_wrap.sh b/.ci/lint_wrap.sh new file mode 100755 index 0000000..20a6432 --- /dev/null +++ b/.ci/lint_wrap.sh @@ -0,0 +1,11 @@ +set -o pipefail +sh .ci/lint.sh 2>&1 | tee output_tmp.txt +EXIT_CODE=$? +echo "\`\`\`" > output.txt + +grep -n 'msg=' output_tmp.txt | awk -F'msg="' '{print $2}' | sed 's/"$//' | sed 's/\\"/"/g' >> output.txt +grep -v 'msg=' output_tmp.txt >> output.txt + +echo "\`\`\`" >> output.txt +echo "END" +exit $EXIT_CODE diff --git a/.ci/port_attribution_watcher.py b/.ci/port_attribution_watcher.py index 8432fc9..d5e2ffa 100644 --- a/.ci/port_attribution_watcher.py +++ b/.ci/port_attribution_watcher.py @@ -52,25 +52,20 @@ def main(watchFolder: str): # Get exposed ports exposedPorts = getExposedPortsFromDockerComposeFile(dockerComposeFile) ports[dockerComposeFile] = exposedPorts - if len(exposedPorts) == 0: + if len(exposedPorts) != 0: print(f"\nš¦ {dockerComposeFile}" - f"\nš“ No exposed ports found" - f"\n") - else: - print(f"\nš¦ {dockerComposeFile}" - f"\nš Exposed ports: {exposedPorts}" - f"\n") + f"\nš Exposed ports: {exposedPorts}") wrong = checkPortUnique(ports) if wrong: exit(1) else: - print("\n\nā All ports are unique\n\n") + print("\nā All ports are unique") exit(0) if __name__ == "__main__": - print("Traefik label watcher CI/CD") + print("Port Attribution Watcher") # Read folder from env watchFolder = os.getenv("WATCH_FOLDER") if watchFolder == None: diff --git a/.ci/traefik_label_watcher.py b/.ci/traefik_label_watcher.py index dda93b0..a3e3868 100644 --- a/.ci/traefik_label_watcher.py +++ b/.ci/traefik_label_watcher.py @@ -85,7 +85,7 @@ def main(watchFolder: str): if wrong: exit(1) else: - print("\n\nā All routers are unique\n\n") + print("\n\nā All routers are unique") exit(0) if __name__ == "__main__": diff --git a/.woodpecker/lint.yml b/.woodpecker/lint.yml index 30f8f3a..954a40a 100644 --- a/.woodpecker/lint.yml +++ b/.woodpecker/lint.yml @@ -3,23 +3,36 @@ steps: image: python:3.13-slim commands: - pip3 install -r .ci/requirements.txt - - python3 .ci/port_attribution_watcher.py - - python3 .ci/traefik_labels_watcher.py - when: - - event: pull_request - repo: gnouseu/docker-services - - event: push - branch: main + - ./.ci/gen_output.sh + comment: + image: git.gnous.eu/enpls/gitea-comment-plugin:1.1 + settings: + gitea_address: https://git.gnous.eu + gitea_token: + from_secret: gnous_cicd_token + comment_file: output.txt + when: + status: [failure, success] + event: [pull_request] lint: - image: debian:stable-slim + image: debian:stable commands: + - rm -rf output.txt - apt-get update - apt-get install -y curl - curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose - - sh .ci/lint.sh - when: - - event: pull_request - repo: gnouseu/docker-services - - event: push - branch: main \ No newline at end of file + - bash .ci/lint_wrap.sh + comment_2: + image: git.gnous.eu/enpls/gitea-comment-plugin:1.1 + settings: + gitea_address: https://git.gnous.eu + gitea_token: + from_secret: gnous_cicd_token + comment_file: output.txt + when: + status: [failure, success] + event: [pull_request] +when: + - event: [push, pull_request] + - evaluate: 'CI_COMMIT_AUTHOR in ["gnous-ci-bot", "mael", "ada"]' \ No newline at end of file