mirror of
https://github.com/grafana/grafana.git
synced 2024-11-27 11:20:27 -06:00
27ee091d49
* chore: persist the PR number in the Levitate workflow artifact This is going to be used later in the reporting workflow, as for 3rd party (fork) PRs Github doesn't correctly populate the `workflow_run` context (the PR number is missing from it). * chore: use the PR number from the artifact for Levitate reporting
142 lines
3.9 KiB
YAML
142 lines
3.9 KiB
YAML
name: Levitate / Detect breaking changes
|
|
|
|
on: pull_request
|
|
|
|
jobs:
|
|
buildPR:
|
|
name: Build PR
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: './pr'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
path: './pr'
|
|
|
|
- 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: Install dependencies
|
|
run: yarn install --immutable
|
|
|
|
- name: Build packages
|
|
run: yarn packages:build
|
|
|
|
- name: Zip built packages
|
|
run: zip -r ./pr_built_packages.zip ./packages/**/dist
|
|
|
|
- name: Upload build output as artifact
|
|
uses: actions/upload-artifact@v2
|
|
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@v2
|
|
with:
|
|
path: './base'
|
|
ref: ${{ github.event.pull_request.base.ref }}
|
|
|
|
- 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: Install dependencies
|
|
run: yarn install --immutable
|
|
|
|
- name: Build packages
|
|
run: yarn packages:build
|
|
|
|
- name: Zip built packages
|
|
run: zip -r ./base_built_packages.zip ./packages/**/dist
|
|
|
|
- name: Upload build output as artifact
|
|
uses: actions/upload-artifact@v2
|
|
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: 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 base
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: buildBase
|
|
|
|
- name: Unzip artifact from pr
|
|
run: unzip pr_built_packages.zip -d ./pr && rm pr_built_packages.zip
|
|
|
|
- name: Unzip artifact from base
|
|
run: unzip 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@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\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./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
|