From 91fa0bca2e8caad4abbcdd3edc1ff44009662fd7 Mon Sep 17 00:00:00 2001 From: skeris Date: Tue, 27 May 2025 21:26:38 +0300 Subject: [PATCH] ci: add workflow to automation golang image creation --- .gitea/workflows/golang.yml | 25 ++++++++++++++++++ golint/Dockerfile | 3 ++- node-compose/Dockerfile | 6 ++++- node-golangcilint/Dockerfile | 1 + node/Containerfile | 5 ++++ node/psstat.sh | 50 ++++++++++++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 .gitea/workflows/golang.yml create mode 100644 node/Containerfile create mode 100755 node/psstat.sh diff --git a/.gitea/workflows/golang.yml b/.gitea/workflows/golang.yml new file mode 100644 index 0000000..b793bfc --- /dev/null +++ b/.gitea/workflows/golang.yml @@ -0,0 +1,25 @@ +name: Build and Push Golang Image + +on: + push: + paths: + - 'golang/**' + - '.gitea/workflows/golang.yml' + +jobs: + build-and-push: + runs-on: frontstaging + steps: + - name: Checkout code + uses: https://gitea.pena/PenaDevops/actions.git/checkout@v1 + + - name: Login to Container Registry + run: | + podman login -u "${{ secrets.REGISTRY_USERNAME }}" -p "${{ secrets.REGISTRY_PASSWORD }}" gitea.pena + + - name: Build and Push Image + run: | + cd golang + BRANCH_NAME=${GITEA_REF#refs/heads/} + podman build -t gitea.pena/penadevops/container-images/golang:${BRANCH_NAME} . + podman push gitea.pena/penadevops/container-images/golang:${BRANCH_NAME} \ No newline at end of file diff --git a/golint/Dockerfile b/golint/Dockerfile index 7eb663d..5fafde6 100644 --- a/golint/Dockerfile +++ b/golint/Dockerfile @@ -1,3 +1,4 @@ -FROM penahub.gitlab.yandexcloud.net:5050/devops/dockerhub-backup/golang:main.3862 as golang +FROM gitea.pena/penadevops/container-images/golang:main as golang +RUN go version ADD golangci-lint . diff --git a/node-compose/Dockerfile b/node-compose/Dockerfile index 9f5b2a2..e8aec7f 100644 --- a/node-compose/Dockerfile +++ b/node-compose/Dockerfile @@ -3,9 +3,13 @@ FROM gitea.pena/penadevops/container-images/docker-compose-bin:main as compose FROM gitea.pena/penadevops/container-images/node:main as node ADD pena-ca.crt /usr/local/share/ca-certificates/cacert.crt -RUN apk add git && update-ca-certificates +RUN apk add catatonit git && update-ca-certificates RUN mkdir -p /run/user/1000/podman RUN chmod -R 777 /run/user/1000/podman +RUN mkdir -p /etc/containers && \ + echo -e '[[registry]]\n location = "gitea.pena"\n insecure = true' >> /etc/containers/registries.conf +RUN cat /etc/containers/registries.conf ENV DOCKER_HOST=/var/run/docker.sock + COPY --from=compose /docker-compose /usr/bin/compose diff --git a/node-golangcilint/Dockerfile b/node-golangcilint/Dockerfile index 2c17721..60b16d0 100644 --- a/node-golangcilint/Dockerfile +++ b/node-golangcilint/Dockerfile @@ -1,4 +1,5 @@ FROM gitea.pena/penadevops/container-images/golint:main as golint +RUN go version # only for get golint binary FROM gitea.pena/penadevops/container-images/node:main as node diff --git a/node/Containerfile b/node/Containerfile new file mode 100644 index 0000000..dc92e45 --- /dev/null +++ b/node/Containerfile @@ -0,0 +1,5 @@ + +FROM gitea.pena/penadevops/container-images/node:main as build +COPY ./psstat.sh /usr/local/bin +RUN apk add --no-cache procps +RUN chmod +x /usr/local/bin/psstat.sh diff --git a/node/psstat.sh b/node/psstat.sh new file mode 100755 index 0000000..853095a --- /dev/null +++ b/node/psstat.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +if [ $# -eq 0 ]; then + echo "Usage: $0 " + echo "Example: $0 'npm run build'" + exit 1 +fi + +COMMAND="$@" +LOG_FILE="stats.log" +TEMP_PID_FILE="/tmp/monitor_pid_$$" + +# Очищаем старый лог-файл +echo "Timestamp,CPU(%),Memory(GB),Command" > "$LOG_FILE" + +# Функция для получения памяти в GB +get_memory_gb() { + local pid=$1 + local kb_mem=$(ps -p "$pid" -o rss=) + local gb_mem=$(echo "scale=2; $kb_mem / 1024 / 1024" | bc) + echo "$gb_mem" +} + +# Функция для мониторинга +monitor() { + local pid=$1 + echo "Monitoring PID: $pid" + while ps -p "$pid" > /dev/null; do + local cpu_usage=$(ps -p "$pid" -o %cpu=) + local mem_usage=$(get_memory_gb "$pid") + echo $mem_usage + local cmd=$(ps -p "$pid" -o cmd=) + echo "$(date '+%Y-%m-%d %H:%M:%S'),$cpu_usage,$mem_usage,$cmd" >> "$LOG_FILE" + sleep 1 + done +} + +# Запускаем команду +$COMMAND & +CMD_PID=$! +echo "$CMD_PID" > "$TEMP_PID_FILE" + +# Начинаем мониторинг +monitor "$CMD_PID" + +# Удаляем временный файл +rm -f "$TEMP_PID_FILE" + +echo "Monitoring complete. Data saved to $LOG_FILE" +echo "Format: Timestamp, CPU(%), Memory(GB), Command"