diff --git a/.github/workflows/detect-breaking-changes-build.yml b/.github/workflows/detect-breaking-changes-build.yml
index 33e9f66519b..c6ceb52d9dd 100644
--- a/.github/workflows/detect-breaking-changes-build.yml
+++ b/.github/workflows/detect-breaking-changes-build.yml
@@ -3,27 +3,30 @@ name: Levitate / Detect breaking changes
on: pull_request
jobs:
- build:
- name: Detect
+ buildPR:
+ name: Build PR
runs-on: ubuntu-latest
- env:
- GITHUB_STEP_NUMBER: 7
+ defaults:
+ run:
+ working-directory: './pr'
steps:
- uses: actions/checkout@v2
+ with:
+ path: './pr'
- - name: Setup environment
- uses: actions/setup-node@v2.5.1
+ - name: Get yarn cache directory path
+ id: yarn-cache-dir-path
+ run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+
+ - name: Restore yarn cache
+ uses: actions/cache@v2
+ id: yarn-cache
with:
- node-version: '16'
-
- - name: Get link for the Github Action job
- id: job
- uses: actions/github-script@v5
- with:
- script: |
- const script = require('./.github/workflows/scripts/pr-get-job-link.js')
- await script({github, context, core})
+ 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
@@ -31,24 +34,108 @@ jobs:
- name: Build packages
run: yarn packages:build
- - 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: Zip built packages
+ run: zip -r ./pr_built_packages.zip ./packages/**/dist
- - 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\" }" > ./levitate/result.json
-
- - name: Upload check output as artifact
+ - name: Upload build output as artifact
uses: actions/upload-artifact@v2
with:
- name: levitate
- path: levitate/
+ name: buildPr
+ path: './pr/pr_built_packages.zip'
+
+ buildMain:
+ name: Build Main
+ runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: './main'
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ path: './main'
+ ref: 'main'
+
+ - name: Get yarn cache directory path
+ id: yarn-cache-dir-path
+ run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
+
+ - name: Restore yarn cache
+ uses: actions/cache@v2
+ 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: Exit
- run: exit ${{ steps.breaking-changes.outputs.is_breaking }}
- shell: bash
+ - name: Install dependencies
+ run: yarn install --immutable
+
+ - name: Build packages
+ run: yarn packages:build
+
+ - name: Zip built packages
+ run: zip -r ./main_built_packages.zip ./packages/**/dist
+
+ - name: Upload build output as artifact
+ uses: actions/upload-artifact@v2
+ with:
+ name: buildMain
+ path: './main/main_built_packages.zip'
+
+ Detect:
+ name: Detect breaking changes
+ runs-on: ubuntu-latest
+ needs: ['buildPR', 'buildMain']
+ env:
+ GITHUB_STEP_NUMBER: 7
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Get built packages from pr
+ uses: actions/download-artifact@v2
+ with:
+ name: buildPr
+
+ - name: Get built packages from main
+ uses: actions/download-artifact@v2
+ with:
+ name: buildMain
+
+ - name: Unzip artifact from pr
+ run: unzip pr_built_packages.zip -d ./pr && rm pr_built_packages.zip
+
+ - name: Unzip artifact from main
+ run: unzip main_built_packages.zip -d ./main && rm main_built_packages.zip
+
+ - name: Get link for the Github Action job
+ id: job
+ uses: actions/github-script@v5
+ with:
+ script: |
+ const script = require('./.github/workflows/scripts/pr-get-job-link.js')
+ await script({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\" }" > ./levitate/result.json
+
+ - name: Upload check output as artifact
+ uses: actions/upload-artifact@v2
+ with:
+ name: levitate
+ path: levitate/
+
+ - name: Exit
+ run: exit ${{ steps.breaking-changes.outputs.is_breaking }}
+ shell: bash
diff --git a/scripts/check-breaking-changes.sh b/scripts/check-breaking-changes.sh
index 896c350f1d9..a76e3a2626b 100755
--- a/scripts/check-breaking-changes.sh
+++ b/scripts/check-breaking-changes.sh
@@ -1,32 +1,29 @@
#!/usr/bin/env bash
-# Find existing packages using Lerna
-PACKAGES=$(lerna list -p -l)
+# Find package directories
+PACKAGES=$(ls -d ./packages/*/)
EXIT_CODE=0
GITHUB_MESSAGE=""
# Loop through the packages
-while IFS= read -r line; do
+while IFS=" " read -r -a package; do
- # Read package info
- IFS=':' read -ra ADDR <<< "$line"
- PACKAGE_PATH="${ADDR[0]}"
- PACKAGE_NAME="${ADDR[1]}"
+ # shellcheck disable=SC2128
+ PACKAGE_PATH=$(basename "$package")
# Calculate current and previous package paths / names
- PREV="$PACKAGE_NAME@canary"
- CURRENT="$PACKAGE_PATH/dist/"
+ PREV="./main/packages/$PACKAGE_PATH/dist/"
+ CURRENT="./pr/packages/$PACKAGE_PATH/dist/"
- # Temporarily skipping @grafana/toolkit, as it doesn't have any exposed static typing
- if [[ "$PACKAGE_NAME" == '@grafana/toolkit' ]]; then
+ # Temporarily skipping these packages as they don't have any exposed static typing
+ if [[ "$PACKAGE_PATH" == 'grafana-toolkit' || "$PACKAGE_PATH" == 'jaeger-ui-components' ]]; then
continue
fi
-
# Run the comparison and record the exit code
echo ""
echo ""
- echo "${PACKAGE_NAME}"
+ echo "${PACKAGE_PATH}"
echo "================================================="
npm exec -- @grafana/levitate compare --prev "$PREV" --current "$CURRENT"
@@ -39,8 +36,8 @@ while IFS= read -r line; do
if [ $STATUS -gt 0 ]
then
EXIT_CODE=1
- GITHUB_MESSAGE="${GITHUB_MESSAGE}**\\\`${PACKAGE_NAME}\\\`** has possible breaking changes ([more info](${GITHUB_JOB_LINK}#step:${GITHUB_STEP_NUMBER}:1))
"
- fi
+ GITHUB_MESSAGE="${GITHUB_MESSAGE}**\\\`${PACKAGE_PATH}\\\`** has possible breaking changes ([more info](${GITHUB_JOB_LINK}#step:${GITHUB_STEP_NUMBER}:1))
"
+ fi
done <<< "$PACKAGES"