mirror of
https://github.com/snoups/remnashop.git
synced 2026-04-26 12:35:38 +00:00
fix: docker and workflows
- fixed Docker Compose network and volume configuration - implemented asset backup process - fixed banners enum type
This commit is contained in:
61
.github/workflows/dev-docker-release.yml
vendored
61
.github/workflows/dev-docker-release.yml
vendored
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user