2022-07-23 00:39:50 +00:00
|
|
|
# .github/workflows/chromatic.yml
|
|
|
|
|
|
|
|
# Workflow name
|
|
|
|
name: 'Chromatic'
|
|
|
|
|
|
|
|
# Event for the workflow
|
2022-07-26 16:19:53 +00:00
|
|
|
on:
|
|
|
|
pull_request_target: # So we can test on forks
|
|
|
|
branches:
|
|
|
|
- main
|
|
|
|
paths:
|
|
|
|
- apps/storybook/**
|
|
|
|
- packages/ui/**
|
|
|
|
workflow_dispatch:
|
2022-07-23 00:39:50 +00:00
|
|
|
|
|
|
|
# List of jobs
|
|
|
|
jobs:
|
|
|
|
check-if-ui-has-changed:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
# Declare outputs for next jobs
|
|
|
|
outputs:
|
|
|
|
docs_changed: ${{ steps.check_file_changed.outputs.docs_changed }}
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
with:
|
|
|
|
# Checkout as many commits as needed for the diff
|
|
|
|
fetch-depth: 2
|
|
|
|
- shell: pwsh
|
|
|
|
id: check_file_changed
|
|
|
|
run: |
|
|
|
|
# Diff HEAD with the previous commit
|
|
|
|
$diff = git diff --name-only HEAD^ HEAD
|
|
|
|
|
|
|
|
# Check if a file under /packages/ui or apps/storybook has been modified since the previous commit
|
|
|
|
$SourceDiff = $diff | Where-Object { $_ -match '^packages/ui/' -or $_ -match '^apps/storybook/' }
|
|
|
|
$HasDiff = $SourceDiff.Length -gt 0
|
|
|
|
|
|
|
|
# Set the output named "hasUiChanges"
|
|
|
|
Write-Host "::set-output name=hasUiChanges::$HasDiff"
|
|
|
|
chromatic-deployment:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [ check-if-ui-has-changed ]
|
|
|
|
if: needs.checkIfUiHasChanged.outputs.hasUiChanges== 'True'
|
|
|
|
steps:
|
|
|
|
- name: Checkout repository
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
with:
|
2022-07-26 16:19:53 +00:00
|
|
|
ref: ${{ github.event.pull_request.head.sha }} # So we can test on forks
|
|
|
|
fetch-depth: 2
|
2022-07-23 00:39:50 +00:00
|
|
|
- name: Install dependencies
|
|
|
|
run: yarn
|
|
|
|
# 👇 Adds Chromatic as a step in the workflow
|
|
|
|
- name: Publish to Chromatic
|
|
|
|
uses: chromaui/action@v1
|
|
|
|
# Options required to the GitHub Chromatic Action
|
|
|
|
with:
|
|
|
|
# 👇 Chromatic projectToken, refer to the manage page to obtain it.
|
|
|
|
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
|