2023-04-04 09:38:34 +09:00
name : Storybook
on :
push :
2023-05-09 00:14:42 +09:00
branches :
- master
- develop
pull_request_target :
2023-04-04 09:38:34 +09:00
jobs :
build :
runs-on : ubuntu-latest
2023-04-07 20:34:23 +09:00
env :
NODE_OPTIONS : "--max_old_space_size=7168"
2023-04-04 09:38:34 +09:00
steps :
- uses : actions/checkout@v3.3.0
2023-05-17 16:39:36 +09:00
if : github.event_name != 'pull_request_target'
2023-04-04 09:38:34 +09:00
with :
fetch-depth : 0
submodules : true
2023-05-17 16:39:36 +09:00
- uses : actions/checkout@v3.3.0
if : github.event_name == 'pull_request_target'
with :
fetch-depth : 0
submodules : true
ref : "refs/pull/${{ github.event.number }}/merge"
- name : Checkout actual HEAD
2023-05-10 19:33:49 +09:00
if : github.event_name == 'pull_request_target'
2023-05-18 14:16:07 +09:00
id : rev
run : |
echo "base=$(git rev-list --parents -n1 HEAD | cut -d" " -f2)" >> $GITHUB_OUTPUT
git checkout $(git rev-list --parents -n1 HEAD | cut -d" " -f3)
2023-04-04 09:38:34 +09:00
- name : Install pnpm
uses : pnpm/action-setup@v2
with :
2023-04-27 00:17:40 +09:00
version : 8
2023-04-04 09:38:34 +09:00
run_install : false
- name : Use Node.js 18.x
uses : actions/setup-node@v3.6.0
with :
2023-04-15 10:20:39 +09:00
node-version-file : '.node-version'
2023-04-04 09:38:34 +09:00
cache : 'pnpm'
- run : corepack enable
- run : pnpm i --frozen-lockfile
- name : Check pnpm-lock.yaml
run : git diff --exit-code pnpm-lock.yaml
- name : Build misskey-js
run : pnpm --filter misskey-js build
- name : Build storybook
run : pnpm --filter frontend build-storybook
2023-04-07 20:34:23 +09:00
- name : Publish to Chromatic
2023-05-10 19:33:49 +09:00
if : github.event_name != 'pull_request_target' && github.ref == 'refs/heads/master'
2023-04-07 20:34:23 +09:00
run : pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static
2023-04-04 09:38:34 +09:00
env :
2023-04-07 20:34:23 +09:00
CHROMATIC_PROJECT_TOKEN : ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
2023-04-04 09:38:34 +09:00
- name : Publish to Chromatic
2023-05-10 19:33:49 +09:00
if : github.event_name != 'pull_request_target' && github.ref != 'refs/heads/master'
2023-05-09 00:14:42 +09:00
id : chromatic_push
2023-04-07 20:34:23 +09:00
run : |
2023-04-08 16:16:10 +09:00
DIFF="${{ github.event.before }} HEAD"
if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then
DIFF="HEAD"
fi
CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r $(echo "$DIFF") | xargs))"
2023-04-07 20:34:23 +09:00
if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then
echo "skip=true" >> $GITHUB_OUTPUT
fi
2023-05-11 22:20:26 +09:00
if pnpm --filter frontend chromatic -d storybook-static $(echo "$CHROMATIC_PARAMETER"); then
echo "success=true" >> $GITHUB_OUTPUT
2023-05-11 22:21:48 +09:00
else
echo "success=false" >> $GITHUB_OUTPUT
2023-05-11 22:20:26 +09:00
fi
2023-04-04 09:38:34 +09:00
env :
CHROMATIC_PROJECT_TOKEN : ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
2023-05-09 00:14:42 +09:00
- name : Publish to Chromatic
2023-05-10 19:33:49 +09:00
if : github.event_name == 'pull_request_target'
2023-05-09 00:14:42 +09:00
id : chromatic_pull_request
run : |
2023-05-18 14:16:07 +09:00
DIFF="${{ steps.rev.outputs.base }} HEAD"
2023-05-09 00:14:42 +09:00
if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then
DIFF="HEAD"
fi
CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r $(echo "$DIFF") | xargs))"
if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then
echo "skip=true" >> $GITHUB_OUTPUT
fi
pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static $(echo "$CHROMATIC_PARAMETER")
env :
CHROMATIC_PROJECT_TOKEN : ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
2023-05-11 22:20:26 +09:00
- name : Notify that Chromatic detects changes
uses : actions/github-script@v6.4.0
if : github.event_name != 'pull_request_target' && steps.chromatic_push.outputs.success == 'false'
with :
github-token : ${{ secrets.GITHUB_TOKEN }}
script : |
github.rest.repos.createCommitComment({
owner : context.repo.owner,
repo : context.repo.repo,
commit_sha : context.sha,
body : 'Chromatic detects changes. Please [review the changes on Chromatic](https://www.chromatic.com/builds?appId=6428f7d7b962f0b79f97d6e4).'
})
2023-04-07 20:34:23 +09:00
- name : Notify that Chromatic will skip testing
uses : actions/github-script@v6.4.0
2023-05-10 19:33:49 +09:00
if : github.event_name == 'pull_request_target' && steps.chromatic_pull_request.outputs.skip == 'true'
2023-04-07 20:34:23 +09:00
with :
github-token : ${{ secrets.GITHUB_TOKEN }}
script : |
2023-05-09 00:14:42 +09:00
github.rest.issues.createComment({
issue_number : context.issue.number,
2023-04-07 20:34:23 +09:00
owner : context.repo.owner,
repo : context.repo.repo,
body : 'Chromatic will skip testing but you may still have to [review the changes on Chromatic](https://www.chromatic.com/pullrequests?appId=6428f7d7b962f0b79f97d6e4).'
})
2023-04-04 09:38:34 +09:00
- name : Upload Artifacts
uses : actions/upload-artifact@v3
with :
name : storybook
path : packages/frontend/storybook-static