ci: add workflow to automation golang image creation
Some checks failed
Build and Push Golang Image / build-and-push (push) Has been cancelled

This commit is contained in:
skeris 2025-05-27 21:26:38 +03:00
parent bb6b402c2d
commit 91fa0bca2e
6 changed files with 88 additions and 2 deletions

@ -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}

@ -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 . ADD golangci-lint .

@ -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 FROM gitea.pena/penadevops/container-images/node:main as node
ADD pena-ca.crt /usr/local/share/ca-certificates/cacert.crt 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 mkdir -p /run/user/1000/podman
RUN chmod -R 777 /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 ENV DOCKER_HOST=/var/run/docker.sock
COPY --from=compose /docker-compose /usr/bin/compose COPY --from=compose /docker-compose /usr/bin/compose

@ -1,4 +1,5 @@
FROM gitea.pena/penadevops/container-images/golint:main as golint FROM gitea.pena/penadevops/container-images/golint:main as golint
RUN go version
# only for get golint binary # only for get golint binary
FROM gitea.pena/penadevops/container-images/node:main as node FROM gitea.pena/penadevops/container-images/node:main as node

5
node/Containerfile Normal file

@ -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

50
node/psstat.sh Executable file

@ -0,0 +1,50 @@
#!/bin/sh
if [ $# -eq 0 ]; then
echo "Usage: $0 <command>"
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"