Google Cloud Storage Integration #17814
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
name: Budibase CI | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the master branch | |
push: | |
branches: | |
- master | |
pull_request: | |
workflow_dispatch: | |
workflow_call: | |
inputs: | |
run_as_oss: | |
type: boolean | |
required: false | |
description: Force running checks as if it was an OSS contributor | |
default: false | |
env: | |
BRANCH: ${{ github.event.pull_request.head.ref }} | |
BASE_BRANCH: ${{ github.event.pull_request.base.ref}} | |
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
NX_BASE_BRANCH: origin/${{ github.base_ref }} | |
USE_NX_AFFECTED: ${{ github.event_name == 'pull_request' }} | |
IS_OSS_CONTRIBUTOR: ${{ inputs.run_as_oss == true || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'Budibase/budibase') }} | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- run: yarn lint | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
# Run build all the projects | |
- name: Build | |
run: | | |
yarn build | |
# Check the types of the projects built via esbuild | |
- name: Check types | |
run: | | |
if ${{ env.USE_NX_AFFECTED }}; then | |
yarn check:types --since=${{ env.NX_BASE_BRANCH }} | |
else | |
yarn check:types | |
fi | |
helm-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: azure/setup-helm@v3 | |
- run: cd charts/budibase && helm lint . | |
test-libraries: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- name: Test | |
run: | | |
if ${{ env.USE_NX_AFFECTED }}; then | |
yarn test --ignore=@budibase/worker --ignore=@budibase/server --ignore=@budibase/pro --since=${{ env.NX_BASE_BRANCH }} | |
else | |
yarn test --ignore=@budibase/worker --ignore=@budibase/server --ignore=@budibase/pro | |
fi | |
test-worker: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- name: Test worker | |
run: | | |
if ${{ env.USE_NX_AFFECTED }}; then | |
yarn test --scope=@budibase/worker --since=${{ env.NX_BASE_BRANCH }} | |
else | |
yarn test --scope=@budibase/worker | |
fi | |
test-server: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- name: Test server | |
run: | | |
if ${{ env.USE_NX_AFFECTED }}; then | |
yarn test --scope=@budibase/server --since=${{ env.NX_BASE_BRANCH }} | |
else | |
yarn test --scope=@budibase/server | |
fi | |
test-pro: | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase' | |
steps: | |
- name: Checkout repo and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- name: Test | |
run: | | |
if ${{ env.USE_NX_AFFECTED }}; then | |
yarn test --scope=@budibase/pro --since=${{ env.NX_BASE_BRANCH }} | |
else | |
yarn test --scope=@budibase/pro | |
fi | |
integration-test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: ${{ env.IS_OSS_CONTRIBUTOR == 'false' }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: yarn | |
- run: yarn --frozen-lockfile | |
- name: Build packages | |
run: yarn build --scope @budibase/server --scope @budibase/worker | |
- name: Build backend-core for OSS contributor (required for pro) | |
if: ${{ env.IS_OSS_CONTRIBUTOR == 'true' }} | |
run: yarn build --scope @budibase/backend-core | |
- name: Run tests | |
run: | | |
cd qa-core | |
yarn setup | |
yarn serve:test:self:ci | |
env: | |
BB_ADMIN_USER_EMAIL: admin | |
BB_ADMIN_USER_PASSWORD: admin | |
check-pro-submodule: | |
runs-on: ubuntu-latest | |
if: inputs.run_as_oss != true && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase') | |
steps: | |
- name: Checkout repo and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Check pro commit | |
id: get_pro_commits | |
run: | | |
cd packages/pro | |
pro_commit=$(git rev-parse HEAD) | |
branch="${{ github.base_ref || github.ref_name }}" | |
echo "Running on branch '$branch' (base_ref=${{ github.base_ref }}, ref_name=${{ github.head_ref }})" | |
base_commit=$(git rev-parse origin/master) | |
if [[ ! -z $base_commit ]]; then | |
echo "target_branch=$branch" | |
echo "target_branch=$branch" >> "$GITHUB_OUTPUT" | |
echo "pro_commit=$pro_commit" | |
echo "pro_commit=$pro_commit" >> "$GITHUB_OUTPUT" | |
echo "base_commit=$base_commit" | |
echo "base_commit=$base_commit" >> "$GITHUB_OUTPUT" | |
else | |
echo "Nothing to do - branch to branch merge." | |
fi | |
- name: Check submodule merged to base branch | |
if: ${{ steps.get_pro_commits.outputs.base_commit != '' }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const submoduleCommit = '${{ steps.get_pro_commits.outputs.pro_commit }}'; | |
const baseCommit = '${{ steps.get_pro_commits.outputs.base_commit }}'; | |
if (submoduleCommit !== baseCommit) { | |
console.error('Submodule commit does not match the latest commit on the "${{ steps.get_pro_commits.outputs.target_branch }}" branch.'); | |
console.error('Refer to the pro repo to merge your changes: https://github.com/Budibase/budibase-pro/blob/master/docs/getting_started.md') | |
process.exit(1); | |
} else { | |
console.log('All good, the submodule had been merged and setup correctly!') | |
} | |
check-accountportal-submodule: | |
runs-on: ubuntu-latest | |
if: inputs.run_as_oss != true && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase') | |
steps: | |
- name: Checkout repo and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN || github.token }} | |
fetch-depth: 0 | |
- name: Check account portal commit | |
id: get_accountportal_commits | |
run: | | |
cd packages/account-portal | |
accountportal_commit=$(git rev-parse HEAD) | |
branch="${{ github.base_ref || github.ref_name }}" | |
echo "Running on branch '$branch' (base_ref=${{ github.base_ref }}, ref_name=${{ github.head_ref }})" | |
base_commit=$(git rev-parse origin/master) | |
if [[ ! -z $base_commit ]]; then | |
echo "target_branch=$branch" | |
echo "target_branch=$branch" >> "$GITHUB_OUTPUT" | |
echo "accountportal_commit=$accountportal_commit" | |
echo "accountportal_commit=$accountportal_commit" >> "$GITHUB_OUTPUT" | |
echo "base_commit=$base_commit" | |
echo "base_commit=$base_commit" >> "$GITHUB_OUTPUT" | |
else | |
echo "Nothing to do - branch to branch merge." | |
fi | |
- name: Check submodule merged to base branch | |
if: ${{ steps.get_accountportal_commits.outputs.base_commit != '' }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const submoduleCommit = '${{ steps.get_accountportal_commits.outputs.accountportal_commit }}'; | |
const baseCommit = '${{ steps.get_accountportal_commits.outputs.base_commit }}'; | |
if (submoduleCommit !== baseCommit) { | |
console.error('Submodule commit does not match the latest commit on the "${{ steps.get_accountportal_commits.outputs.target_branch }}" branch.'); | |
console.error('Refer to the account portal repo to merge your changes: https://github.com/Budibase/account-portal/blob/master/docs/index.md') | |
process.exit(1); | |
} else { | |
console.log('All good, the submodule had been merged and setup correctly!') | |
} |