diff --git a/.gitea/workflows/miniapp-preview.yml b/.gitea/workflows/miniapp-preview.yml index 52f4827..077b296 100644 --- a/.gitea/workflows/miniapp-preview.yml +++ b/.gitea/workflows/miniapp-preview.yml @@ -4,10 +4,13 @@ on: push: branches: - main + paths: + - "mini/**" + - ".gitea/workflows/miniapp-preview.yml" jobs: publish: - runs-on: ubuntu-latest + runs-on: hk steps: - uses: https://gitea.neatcn.com/gouki/action-checkout@v4 with: diff --git a/.gitea/workflows/server-deploy.yml b/.gitea/workflows/server-deploy.yml new file mode 100644 index 0000000..830dd92 --- /dev/null +++ b/.gitea/workflows/server-deploy.yml @@ -0,0 +1,78 @@ +name: Build and Deploy Server + +on: + push: + branches: + - main + paths: + - "server/**" + - ".gitea/workflows/server-deploy.yml" + +jobs: + build: + runs-on: hk + steps: + - uses: https://gitea.neatcn.com/gouki/action-checkout@v4 + with: + fetch-depth: 20 + + - name: Setup Go + uses: https://gitea.neatcn.com/gouki/action-setup-go@v4 + with: + go-version: '1.22' + + - name: Verify Go runtime + run: go version + + - name: Install dependencies + working-directory: server + run: go mod download + + - name: Run tests + working-directory: server + run: go test ./... + + - name: Build application + working-directory: server + run: | + mkdir -p bin + go build -o bin/server cmd/main.go + + - name: Build frontend (if exists) + working-directory: server + run: | + if [ -d "web" ]; then + echo "Building frontend..." + cd web + if [ -f "package.json" ]; then + npm ci + npm run build + fi + else + echo "No frontend directory found, skipping frontend build" + fi + + - name: Create deployment package + working-directory: server + run: | + mkdir -p deploy + cp -r bin/ deploy/ + cp -r migrations/ deploy/ + cp -r scripts/ deploy/ + if [ -d "web/dist" ]; then + cp -r web/dist/ deploy/public/ + fi + tar -czf deploy.tar.gz deploy/ + + - name: Upload deployment artifact + uses: https://gitea.neatcn.com/gouki/action-upload-artifact@v3 + with: + name: server-deploy + path: server/deploy.tar.gz + retention-days: 7 + + - name: Cleanup + if: always() + run: | + rm -rf server/deploy/ + rm -f server/deploy.tar.gz