feat: add lint and test job #98
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 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Install dependencies | |
run: npm install | |
- name: Lint code | |
run: npm run lint | |
- name: Run tests | |
run: npm 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 | |
- name: Cache node modules | |
if: steps.cache-main-dist.outputs.cache-hit != 'true' | |
id: cache-node-modules | |
uses: actions/cache@v3 | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-modules-main-${{ hashFiles('./package-lock.json') }} | |
- name: Install dependencies | |
if: steps.cache-main-dist.outputs.cache-hit != 'true' && steps.cache-node-modules.outputs.cache-hit != 'true' | |
run: npm install -w @pragmasoft-ukraine/kite-chat-docs | |
- name: Analyze Component | |
if: steps.cache-main-dist.outputs.cache-hit != 'true' | |
run: npm run analyze | |
- 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 Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: main-dist | |
path: ./packages/kite-chat-docs/dist/ | |
- name: Upload Kite Chat Component Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: kite-chat-component | |
path: ./packages/kite-chat-component | |
- name: Upload Kite Chat Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: kite-chat | |
path: ./packages/kite-chat | |
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 | |
- 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('./package-lock.json') }} | |
- 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 | |
- name: Cache node modules | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' | |
id: cache-node-modules | |
uses: actions/cache@v3 | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-modules-test-${{ hashFiles('./package-lock.json') }} | |
- name: Install dependencies | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' && steps.cache-node-modules.outputs.cache-hit != 'true' | |
run: npm install | |
- name: Build Kite Chat component | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' | |
run: npm run build -w @pragmasoft-ukraine/kite-chat-component | |
- name: Build Kite Chat | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' | |
run: npm run build -w @pragmasoft-ukraine/kite-chat | |
- name: Analyze Component | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' | |
run: npm run analyze | |
- name: Build Docs for Test | |
if: steps.cache-test-dist.outputs.cache-hit != 'true' | |
run: npm run build:test -w @pragmasoft-ukraine/kite-chat-docs | |
- 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('./package-lock.json') }} | |
- name: Upload Pages Artifact | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: ./packages/kite-chat-docs/dist/ | |
publish_packages: | |
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 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
registry-url: 'https://registry.npmjs.org' | |
- name: Install dependencies | |
run: npm install | |
- name: Check version - Kite Chat Component | |
run: | | |
current_version=$(cat ./packages/kite-chat-component/package.json | jq -r '.version') | |
npm_version=$(npm view @pragmasoft-ukraine/kite-chat-component version) | |
echo "current_version=$current_version" | |
echo "npm_version=$npm_version" | |
if [ "$current_version" == "$npm_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') | |
npm_version=$(npm view @pragmasoft-ukraine/kite-chat version) | |
echo "current_version=$current_version" | |
echo "npm_version=$npm_version" | |
if [ "$current_version" == "$npm_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: npm run build -w @pragmasoft-ukraine/kite-chat-component | |
- name: Build Kite Chat | |
if: steps.check-version.outputs.equal != 'true' | |
run: npm run build -w @pragmasoft-ukraine/kite-chat | |
- name: Analyze Component | |
if: steps.check-version-component.outputs.equal != 'true' | |
run: npm run analyze | |
- name: Publish to npm - Kite Chat Component | |
if: steps.check-version-component.outputs.equal != 'true' | |
run: npm publish --access public -w @pragmasoft-ukraine/kite-chat-component | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
- name: Publish to npm - Kite Chat | |
if: steps.check-version.outputs.equal != 'true' | |
run: npm publish --access public -w @pragmasoft-ukraine/kite-chat | |
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 |