You've already forked oscript-images
mirror of
https://github.com/pravets/oscript-images.git
synced 2025-10-08 23:01:52 +02:00
feat: добавлен скрипт для сборки и тестирования образа gitrules
This commit is contained in:
26
.github/workflows/build-gitrules.yml
vendored
Normal file
26
.github/workflows/build-gitrules.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
name: Build gitrules Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'gitrules' # реагировать на тег gitrules
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
DOCKER_REGISTRY_URL: ${{ secrets.DOCKER_REGISTRY_URL }}
|
||||||
|
DOCKER_LOGIN: ${{ secrets.DOCKER_LOGIN }}
|
||||||
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and Push Docker image
|
||||||
|
run: |
|
||||||
|
echo "Собираем gitrules"
|
||||||
|
./src/build-gitrules.sh
|
56
src/build-gitrules.sh
Executable file
56
src/build-gitrules.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
if [ -z "${CI:-}" ]; then
|
||||||
|
echo "The script is not running in CI"
|
||||||
|
source "${SCRIPT_DIR}/../scripts/load_env.sh"
|
||||||
|
else
|
||||||
|
echo "The script is running in CI";
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "${SCRIPT_DIR}/../scripts/docker_login.sh"
|
||||||
|
source "${SCRIPT_DIR}/../tools/assert.sh"
|
||||||
|
|
||||||
|
if [[ "${DOCKER_SYSTEM_PRUNE:-}" = "true" ]] ;
|
||||||
|
then
|
||||||
|
docker system prune -af
|
||||||
|
fi
|
||||||
|
|
||||||
|
last_arg="."
|
||||||
|
if [[ ${NO_CACHE:-} = "true" ]] ; then
|
||||||
|
last_arg="--no-cache ."
|
||||||
|
fi
|
||||||
|
|
||||||
|
gitrules_version="latest"
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--pull \
|
||||||
|
--build-arg GITRULES_VERSION="${gitrules_version}" \
|
||||||
|
--build-arg DOCKER_REGISTRY_URL="${DOCKER_REGISTRY_URL}" \
|
||||||
|
--build-arg DOCKER_LOGIN="${DOCKER_LOGIN}" \
|
||||||
|
-t "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${gitrules_version}" \
|
||||||
|
-f "${SCRIPT_DIR}/gitrules/Dockerfile" \
|
||||||
|
${last_arg}
|
||||||
|
|
||||||
|
if ./tests/test-gitrules.sh; then
|
||||||
|
container_version=$(docker run --rm "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${gitrules_version}" --version | tail -n1)
|
||||||
|
|
||||||
|
if [[ -n "${container_version}" ]]; then
|
||||||
|
docker push "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${gitrules_version}"
|
||||||
|
|
||||||
|
docker tag "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${gitrules_version}" "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${container_version}"
|
||||||
|
docker push "${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:${container_version}"
|
||||||
|
|
||||||
|
else
|
||||||
|
log_failure "Не удалось получить версию из контейнера"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "${SCRIPT_DIR}/../scripts/cleanup.sh"
|
||||||
|
else
|
||||||
|
log_failure "ERROR: Тесты провалены. Образ не был запушен."
|
||||||
|
source "${SCRIPT_DIR}/../scripts/cleanup.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
11
src/gitrules/Dockerfile
Normal file
11
src/gitrules/Dockerfile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
ARG DOCKER_REGISTRY_URL=docker.io
|
||||||
|
ARG DOCKER_LOGIN=sleemp
|
||||||
|
ARG BASE_IMAGE=oscript
|
||||||
|
ARG BASE_TAG=dev
|
||||||
|
|
||||||
|
FROM ${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/${BASE_IMAGE}:${BASE_TAG}
|
||||||
|
LABEL maintainer="Iosif Pravets <i@pravets.ru>"
|
||||||
|
|
||||||
|
RUN opm i gitrules;
|
||||||
|
|
||||||
|
ENTRYPOINT ["gitrules"]
|
4
src/tag-gitrules-latest.sh
Executable file
4
src/tag-gitrules-latest.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
git tag -f gitrules && git push origin gitrules -f
|
31
tests/test-gitrules.sh
Executable file
31
tests/test-gitrules.sh
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
if [ -z "${CI-}" ]; then
|
||||||
|
echo "The script is not running in CI"
|
||||||
|
source "${SCRIPT_DIR}/../.env"
|
||||||
|
else
|
||||||
|
echo "The script is running in CI"
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "${SCRIPT_DIR}/../tools/assert.sh"
|
||||||
|
|
||||||
|
test_gitrules_is_running() {
|
||||||
|
log_header "Test :: gitrules is running"
|
||||||
|
|
||||||
|
local expected actual
|
||||||
|
|
||||||
|
expected="ИНФОРМАЦИЯ - [СписокРелизов1С]: Инициализирован обработчик"
|
||||||
|
actual=$(docker run --rm ${DOCKER_REGISTRY_URL}/${DOCKER_LOGIN}/gitrules:latest 2>/dev/null | head -n1)
|
||||||
|
|
||||||
|
if assert_eq "$expected" "$actual"; then
|
||||||
|
log_success "gitrules is running test passed"
|
||||||
|
else
|
||||||
|
log_failure "gitrules is running test failed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# test calls
|
||||||
|
test_gitrules_is_running
|
Reference in New Issue
Block a user