From a4240065e8405b9b5074d5c2ba26517ea9221d8a Mon Sep 17 00:00:00 2001 From: gaia Date: Thu, 9 Apr 2026 01:26:22 -0300 Subject: [PATCH] feat(picsur): add Gitea Actions workflow + named volume - Add workflow .gitea/workflows/picsur.yml - Migrate from bind mount to named volume (data persists) - Workflow: PR validates, push to main deploys --- .gitea/workflows/picsur.yml | 100 +++++++++++++++++++++ docker/dockerino/picsur/docker-compose.yml | 9 +- 2 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 .gitea/workflows/picsur.yml diff --git a/.gitea/workflows/picsur.yml b/.gitea/workflows/picsur.yml new file mode 100644 index 0000000..f0c5175 --- /dev/null +++ b/.gitea/workflows/picsur.yml @@ -0,0 +1,100 @@ +name: Picsur Deploy + +on: + pull_request: + paths: + - 'docker/dockerino/picsur/**' + push: + branches: + - main + paths: + - 'docker/dockerino/picsur/**' + +env: + DOCKERINO_HOST: 10.0.0.50 + DOCKERINO_USER: root + PICSUR_PATH: /root/dockerino/picsur + +jobs: + # ============================================ + # JOB 1: VALIDATE (roda em todo PR e Push) + # ============================================ + validate: + name: Validate Picsur Compose + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Validate docker-compose syntax + run: | + cd docker/dockerino/picsur + docker compose config --quiet + echo "โœ… docker-compose.yml syntax is valid" + + - name: Pull image (dry-run) + run: | + cd docker/dockerino/picsur + docker compose pull --quiet + echo "โœ… Docker image pull successful" + + - name: Show compose file + run: | + echo "๐Ÿ“„ docker-compose.yml content:" + cat docker/dockerino/picsur/docker-compose.yml + + # ============================================ + # JOB 2: DEPLOY (sรณ roda no push to main) + # ============================================ + deploy: + name: Deploy Picsur to Dockerino + needs: validate + runs-on: ubuntu-latest + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + environment: production + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup SSH Key + uses: webfactory/ssh-agent@v0.8.0 + with: + ssh-private-key: ${{ secrets.DOCKERINO_SSH_KEY }} + + - name: Add Dockerino to known hosts + run: | + ssh-keyscan -H ${{ env.DOCKERINO_HOST }} >> ~/.ssh/known_hosts + + - name: Create Picsur directory + run: | + ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ + "mkdir -p ${{ env.PICSUR_PATH }}/data" + + - name: Sync docker-compose.yml to Dockerino + run: | + rsync -avz --progress \ + docker/dockerino/picsur/ \ + ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }}:${{ env.PICSUR_PATH }}/ + + - name: Pull latest image on Dockerino + run: | + ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ + "cd ${{ env.PICSUR_PATH }} && docker compose pull" + + - name: Restart Picsur service + run: | + ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ + "cd ${{ env.PICSUR_PATH }} && docker compose up -d" + + - name: Verify container is running + run: | + ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ + "docker ps --filter name=picsur --format '{{.Names}}: {{.Status}}'" + + - name: Report Success + run: | + echo "โœ… Picsur deployed successfully!" + echo "๐ŸŒ Access: https://picsur.hackerfortress.cc" diff --git a/docker/dockerino/picsur/docker-compose.yml b/docker/dockerino/picsur/docker-compose.yml index e2cf853..87330bb 100644 --- a/docker/dockerino/picsur/docker-compose.yml +++ b/docker/dockerino/picsur/docker-compose.yml @@ -8,9 +8,14 @@ services: ports: - "8091:8080" volumes: - - ./data:/data + - picsur-data:/data environment: - TZ: America/Sao_Paulo + - TZ=America/Sao_Paulo + +volumes: + picsur-data: + name: picsur-data + driver: local networks: default: