From 8a6535ed16392f39c16e6a571974ef548a020b44 Mon Sep 17 00:00:00 2001 From: Cornelius Roemer Date: Mon, 29 Apr 2024 16:12:40 +0200 Subject: [PATCH] chore(ci): Run test actions only when relevant code changed for website, backend (#1695) --- .github/workflows/backend-tests.yml | 49 ++++++++++++++++++++++++ .github/workflows/backend.yml | 37 +----------------- .github/workflows/website-tests.yml | 59 +++++++++++++++++++++++++++++ .github/workflows/website.yml | 42 -------------------- 4 files changed, 110 insertions(+), 77 deletions(-) create mode 100644 .github/workflows/backend-tests.yml create mode 100644 .github/workflows/website-tests.yml diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml new file mode 100644 index 000000000..e4d44af57 --- /dev/null +++ b/.github/workflows/backend-tests.yml @@ -0,0 +1,49 @@ +name: backend-tests + +on: + pull_request: + paths: + - "backend/**" + - ".github/workflows/backend-tests.yml" + push: + branches: + - master + workflow_dispatch: + +concurrency: + group: ci-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}-backend-tests + cancel-in-progress: true + +jobs: + Tests: + runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} + timeout-minutes: 15 + env: + CROSSREF_USERNAME: ${{ secrets.CROSSREF_USERNAME }} + CROSSREF_TEST_PASSWORD: ${{ secrets.CROSSREF_TEST_PASSWORD }} + CROSSREF_TEST_ENDPOINT: ${{ secrets.CROSSREF_TEST_ENDPOINT }} + CROSSREF_DOI_PREFIX: ${{ secrets.CROSSREF_DOI_PREFIX }} + steps: + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN_READ_PUBLIC }} + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: "21" + distribution: "adopt" + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Execute Tests + uses: nick-fields/retry@v3 + with: + command: cd ./backend && ./gradlew test + max_attempts: 3 + timeout_minutes: 10 + retry_wait_seconds: 1 + - name: Check Format And Lint + run: ./gradlew ktlintCheck + working-directory: ./backend diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 2c6c3a128..0df546347 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -4,50 +4,17 @@ on: push: workflow_dispatch: -env: - DOCKER_IMAGE_NAME: ghcr.io/loculus-project/backend - CROSSREF_USERNAME: ${{ secrets.CROSSREF_USERNAME }} - CROSSREF_TEST_PASSWORD: ${{ secrets.CROSSREF_TEST_PASSWORD }} - CROSSREF_TEST_ENDPOINT: ${{ secrets.CROSSREF_TEST_ENDPOINT }} - CROSSREF_DOI_PREFIX: ${{ secrets.CROSSREF_DOI_PREFIX }} - concurrency: group: ci-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}-backend cancel-in-progress: true jobs: - Tests: - runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} - timeout-minutes: 15 - steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN_READ_PUBLIC }} - - uses: actions/checkout@v4 - - name: Set up JDK - uses: actions/setup-java@v4 - with: - java-version: "21" - distribution: "adopt" - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 - - name: Execute Tests - uses: nick-fields/retry@v3 - with: - command: cd ./backend && ./gradlew test - max_attempts: 3 - timeout_minutes: 10 - retry_wait_seconds: 1 - - name: Check Format And Lint - run: ./gradlew ktlintCheck - working-directory: ./backend - dockerImage: name: Build Backend Docker Image # Don't change: Referenced by .github/workflows/update-argocd-metadata.yml runs-on: ubuntu-latest timeout-minutes: 15 + env: + DOCKER_IMAGE_NAME: ghcr.io/loculus-project/backend permissions: packages: write contents: read diff --git a/.github/workflows/website-tests.yml b/.github/workflows/website-tests.yml new file mode 100644 index 000000000..049b45bb1 --- /dev/null +++ b/.github/workflows/website-tests.yml @@ -0,0 +1,59 @@ +name: website-tests + +on: + # test + pull_request: + paths: + - "website/**" + - ".github/workflows/website-tests.yml" + push: + branches: + - master + workflow_dispatch: + +concurrency: + group: ci-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}-website-tests + cancel-in-progress: true + +jobs: + checks: + name: Check format and types + runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} + timeout-minutes: 15 + defaults: + run: + working-directory: ./website + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('website/**/package-lock.json') }} + - run: npm ci + - run: npm run check-format + - run: npm run check-types + + unitTests: + name: Unit Tests + runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} + timeout-minutes: 15 + defaults: + run: + working-directory: ./website + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Cache .npm + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('website/**/package-lock.json') }} + - name: Install dependencies + run: npm ci + - name: Run tests + run: npm run test diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index c355e3c78..b0c925700 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -12,48 +12,6 @@ concurrency: cancel-in-progress: true jobs: - checks: - name: Check format and types - runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} - timeout-minutes: 15 - defaults: - run: - working-directory: ./website - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: lts/* - - uses: actions/cache@v4 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('website/**/package-lock.json') }} - - run: npm ci - - run: npm run check-format - - run: npm run check-types - - unitTests: - name: Unit Tests - runs-on: codebuild-loculus-ci-${{ github.run_id }}-${{ github.run_attempt }} - timeout-minutes: 15 - defaults: - run: - working-directory: ./website - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: lts/* - - name: Cache .npm - uses: actions/cache@v4 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('website/**/package-lock.json') }} - - name: Install dependencies - run: npm ci - - name: Run tests - run: npm run test - dockerImage: name: Build Website Docker Image # Don't change: Referenced by .github/workflows/update-argocd-metadata.yml runs-on: ubuntu-latest