From 218d5625fb6aca012c91f19db8d978a5c8898bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Fournier?= Date: Wed, 20 Dec 2023 11:44:49 +0100 Subject: [PATCH] chore: unify build and build PRs workflow (#5570) ## About the changes Our build and build_prs workflows are almost the same with some minor details: 1. **Build** also builds the frontend, but **PR Build** does not by specifying `--ignore-scripts` 1. **Build PR** uploads test results: Upload test report to build. We'll ignore this when building on main 1. **Build PR** just builds the backend (reason why the build is much faster: 50s vs ~5m). We have a workflow for building frontend PRs, we'd be removing the build frontend from the build on main, but we're already exercising that to upload to dockerhub: ![image](https://github.com/Unleash/unleash/assets/455064/36f5a892-24dc-4de2-91bd-8e3419757b0d) These are the main differences: ![image](https://github.com/Unleash/unleash/assets/455064/837b1ea4-305d-4472-b903-aeed7f3f3e7f) This PR unifies the two workflows into one --- .github/workflows/build.yaml | 18 ++++++++--- .github/workflows/build_prs.yaml | 51 -------------------------------- 2 files changed, 14 insertions(+), 55 deletions(-) delete mode 100644 .github/workflows/build_prs.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 42f2153c5914..987f40683ee4 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Build & Tests +name: Build, Lint & Tests on: push: @@ -7,7 +7,11 @@ on: paths-ignore: - website/** - coverage/** - + pull_request: + paths-ignore: + - frontend/** + - website/** + - coverage/** jobs: build: runs-on: ubuntu-latest @@ -39,11 +43,17 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'yarn' - - run: yarn - - run: yarn build:frontend:if-needed + - run: yarn install --frozen-lockfile --ignore-scripts - run: yarn lint + - run: yarn build:backend - run: yarn run test:report # This adds test results as github check to the workflow env: CI: true TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres + - name: Upload test report to build # Done this way since external PRs would not be able to write the check. See https://github.com/marketplace/actions/test-reporter#recommended-setup-for-public-repositories + uses: actions/upload-artifact@v3 + if: (success() || failure()) && github.ref == 'refs/heads/main' + with: + name: test-results + path: ./reports/jest-junit.xml \ No newline at end of file diff --git a/.github/workflows/build_prs.yaml b/.github/workflows/build_prs.yaml deleted file mode 100644 index 5aef6a30c004..000000000000 --- a/.github/workflows/build_prs.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: PR -> Build & Lint - -on: - pull_request: - paths-ignore: - - frontend/** - - website/** - - coverage/** - -jobs: - build: - runs-on: ubuntu-latest - services: - # Label used to access the service container - postgres: - # Docker Hub image - image: postgres - # Provide the password for postgres - env: - POSTGRES_PASSWORD: postgres - POSTGRES_INITDB_ARGS: "--no-sync" - # Set health checks to wait until postgres has started - ports: - - 5432:5432 - options: >- - --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - - strategy: - matrix: - node-version: [18.x] - steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'yarn' - - run: yarn install --frozen-lockfile --ignore-scripts - - run: yarn lint - - run: yarn build:backend - - run: yarn test:report - env: - CI: true - TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres - DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres - - name: Upload test report to build # Done this way since external PRs would not be able to write the check. See https://github.com/marketplace/actions/test-reporter#recommended-setup-for-public-repositories - uses: actions/upload-artifact@v3 - if: success() || failure() - with: - name: test-results - path: ./reports/jest-junit.xml