Deploy to GitHub Pages #208
This file contains 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 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 |