Deploy Docs to GitHub Pages #1
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: Deploy Demo to GitHub Pages | |
| on: | |
| # Trigger on all releases (including pre-releases) | |
| release: | |
| types: [published] | |
| # Allow manual deployment | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Package version to use in demo (leave empty for latest)' | |
| required: false | |
| type: string | |
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| # Allow only one concurrent deployment | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| build: | |
| name: Build Demo | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node 20 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: demo/package-lock.json | |
| - name: Get version to deploy | |
| id: version | |
| run: | | |
| if [ -n "${{ github.event.inputs.version }}" ]; then | |
| # Manual workflow dispatch with version | |
| VERSION="${{ github.event.inputs.version }}" | |
| elif [ "${{ github.event_name }}" == "release" ]; then | |
| # Release event - use the tag name (remove 'v' prefix if present) | |
| VERSION="${{ github.event.release.tag_name }}" | |
| VERSION="${VERSION#v}" | |
| else | |
| # Fallback to package.json version | |
| VERSION=$(node -p "require('./package.json').version") | |
| fi | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "Deploying demo with version: $VERSION" | |
| - name: Update demo package version | |
| working-directory: ./demo | |
| run: | | |
| VERSION="${{ steps.version.outputs.version }}" | |
| echo "Updating react-lite-youtube-embed to version $VERSION" | |
| # Update package.json with new version | |
| npm install react-lite-youtube-embed@$VERSION --save --package-lock-only | |
| # Show what version was installed | |
| INSTALLED_VERSION=$(node -p "require('./package.json').dependencies['react-lite-youtube-embed']") | |
| echo "Updated to version: $INSTALLED_VERSION" | |
| - name: Install demo dependencies | |
| working-directory: ./demo | |
| run: npm ci | |
| - name: Build demo | |
| working-directory: ./demo | |
| env: | |
| NODE_ENV: production | |
| run: npm run build | |
| - name: Add .nojekyll file | |
| working-directory: ./demo | |
| run: touch out/.nojekyll | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: ./demo/out | |
| deploy: | |
| name: Deploy to GitHub Pages | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 | |
| - name: Create deployment summary | |
| run: | | |
| echo "## π Demo Deployed Successfully!" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### π Live Demo" >> $GITHUB_STEP_SUMMARY | |
| echo "- **URL**: ${{ steps.deployment.outputs.page_url }}" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| if [ "${{ github.event_name }}" == "release" ]; then | |
| echo "### π¦ Release Information" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Version**: ${{ github.event.release.tag_name }}" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Release**: [${{ github.event.release.name }}](${{ github.event.release.html_url }})" >> $GITHUB_STEP_SUMMARY | |
| if [ "${{ github.event.release.prerelease }}" == "true" ]; then | |
| echo "- **Type**: Pre-release π§ͺ" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "- **Type**: Stable Release β " >> $GITHUB_STEP_SUMMARY | |
| fi | |
| fi |