fix: docker and workflows

- fixed Docker Compose network and volume configuration
- implemented asset backup process
- fixed banners enum type
This commit is contained in:
Ilay
2025-10-31 20:32:16 +05:00
parent 337b0f5002
commit 622a6f0b81
8 changed files with 86 additions and 33 deletions

View File

@@ -9,8 +9,11 @@ jobs:
docker-build:
name: 🏗️ Build and Push Docker Image
runs-on: ubuntu-latest
outputs:
image-tag: ghcr.io/${{ github.repository }}:dev
image_tag: ${{ steps.vars.outputs.image_tag }}
short_sha: ${{ steps.vars.outputs.short_sha }}
steps:
- name: 🧾 Checkout Repository
uses: actions/checkout@v4
@@ -18,70 +21,96 @@ jobs:
- name: 🛠️ Set Up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: 🔐 Log in to GitHub Container Registry
- name: 🔐 Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}
- name: 🏷️ Build and Push Image
- name: 🏷️ Define Tags & Outputs
id: vars
run: |
# More reliable and git-native short commit retrieval
SHORT_SHA=$(git rev-parse --short HEAD)
IMAGE_REPO="ghcr.io/${GITHUB_REPOSITORY}"
IMAGE_TAGS="${IMAGE_REPO}:dev,${IMAGE_REPO}:dev-${SHORT_SHA}"
echo "image_tag=${IMAGE_TAGS}" >> $GITHUB_OUTPUT
echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT
echo "✅ Tags: ${IMAGE_TAGS}"
echo "✅ SHA: ${SHORT_SHA}"
- name: 🏗️ Build and Push Image
uses: docker/build-push-action@v5
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ghcr.io/${{ github.repository }}:dev
tags: ${{ steps.vars.outputs.image_tag }}
release:
name: 📦 Build and Publish Dev Artifact
runs-on: ubuntu-latest
needs: docker-build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SHORT_SHA: ${{ needs.docker-build.outputs.short_sha }}
steps:
- name: 🧾 Checkout Repository
uses: actions/checkout@v4
- name: 🧱 Generate Build Metadata
run: |
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-8)
BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BRANCH="${{ github.ref_name }}"
FULL_SHA="${{ github.sha }}"
COMMIT_URL="https://github.com/${{ github.repository }}/commit/$SHORT_SHA"
cat <<-EOF > build.info.json
TAG_VALUE=$(grep -m1 '"version":' package.json | cut -d'"' -f4 || true)
if [ -z "$TAG_VALUE" ]; then
JSON_TAG="null"
else
JSON_TAG="\"$TAG_VALUE\""
fi
cat <<EOF > build.info.json
{
"buildTime": "$BUILD_TIME",
"commitFull": "$FULL_SHA",
"commit": "$SHORT_SHA",
"tag": "dev-build",
"tag": $JSON_TAG,
"branch": "$BRANCH",
"commitUrl": "$COMMIT_URL"
}
EOF
echo "✅ Generated build.info.json"
- name: 📁 Archive Project Files
run: zip -r remnashop-dev.zip . -x ".git/*" ".github/*" "logs/*" "*.zip"
run: |
zip -r remnashop-dev.zip . \
-x ".git/*" ".github/*" "logs/*" "*.zip" "node_modules/*"
- name: 🧹 Remove Previous Artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
run: gh release delete-asset dev-build remnashop-dev.zip || true
- name: ⬆️ Upload Artifact to Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload dev-build remnashop-dev.zip --clobber
- name: 📝 Update Release Notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
COMMIT_URL="https://github.com/${{ github.repository }}/commit/${{ github.sha }}"
COMMIT_URL="https://github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}"
DATE=$(date -u +'%Y-%m-%d %H:%M:%S UTC')
gh release edit dev-build --notes-file - <<EOF
🔁 Updated development build
🔗 [Commit]($COMMIT_URL)
🔗 [Commit]($COMMIT_URL)
🏷️ Tags:
• \`dev\`
• \`dev-$SHORT_SHA\`
📅 Built: $DATE
EOF

View File

@@ -1,7 +1,9 @@
FROM ghcr.io/astral-sh/uv:python3.12-alpine AS builder
WORKDIR /opt/remnashop
COPY pyproject.toml uv.lock ./
RUN uv sync --locked --no-dev --no-cache --compile-bytecode \
&& find .venv -type d -name "__pycache__" -exec rm -rf {} + \
&& rm -rf .venv/lib/python3.12/site-packages/pip* \
@@ -11,13 +13,17 @@ RUN uv sync --locked --no-dev --no-cache --compile-bytecode \
FROM python:3.12-alpine AS final
WORKDIR /opt/remnashop
COPY --from=builder /opt/remnashop/.venv /opt/remnashop/.venv
ENV PATH="/opt/remnashop/.venv/bin:$PATH"
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/opt/remnashop
COPY ./src ./src
COPY ./assets /opt/remnashop/assets.default
COPY ./docker-entrypoint.sh ./docker-entrypoint.sh
RUN chmod +x ./docker-entrypoint.sh
CMD ["./docker-entrypoint.sh"]

View File

@@ -20,7 +20,7 @@ services:
- remnashop-db-data:/var/lib/postgresql/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
@@ -41,7 +41,7 @@ services:
- remnashop-redis-data:/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
@@ -72,9 +72,10 @@ services:
- ./src:/opt/remnashop/src
- ./logs:/opt/remnashop/logs
- ./assets:/opt/remnashop/assets
- ./assets_backup:/opt/remnashop/assets_backup
networks:
- remnashop-network
- remnawave-network
remnashop-taskiq-worker:
@@ -92,8 +93,8 @@ services:
networks:
remnashop-network:
name: remnashop-network
remnawave-network:
name: remnawave-network
driver: bridge
external: false

View File

@@ -17,7 +17,7 @@ services:
- remnashop-db-data:/var/lib/postgresql/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
@@ -38,7 +38,7 @@ services:
- remnashop-redis-data:/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
@@ -66,12 +66,12 @@ services:
condition: service_healthy
volumes:
- ./src:/opt/remnashop/src
- ./logs:/opt/remnashop/logs
- ./assets:/opt/remnashop/assets
- ./assets_backup:/opt/remnashop/assets_backup
networks:
- remnashop-network
- remnawave-network
remnashop-taskiq-worker:

View File

@@ -17,7 +17,7 @@ services:
- remnashop-db-data:/var/lib/postgresql/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
@@ -38,7 +38,7 @@ services:
- remnashop-redis-data:/data
networks:
- remnashop-network
- remnawave-network
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
@@ -66,12 +66,12 @@ services:
condition: service_healthy
volumes:
- ./src:/opt/remnashop/src
- ./logs:/opt/remnashop/logs
- ./assets:/opt/remnashop/assets
- ./assets_backup:/opt/remnashop/assets_backup
networks:
- remnashop-network
- remnawave-network
remnashop-taskiq-worker:

View File

@@ -1,7 +1,20 @@
#!/bin/sh
set -e
ASSETS_DIR="/opt/remnashop/assets"
DEFAULT_DIR="/opt/remnashop/assets.default"
BACKUP_DIR="/opt/remnashop/assets_backup"
if [ -d "$ASSETS_DIR" ] && [ "$(ls -A "$ASSETS_DIR")" ]; then
mkdir -p "$BACKUP_DIR"
timestamp=$(date +"%Y%m%d_%H%M%S")
tar czf "$BACKUP_DIR/assets_backup_$timestamp.tar.gz" -C "$ASSETS_DIR" .
echo "Backup saved to $BACKUP_DIR/assets_backup_$timestamp.tar.gz"
fi
rm -rf "$ASSETS_DIR"/*
cp -r "$DEFAULT_DIR"/* "$ASSETS_DIR"
echo "Migrating database..."
if ! alembic -c src/infrastructure/database/alembic.ini upgrade head; then

View File

@@ -67,14 +67,14 @@ class MessageEffect(UpperStrEnum):
POOP = "5046589136895476101" # 💩
class BannerName(UpperStrEnum):
class BannerName(StrEnum):
DEFAULT = auto()
MENU = auto()
DASHBOARD = auto()
SUBSCRIPTION = auto()
class BannerFormat(UpperStrEnum):
class BannerFormat(StrEnum):
JPG = auto()
JPEG = auto()
PNG = auto()

View File

@@ -17,5 +17,9 @@ class RemnawaveProvider(Provider):
token=config.remnawave.token.get_secret_value(),
caddy_token=config.remnawave.caddy_token.get_secret_value(),
ssl_ignore=False,
custom_headers=None,
custom_headers={
"x-forwarded-proto": "https",
"x-forwarded-for": "127.0.0.1",
"X-Remnawave-Client-Type": "browser",
},
)