diff --git a/.github/workflows/build-bundles.yml b/.github/workflows/build-bundles.yml index d4e31e6019..d7bb12ecbd 100644 --- a/.github/workflows/build-bundles.yml +++ b/.github/workflows/build-bundles.yml @@ -1,12 +1,19 @@ - - name: Build and Upload Penpot Bundles on: workflow_dispatch: - push: - branches: - - github-actions-bundle-build + inputs: + zip_mode: + description: 'Bundle packaging mode' + required: false + default: 'individual' + type: choice + options: + - individual + - all + +env: + ZIP_MODE: ${{ github.event.inputs.zip_mode }} jobs: build-bundles: @@ -32,32 +39,62 @@ jobs: - name: Run manage.sh build-bundle from host run: ./manage.sh build-bundle - - name: Create global README and package all bundles + - name: Create README and zip bundles run: | - echo "# Penpot Bundles" > bundles/README.md - echo "" >> bundles/README.md - echo "This package contains the automatically built Penpot artifacts (frontend, backend, and exporter) from the official repository." >> bundles/README.md - echo "" >> bundles/README.md - echo "## Contents" >> bundles/README.md - echo "" >> bundles/README.md - echo "- frontend/: Compiled frontend files of Penpot." >> bundles/README.md - echo "- backend/: Backend build artifacts of Penpot." >> bundles/README.md - echo "- exporter/: Module responsible for exporting resources from Penpot." >> bundles/README.md - echo "- README.md: This file." >> bundles/README.md - echo "" >> bundles/README.md - echo "## Usage" >> bundles/README.md - echo "" >> bundles/README.md - echo "1. Unzip the \"penpot-all-bundles.zip\" archive in your target environment." >> bundles/README.md - echo "2. Explore each subdirectory and follow the appropriate deployment steps for frontend, backend, and exporter based on your infrastructure." >> bundles/README.md - echo "3. You can use servers like NGINX to serve the frontend and Dockerized or custom environments to run backend/exporter services." >> bundles/README.md + echo "📦 Generating bundle documentation and packaging..." - cd bundles - mkdir all-in-one - cp -r ../frontend ../backend ../exporter README.md all-in-one/ - zip -r penpot-all-bundles.zip all-in-one + mkdir -p bundles - - name: Upload all-in-one bundle + echo "# Penpot Frontend Bundle" > frontend/README.md + echo "This bundle contains the compiled frontend of Penpot. To deploy, serve it via a static file server like NGINX." >> frontend/README.md + + echo "# Penpot Backend Bundle" > backend/README.md + echo "This bundle contains the backend services of Penpot. Deploy in a containerized or server environment supporting Clojure/Java." >> backend/README.md + + echo "# Penpot Exporter Bundle" > exporter/README.md + echo "This bundle includes Penpot's export service. Use alongside backend for complete document conversion features." >> exporter/README.md + + if [[ "${ZIP_MODE}" == "all" ]]; then + echo "Creating unified penpot-all-bundles.zip" + cp -r frontend backend exporter bundles/ + echo "# Penpot Bundles" > bundles/README.md + echo "" >> bundles/README.md + echo "This package contains all Penpot components: frontend, backend, and exporter." >> bundles/README.md + echo "Refer to each subdirectory for specific deployment instructions." >> bundles/README.md + cd bundles + mkdir all-in-one + mv frontend backend exporter README.md all-in-one/ + zip -r penpot-all-bundles.zip all-in-one + else + echo "Creating individual zip files" + zip -r frontend.zip frontend + zip -r backend.zip backend + zip -r exporter.zip exporter + + - name: Upload unified bundle + if: env.ZIP_MODE == 'all' uses: actions/upload-artifact@v4 with: name: penpot-all-bundles path: bundles/penpot-all-bundles.zip + + - name: Upload frontend bundle + if: env.ZIP_MODE != 'all' + uses: actions/upload-artifact@v4 + with: + name: frontend-bundle + path: frontend.zip + + - name: Upload backend bundle + if: env.ZIP_MODE != 'all' + uses: actions/upload-artifact@v4 + with: + name: backend-bundle + path: backend.zip + + - name: Upload exporter bundle + if: env.ZIP_MODE != 'all' + uses: actions/upload-artifact@v4 + with: + name: exporter-bundle + path: exporter.zip \ No newline at end of file