diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..1ed7588 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,63 @@ +name: Deploy to dev.bl.pixeldev.eu + +on: + push: + branches: [main] + +jobs: + deploy: + runs-on: self-hosted + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Sync files to project directory + run: | + PROJECT="${{ github.event.repository.name }}" + DEPLOY_DIR="/opt/harbor-projects/${PROJECT}" + + mkdir -p "$DEPLOY_DIR" + rsync -av --delete \ + --exclude='.git' \ + --exclude='node_modules' \ + "$GITHUB_WORKSPACE/" "$DEPLOY_DIR/" + + echo "Synced to $DEPLOY_DIR" + + - name: Install dependencies (Node.js projects) + run: | + PROJECT="${{ github.event.repository.name }}" + DEPLOY_DIR="/opt/harbor-projects/${PROJECT}" + + if [ -f "$DEPLOY_DIR/package.json" ]; then + cd "$DEPLOY_DIR" + npm install --production + echo "npm install done" + fi + + - name: Register with Harbor (if new) + run: | + PROJECT="${{ github.event.repository.name }}" + DEPLOY_DIR="/opt/harbor-projects/${PROJECT}" + + # Check if already registered + STATUS=$(curl -sk -u admin:blaetternd-helix-dribbble124 \ + https://dev.bl.pixeldev.eu/harbor/api/projects/${PROJECT} \ + -o /dev/null -w "%{http_code}") + + if [ "$STATUS" = "404" ]; then + echo "Registering new project with Harbor..." + curl -sk -u admin:blaetternd-helix-dribbble124 \ + -X POST https://dev.bl.pixeldev.eu/harbor/api/projects \ + -H "Content-Type: application/json" \ + -d "{\"path\":\"${DEPLOY_DIR}\",\"name\":\"${PROJECT}\"}" + else + echo "Refreshing existing Harbor project..." + curl -sk -u admin:blaetternd-helix-dribbble124 \ + -X POST https://dev.bl.pixeldev.eu/harbor/api/projects/${PROJECT}/deploy + fi + + - name: Done + run: | + PROJECT="${{ github.event.repository.name }}" + echo "✅ Deployed $PROJECT to https://dev.bl.pixeldev.eu/harbor/preview/${PROJECT}/"