Kevinburkesegment patch 1 1 #2
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
# Only runs if anything under the packages/ directory changes. | |
# (Otherwise detect-breaking-changes-build-skip.yml takes over) | |
name: Levitate / Detect breaking changes | |
on: | |
pull_request: | |
paths: | |
- 'packages/**' | |
branches: | |
- 'main' | |
jobs: | |
buildPR: | |
name: Build PR | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: './pr' | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
path: './pr' | |
- uses: actions/setup-node@v3.5.1 | |
with: | |
node-version: 16.16.0 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- name: Restore yarn cache | |
uses: actions/cache@v3.3.1 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: yarn-cache-folder-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }} | |
restore-keys: | | |
yarn-cache-folder- | |
- name: Install dependencies | |
run: yarn install --immutable | |
- name: Build packages | |
run: yarn packages:build | |
- name: Pack packages | |
run: yarn packages:pack --out ./%s.tgz | |
- name: Zip built tarballed packages | |
run: zip -r ./pr_built_packages.zip ./packages/**/*.tgz | |
- name: Upload build output as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: buildPr | |
path: './pr/pr_built_packages.zip' | |
buildBase: | |
name: Build Base | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: './base' | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
path: './base' | |
ref: ${{ github.event.pull_request.base.ref }} | |
- uses: actions/setup-node@v3.5.1 | |
with: | |
node-version: 16.16.0 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- name: Restore yarn cache | |
uses: actions/cache@v3.3.1 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: yarn-cache-folder-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }} | |
restore-keys: | | |
yarn-cache-folder- | |
- name: Install dependencies | |
run: yarn install --immutable | |
- name: Build packages | |
run: yarn packages:build | |
- name: Pack packages | |
run: yarn packages:pack --out ./%s.tgz | |
- name: Zip built tarballed packages | |
run: zip -r ./base_built_packages.zip ./packages/**/*.tgz | |
- name: Upload build output as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: buildBase | |
path: './base/base_built_packages.zip' | |
Detect: | |
name: Detect breaking changes | |
runs-on: ubuntu-latest | |
needs: ['buildPR', 'buildBase'] | |
env: | |
GITHUB_STEP_NUMBER: 8 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get built packages from pr | |
uses: actions/download-artifact@v3 | |
with: | |
name: buildPr | |
- name: Get built packages from base | |
uses: actions/download-artifact@v3 | |
with: | |
name: buildBase | |
- name: Unzip artifact from pr | |
run: unzip -j pr_built_packages.zip -d ./pr && rm pr_built_packages.zip | |
- name: Unzip artifact from base | |
run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip | |
- name: Get link for the Github Action job | |
id: job | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const name = 'Detect breaking changes'; | |
const script = require('./.github/workflows/scripts/pr-get-job-link.js') | |
await script({name, github, context, core}) | |
- name: Detect breaking changes | |
id: breaking-changes | |
run: ./scripts/check-breaking-changes.sh | |
env: | |
FORCE_COLOR: 3 | |
GITHUB_JOB_LINK: ${{ steps.job.outputs.link }} | |
- name: Persisting the check output | |
run: | | |
mkdir -p ./levitate | |
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json | |
- name: Upload check output as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: levitate | |
path: levitate/ | |
- name: Exit | |
run: exit ${{ steps.breaking-changes.outputs.is_breaking }} | |
shell: bash |