diff --git a/.github/workflows/build-bundles.yml b/.github/workflows/build-bundles.yml index ff2f37f75f..a8efc23fa3 100644 --- a/.github/workflows/build-bundles.yml +++ b/.github/workflows/build-bundles.yml @@ -1,28 +1,14 @@ -name: Build and Upload Penpot Bundles non-prod +name: Build and Upload Penpot Bundles on: - # Create bundler for every tag - push: - tags: - - '**' # Pattern matched against refs/tags - # Create bundler every hour between 5:00 and 20:00 on working days - schedule: - - cron: '0 5-20 * * 1-5' - # Create bundler from manual action + # Create bundle from manual action workflow_dispatch: + workflow_call: inputs: - zip_mode: - # zip_mode defines how the build artifacts are packaged: - # - 'individual': creates one ZIP file per component (frontend, backend, exporter) - # - 'all': creates a single ZIP containing all components - # - null: for the rest of cases (non-manual events) - description: 'Bundle packaging mode' - required: false - default: 'individual' - type: choice - options: - - individual - - all + gh_ref: + description: 'Name of the branch' + type: string + required: true jobs: build-bundles: @@ -38,15 +24,15 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + ref: ${{ inputs.gh_ref }} - - name: Extract somer useful variables + - name: Extract some useful variables id: vars run: | echo "commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT echo "gh_branch=${{ github.base_ref || github.ref_name }}" >> $GITHUB_OUTPUT - # Set up Docker Buildx for multi-arch build - - name: Set up Docker Buildx + - name: Set up Docker Buildx for multi-arch build uses: docker/setup-buildx-action@v3 - name: Run manage.sh build-bundle from host @@ -57,73 +43,22 @@ jobs: mkdir zips mv bundles penpot - - name: Create zip bundles for zip_mode == 'all' - if: ${{ github.event.inputs.zip_mode == 'all' }} + - name: Create zip bundles run: | - echo "📦 Packaging Penpot 'all' bundles..." - zip -r zips/penpot-all-bundles.zip penpot + echo "📦 Packaging Penpot bundles..." + zip -r zips/penpot.zip penpot - - name: Create zip bundles for zip_mode != 'all' - if: ${{ github.event.inputs.zip_mode != 'all' }} + - name: Upload Penpot bundle to S3 run: | - echo "📦 Packaging Penpot 'individual' bundles..." - zip -r zips/penpot-frontend.zip penpot/frontend - zip -r zips/penpot-backend.zip penpot/backend - zip -r zips/penpot-exporter.zip penpot/exporter + aws s3 cp zips/penpot.zip s3://${{ secrets.S3_BUCKET }}/penpot-${{ steps.vars.outputs.gh_branch}}-latest.zip + aws s3 cp zips/penpot.zip s3://${{ secrets.S3_BUCKET }}/penpot-${{ steps.vars.outputs.commit_hash }}.zip - - name: Upload unified 'all' bundle - if: ${{ github.event.inputs.zip_mode == 'all' }} - uses: actions/upload-artifact@v4 - with: - name: penpot-all-bundles - path: zips/penpot-all-bundles.zip - - - name: Upload individual bundles - if: ${{ github.event.inputs.zip_mode != 'all' }} - uses: actions/upload-artifact@v4 - with: - name: penpot-individual-bundles - path: | - zips/penpot-frontend.zip - zips/penpot-backend.zip - zips/penpot-exporter.zip - - - name: Upload unified 'all' bundle to S3 - if: ${{ github.event.inputs.zip_mode == 'all' }} - run: | - aws s3 cp zips/penpot-all-bundles.zip s3://${{ secrets.S3_BUCKET }}/penpot-all-bundles-${{ steps.vars.outputs.gh_branch}}.zip - aws s3 cp zips/penpot-all-bundles.zip s3://${{ secrets.S3_BUCKET }}/penpot-all-bundles-${{ steps.vars.outputs.commit_hash }}.zip - - - name: Upload 'individual' bundles to S3 - if: ${{ github.event.inputs.zip_mode != 'all' }} - run: | - for name in penpot-frontend penpot-backend penpot-exporter; do - aws s3 cp zips/${name}.zip s3://${{ secrets.S3_BUCKET }}/${name}-${{ steps.vars.outputs.gh_branch }}-latest.zip - aws s3 cp zips/${name}.zip s3://${{ secrets.S3_BUCKET }}/${name}-${{ steps.vars.outputs.commit_hash }}.zip - done - - - name: Notify Mattermost about automatic bundles - if: github.event_name == 'pull_request' + - name: Notify Mattermost + if: failure() uses: mattermost/action-mattermost-notify@master with: MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }} TEXT: | - 📦 *Penpot bundle automatically generated* - 📄 PR: ${{ github.event.pull_request.title }} - 🔁 From: \`${{ github.head_ref }}\` to \`{{ github.base_ref }}\` + ❌ *[PENPOT] Error during the execution of the job* + 📄 Triggered from ref: `${{ steps.vars.outputs.gh_branch}}` 🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} - - - name: Notify Mattermost about manual bundles - if: github.event_name == 'workflow_dispatch' - uses: mattermost/action-mattermost-notify@master - with: - MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }} - TEXT: | - 📦 *Penpot bundle manually generated* - 📄 Triggered from branch: `${{ github.ref_name}}` - 🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} - - - name: Print artifact summary URL - run: | - echo "📦 Artifacts available at:" - echo "🔗 https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" diff --git a/.github/workflows/build-develop.yml b/.github/workflows/build-develop.yml new file mode 100644 index 0000000000..dddcceeeb9 --- /dev/null +++ b/.github/workflows/build-develop.yml @@ -0,0 +1,12 @@ +name: Build and Upload Penpot DEVELOP Bundles + +on: + schedule: + - cron: '16 5-20 * * 1-5' + +jobs: + build-develop-bundle: + uses: ./.github/workflows/build-bundles.yml + secrets: inherit + with: + gh_ref: "develop" diff --git a/.github/workflows/build-staging.yml b/.github/workflows/build-staging.yml new file mode 100644 index 0000000000..1d49914d9c --- /dev/null +++ b/.github/workflows/build-staging.yml @@ -0,0 +1,12 @@ +name: Build and Upload Penpot STAGING Bundles + +on: + schedule: + - cron: '0 5 * * 1-5' + +jobs: + build-staging-bundle: + uses: ./.github/workflows/build-bundles.yml + secrets: inherit + with: + gh_ref: "staging"