name: Plugins/package deployer on: # Deploy package from manual action workflow_dispatch: inputs: gh_ref: description: 'Name of the branch' type: choice required: true default: 'develop' options: - develop - staging - main plugin_name: description: 'Pluging name (like plugins/apps/-plugin)' type: string required: true workflow_call: inputs: gh_ref: description: 'Name of the branch' type: string required: true default: 'develop' plugin_name: description: 'Publig name (from plugins/apps/-plugin)' type: string required: true permissions: contents: read jobs: deploy: runs-on: penpot-runner-01 steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ inputs.gh_ref }} # START: Setup Node and PNPM enabling cache - name: Setup Node.js uses: actions/setup-node@v6 with: node-version-file: .nvmrc - name: Enable PNPM working-directory: ./plugins shell: bash run: | corepack enable; corepack install; - name: Get pnpm store path id: pnpm-store working-directory: ./plugins shell: bash run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT - name: Cache pnpm store uses: actions/cache@v4 with: path: ${{ steps.pnpm-store.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-${{ hashFiles('plugins/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm- # END: Setup Node and PNPM enabling cache - name: Install deps working-directory: ./plugins shell: bash run: | pnpm install --no-frozen-lockfile; pnpm add -D -w wrangler@latest; - name: "Build package for ${{ inputs.plugin_name }}-plugin" working-directory: plugins shell: bash run: npx nx build ${{ inputs.plugin_name }}-plugin - name: Select Worker name run: | REF="${{ inputs.gh_ref }}" case "$REF" in main) echo "WORKER_NAME=${{ inputs.plugin_name }}-plugin-pro" >> $GITHUB_ENV echo "WORKER_URI=${{ inputs.plugin_name }}.plugins.penpot.app" >> $GITHUB_ENV ;; staging) echo "WORKER_NAME=${{ inputs.plugin_name }}-plugin-pre" >> $GITHUB_ENV echo "WORKER_URI=${{ inputs.plugin_name }}.plugins.penpot.dev" >> $GITHUB_ENV ;; develop) echo "WORKER_NAME=${{ inputs.plugin_name }}-plugin-hourly" >> $GITHUB_ENV echo "WORKER_URI=${{ inputs.plugin_name }}.plugins.hourly.penpot.dev" >> $GITHUB_ENV ;; *) echo "Unsupported branch ${REF}" && exit 1 ;; esac - name: Set the custom url working-directory: plugins shell: bash run: | sed -i "s/WORKER_URI/${{ env.WORKER_URI }}/g" apps/${{ inputs.plugin_name }}-plugin/wrangler.toml - name: Deploy to Cloudflare Workers uses: cloudflare/wrangler-action@v3 with: workingDirectory: plugins apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deploy --config apps/${{ inputs.plugin_name }}-plugin/wrangler.toml --name ${{ env.WORKER_NAME }} - name: Notify Mattermost if: failure() uses: mattermost/action-mattermost-notify@master with: MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }} MATTERMOST_CHANNEL: bot-alerts-cicd TEXT: | ❌ 🧩📦 *[PENPOT PLUGINS] Error deploying ${{ env.WORKER_NAME }}.* 📄 Triggered from ref: `${{ inputs.gh_ref }}` Plugin name: `${{ inputs.plugin_name }}-plugin` Cloudflare worker name: `${{ env.WORKER_NAME }}` 🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} @infra