Skip to content

Deploy to GitHub Pages #208

Deploy to GitHub Pages

Deploy to GitHub Pages #208

Workflow file for this run

name: Deploy to GitHub Pages
on:
# Trigger the workflow every time you push to the `main` branch or manually from the Actions tab
push:
branches:
- main
- test
# Allows you to run this workflow manually from the Actions tab on GitHub.
workflow_dispatch:
# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
packages: write
pages: write
id-token: write
jobs:
lint_and_test:
name: 🧹 Lint and Test 🧪
environment:
name: github-pages
runs-on: ubuntu-latest
steps:
- name: Checkout current branch using git
uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml
- name: Install dependencies
run: pnpm install
- name: Lint code
run: pnpm run lint
- name: Install browser binaries
run: npx playwright install --with-deps
- name: Run tests
run: pnpm test
build_main_docs:
needs: lint_and_test
name: 📖 Build Main Docs 🏗️
environment:
name: github-pages
runs-on: ubuntu-latest
steps:
- name: Checkout main branch using git
uses: actions/checkout@v3
with:
ref: main
- name: Restore build files
if: github.event.ref != 'refs/heads/main'
id: cache-main-dist
uses: actions/cache/restore@v3
with:
path: ./packages/kite-chat-docs/dist
key: ${{ runner.os }}-dist-main-${{ hashFiles('./package-lock.json') }}
- name: List Cached Files
if: steps.cache-main-dist.outputs.cache-hit == 'true'
run: ls -l ./packages/kite-chat-docs/dist
- name: Set up Node.js
if: steps.cache-main-dist.outputs.cache-hit != 'true'
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
cache-dependency-path: package-lock.json
- name: Install dependencies
if: steps.cache-main-dist.outputs.cache-hit != 'true'
run: npm install && npm install --save-dev @pagefind/linux-x64 -w @pragmasoft-ukraine/kite-chat-component
- name: Build Docs
if: steps.cache-main-dist.outputs.cache-hit != 'true'
run: npm run build -w @pragmasoft-ukraine/kite-chat-docs
- name: Save build files
if: steps.cache-main-dist.outputs.cache-hit != 'true'
uses: actions/cache/save@v3
id: cache
with:
path: ./packages/kite-chat-docs/dist
key: ${{ runner.os }}-dist-main-${{ hashFiles('./package-lock.json') }}
- name: Upload Main Docs Artifact
uses: actions/upload-artifact@v3
with:
name: main-dist
path: ./packages/kite-chat-docs/dist/
build_test_docs:
name: 📝 Build Test Docs 🏗️
environment:
name: github-pages
needs: build_main_docs
runs-on: ubuntu-latest
steps:
- name: Checkout test branch using git
uses: actions/checkout@v3
with:
ref: test
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Restore main build files
uses: actions/download-artifact@v3
with:
name: main-dist
path: ./packages/kite-chat-docs/dist
- name: Restore build files
if: github.event.ref != 'refs/heads/test'
id: cache-test-dist
uses: actions/cache/restore@v3
with:
path: ./packages/kite-chat-docs/dist/test
key: ${{ runner.os }}-dist-test-${{ hashFiles('./pnpm-lock.yaml') }}
- name: List Cached Files
if: steps.cache-test-dist.outputs.cache-hit == 'true'
run: ls -l ./packages/kite-chat-docs/dist/test
- name: Set up Node.js
if: steps.cache-test-dist.outputs.cache-hit != 'true'
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml
- name: Install dependencies
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: pnpm install && pnpm add -F=@pragmasoft-ukraine/kite-chat-component @pagefind/linux-x64
- name: Build Kite Chat component
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat-component run build
- name: Build Kite Chat
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat run build
- name: Analyze Component
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: pnpm run analyze
- name: Build Docs for Test
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat-docs run build:test
- name: Save build files
if: steps.cache-test-dist.outputs.cache-hit != 'true'
uses: actions/cache/save@v3
id: save-test-dist
with:
path: ./packages/kite-chat-docs/dist/test
key: ${{ runner.os }}-dist-test-${{ hashFiles('./pnpm-lock.yaml') }}
- name: Upload Pages Artifact
uses: actions/upload-pages-artifact@v2
with:
path: ./packages/kite-chat-docs/dist/
publish_packages:
if: github.event.ref == 'refs/heads/main'
needs: lint_and_test
name: 📦 Publish Packages 📤
runs-on: ubuntu-latest
environment:
name: github-pages
steps:
- name: Checkout main branch using git
uses: actions/checkout@v3
with:
ref: main
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://registry.pnpmjs.org'
- name: Install dependencies
run: pnpm install
- name: Check version - Kite Chat Component
run: |
current_version=$(cat ./packages/kite-chat-component/package.json | jq -r '.version')
pnpm_version=$(pnpm show @pragmasoft-ukraine/kite-chat-component version)
echo "current_version=$current_version"
echo "pnpm_version=$pnpm_version"
if [ "$current_version" == "$pnpm_version" ]; then
echo "equal=true" >> "$GITHUB_OUTPUT"
else
echo "equal=false" >> "$GITHUB_OUTPUT"
fi
id: check-version-component
- name: Check version - Kite Chat
run: |
current_version=$(cat ./packages/kite-chat/package.json | jq -r '.version')
pnpm_version=$(pnpm show @pragmasoft-ukraine/kite-chat version)
echo "current_version=$current_version"
echo "pnpm_version=$pnpm_version"
if [ "$current_version" == "$pnpm_version" ]; then
echo "equal=true" >> "$GITHUB_OUTPUT"
else
echo "equal=false" >> "$GITHUB_OUTPUT"
fi
id: check-version
- name: Build Kite Chat component
if: steps.check-version-component.outputs.equal != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat-component run build
- name: Build Kite Chat
if: steps.check-version.outputs.equal != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat run build
- name: Analyze Component
if: steps.check-version-component.outputs.equal != 'true'
run: pnpm run analyze
- name: Publish to pnpm - Kite Chat Component
if: steps.check-version-component.outputs.equal != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat-component publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Publish to pnpm - Kite Chat
if: steps.check-version.outputs.equal != 'true'
run: pnpm -F=@pragmasoft-ukraine/kite-chat publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
deploy_docs:
name: 🚚 Deploy Docs 📄
needs: [build_main_docs, build_test_docs]
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy Docs to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2