Publish core-react storybook #983
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish core-react storybook | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| environment: | |
| description: 'Environment for the core-react storybook' | |
| required: false | |
| type: choice | |
| options: | |
| - production | |
| - development | |
| default: 'production' | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'packages/eds-core-react/**' | |
| - 'packages/eds-tokens/**' | |
| - 'packages/eds-icons/**' | |
| permissions: | |
| id-token: write | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| jobs: | |
| setup: | |
| uses: ./.github/workflows/_setup.yml | |
| secrets: inherit | |
| with: | |
| cacheKey: ${{ github.sha }} | |
| checkout_paths: packages apps scripts | |
| packages: | |
| name: Process packages | |
| runs-on: ubuntu-latest | |
| needs: [setup] | |
| steps: | |
| - name: Use "setup" cache | |
| id: get-setup-cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ./* | |
| ~/.pnpm-store | |
| key: ${{ github.sha }} | |
| - name: Install Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22.12.0' | |
| - name: Setup pnpm | |
| id: setup-pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| run_install: false | |
| - name: Build packages | |
| id: build-packages | |
| run: pnpm run build | |
| - name: Build Storybook | |
| id: build-storybook | |
| run: | | |
| echo Running build:storybook! | |
| pnpm build:storybook | |
| - name: Upload storybook build | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: storybook-build | |
| path: packages/eds-core-react/storybook-build | |
| retention-days: 1 | |
| publish-storybook: | |
| needs: [setup, packages] | |
| name: Build & Deploy Website | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: ${{ github.event.inputs.environment || 'development' }} | |
| steps: | |
| - name: Download storybook build | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: storybook-build | |
| path: packages/eds-core-react/storybook-build | |
| - name: Debug - List downloaded files | |
| run: | | |
| echo "=== Downloaded files ===" | |
| ls -la packages/eds-core-react/storybook-build/ | |
| echo "" | |
| echo "=== Checking index.json for Foundation/Spacing ===" | |
| if grep -q "foundation-spacing--selectable-padding" packages/eds-core-react/storybook-build/index.json; then | |
| echo "✅ Foundation/Spacing SelectablePadding FOUND in index.json" | |
| else | |
| echo "❌ Foundation/Spacing SelectablePadding NOT FOUND in index.json" | |
| fi | |
| echo "" | |
| echo "=== All Foundation/Spacing entries ===" | |
| grep -o '"foundation-spacing--[^"]*"' packages/eds-core-react/storybook-build/index.json || echo "No Foundation/Spacing entries found" | |
| - name: Az CLI login 🔑 | |
| uses: azure/login@v1 | |
| with: | |
| client-id: d58b2e85-2d34-4cdb-ad70-5f2b767dd8e2 | |
| tenant-id: 3aa4a235-b6e2-48d5-9195-7fcf05b459b0 | |
| allow-no-subscriptions: true | |
| - name: Delete all existing blobs to ensure clean deployment 🗑️ | |
| env: | |
| AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZ_STORYBOOK_CONNECTION_STRING }} | |
| run: | | |
| set -euo pipefail | |
| echo "Checking existing blobs in container '\$web'..." | |
| BLOB_COUNT=$(az storage blob list \ | |
| --container-name '$web' \ | |
| --connection-string "$AZURE_STORAGE_CONNECTION_STRING" \ | |
| --query 'length(@)' \ | |
| --output tsv) | |
| if [ "$BLOB_COUNT" -eq 0 ]; then | |
| echo "Container already empty." | |
| else | |
| echo "Deleting $BLOB_COUNT blobs..." | |
| az storage blob delete-batch \ | |
| --source '$web' \ | |
| --pattern "*" \ | |
| --connection-string "$AZURE_STORAGE_CONNECTION_STRING" \ | |
| --output none | |
| echo "Deletion request submitted." | |
| fi | |
| REMAINING=$(az storage blob list \ | |
| --container-name '$web' \ | |
| --connection-string "$AZURE_STORAGE_CONNECTION_STRING" \ | |
| --query 'length(@)' \ | |
| --output tsv) | |
| echo "✅ Blob deletion completed. Remaining blobs: $REMAINING" | |
| - name: Deploy to Azure Blob Storage 🚀 | |
| id: deploy-website | |
| env: | |
| AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZ_STORYBOOK_CONNECTION_STRING }} | |
| run: | | |
| set -euo pipefail | |
| echo "Deploying to Azure Blob Storage..." | |
| # Verify source directory exists and has content | |
| if [ ! -d "packages/eds-core-react/storybook-build" ]; then | |
| echo "❌ Error: storybook-build directory not found" | |
| exit 1 | |
| fi | |
| FILE_COUNT=$(find packages/eds-core-react/storybook-build -type f | wc -l) | |
| echo "Uploading $FILE_COUNT files..." | |
| az storage blob upload-batch \ | |
| --destination '$web' \ | |
| --source packages/eds-core-react/storybook-build \ | |
| --overwrite \ | |
| --connection-string "$AZURE_STORAGE_CONNECTION_STRING" | |
| # Verify upload | |
| UPLOADED=$(az storage blob list \ | |
| --container-name '$web' \ | |
| --connection-string "$AZURE_STORAGE_CONNECTION_STRING" \ | |
| --query 'length(@)' \ | |
| --output tsv) | |
| echo "✅ Deployment completed successfully. Total blobs in container: $UPLOADED" | |
| - name: logout 🔓 | |
| run: az logout | |
| if: always() | |
| - name: log-errors-to-slack | |
| uses: act10ns/slack@v2 | |
| with: | |
| status: ${{ job.status }} | |
| steps: ${{ toJson(steps) }} | |
| if: failure() | |
| purge-cdn: | |
| needs: [publish-storybook] | |
| if: github.event.inputs.environment == 'production' | |
| name: Purge cdn | |
| uses: ./.github/workflows/_purge_cdn.yaml | |
| secrets: inherit | |
| with: | |
| environment: production | |
| endpoint: storybook |