diff --git a/.github/actions/load-node-cache/action.yml b/.github/actions/load-node-cache/action.yml new file mode 100644 index 0000000000..ab762b52b7 --- /dev/null +++ b/.github/actions/load-node-cache/action.yml @@ -0,0 +1,12 @@ +name: Load NPM Cache +description: Load cached npm package data into the global npm cache +runs: + using: composite + steps: + - name: Cache global ~/.npm cache + uses: actions/cache@v5 + with: + path: ~/.npm + key: npm-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + npm-${{ runner.os }}- diff --git a/.github/actions/shutdown-test-backend/action.yml b/.github/actions/shutdown-test-backend/action.yml new file mode 100644 index 0000000000..6071df8ebd --- /dev/null +++ b/.github/actions/shutdown-test-backend/action.yml @@ -0,0 +1,20 @@ +name: Shutdown Test Backend +description: Shuts down and prints logs for the E2E Test Backend +runs: + using: composite + steps: + - name: Print Logs for Services + if: always() + shell: bash + run: docker compose -f ./e2e-tests/docker-compose-test.yml logs -t + - name: Stop Services + if: always() + shell: bash + run: | + docker ps -a + docker compose -f ./e2e-tests/docker-compose-test.yml down + docker ps -a + - name: Prune Volumes + if: always() + shell: bash + run: docker volume prune --force diff --git a/.github/actions/start-test-backend/action.yml b/.github/actions/start-test-backend/action.yml new file mode 100644 index 0000000000..caa7212a2b --- /dev/null +++ b/.github/actions/start-test-backend/action.yml @@ -0,0 +1,31 @@ +name: Start Test Backend +description: Compile and start up the backend for E2E Tests +runs: + using: composite + steps: + - name: Extract PlanDev gateway docker tag from PR body + # look in the PR body for the string ___REQUIRES_GATEWAY_PR___=9999, extract the number if so & save to env var + # if gateway PR is labeled correctly, it will publish a docker tag called 'pr-9999' to use in tests + if: ${{ contains(env.PR_BODY, '___REQUIRES_GATEWAY_PR___=') }} + shell: bash + run: | + echo "GATEWAY_IMAGE_TAG=pr-$(echo $PR_BODY | sed -n 's/.*___REQUIRES_GATEWAY_PR___=\"\([0-9]\+\)\".*/\1/p')" >> $GITHUB_ENV + - name: Load NPM Cache + uses: ./.github/actions/load-node-cache + # Start Hasura and Postgres ahead of assembling the Java code, as the Java code takes a few minutes to compile. + # This means Hasura will have time to complete its start-up tasks without needing an extra "sleep 30" command. + - name: Start Hasura and Postgres + shell: bash + run: | + docker compose -f ./e2e-tests/docker-compose-test.yml up -d postgres hasura --quiet-pull + - name: Assemble + # Don't generate docs for tests + shell: bash + run: ./gradlew assemble -x javadoc -x javadocJar -x generateDocumentation --parallel + - name: Start Remaining Services + shell: bash + run: | + echo "GATEWAY_IMAGE_TAG: $GATEWAY_IMAGE_TAG" + docker compose -f ./e2e-tests/docker-compose-test.yml up -d --build --quiet-pull + docker images + docker ps -a --no-trunc diff --git a/.github/workflows/cloc.yml b/.github/workflows/cloc.yml index 8f7a7596ab..4a61c9ef7e 100644 --- a/.github/workflows/cloc.yml +++ b/.github/workflows/cloc.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install cloc run: | sudo apt-get update diff --git a/.github/workflows/create_jnispice.yml b/.github/workflows/create_jnispice.yml index b9dc9ab3c6..dc567294a0 100644 --- a/.github/workflows/create_jnispice.yml +++ b/.github/workflows/create_jnispice.yml @@ -20,7 +20,7 @@ jobs: 7z x JNISpice.zip echo "JNISpice unpacked" - name: Upload DLL - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Windows Spice path: JNISpice/lib/JNISpice.dll @@ -39,7 +39,7 @@ jobs: run: mv libJNISpice.so libJNISpice_Intel.so working-directory: JNISpice/lib - name: Upload .so - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: x86 Linux Spice path: JNISpice/lib/libJNISpice_Intel.so @@ -64,7 +64,7 @@ jobs: working-directory: JNISpice/src/JNISpice shell: csh {0} - name: Upload Intel Mac .jnilib - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: x86 Mac Spice path: JNISpice/lib/libJNISpice_Intel.jnilib @@ -74,7 +74,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" @@ -104,7 +104,7 @@ jobs: working-directory: JNISpice/src/JNISpice - name: Upload JAR if: success() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: JNISpice Jar path: JNISpice/src/JNISpice/JNISpice-*.jar diff --git a/.github/workflows/deploy-to-gh-pages.yml b/.github/workflows/deploy-to-gh-pages.yml index 1a1aa6753a..8e7edd1045 100644 --- a/.github/workflows/deploy-to-gh-pages.yml +++ b/.github/workflows/deploy-to-gh-pages.yml @@ -15,12 +15,15 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 with: distribution: temurin java-version: "21" - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Create Pages Build Directories run: mkdir -p build/javadoc/examples - name: Build EDSL API Docs @@ -54,7 +57,7 @@ jobs: cp -a ./scheduler-worker/build/docs/javadoc ./build/javadoc/scheduler-worker cp -a ./procedural/build/dokka/htmlMultiModule ./build/procedural-apis - name: Upload Artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: build/ @@ -67,4 +70,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index 8db3ddf3ac..8c40b1a3ef 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -25,16 +25,17 @@ jobs: environment: load-test steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Assemble run: ./gradlew assemble --parallel - name: Start Services @@ -51,7 +52,7 @@ jobs: ./load-test.sh - name: Upload Load Test Results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Load Test Results path: "**/load-tests/load-report.*" diff --git a/.github/workflows/pgcmp.yml b/.github/workflows/pgcmp.yml index 119a86215a..49dd7ea1cf 100644 --- a/.github/workflows/pgcmp.yml +++ b/.github/workflows/pgcmp.yml @@ -42,11 +42,11 @@ jobs: environment: e2e-test steps: - name: Checkout v2.8.0 - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: "v2.8.0" - name: Clone PGCMP - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: NASA-AMMOS/pgcmp path: pgcmp @@ -87,22 +87,23 @@ jobs: ./pgcmp/pgcmp-dump shell: bash - name: Share Database Dump - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: v2_8_0-db-dump path: pgdumpV2_8_0 retention-days: 1 - name: Checkout Latest - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Assemble Workspace Server run: ./gradlew workspace-server:assemble --parallel - name: Restart Hasura and Start Additional Containers @@ -125,7 +126,7 @@ jobs: python aerie_db_migration.py migrate --apply --all cd .. - name: Clone PGCMP - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: NASA-AMMOS/pgcmp path: pgcmp @@ -139,7 +140,7 @@ jobs: ./pgcmp/pgcmp-dump shell: bash - name: Share Database Dump - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: migrated-db-dump path: pgdumpmigrated @@ -160,7 +161,7 @@ jobs: environment: e2e-test steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Postgres Client (psql) # ubuntu-latest does not currently have psql-16 in its apt library, so we cannot just run # sudo apt update && sudo apt-get install --yes postgresql-client-16 @@ -174,7 +175,7 @@ jobs: sudo apt update sudo apt -y install postgresql-client-16 - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.10" - name: Setup Hasura CLI @@ -188,7 +189,7 @@ jobs: run: sleep 60s shell: bash - name: Clone PGCMP - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: NASA-AMMOS/pgcmp path: pgcmp @@ -202,7 +203,7 @@ jobs: ./pgcmp/pgcmp-dump shell: bash - name: Share Database Dump - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: current-sql-db-dump path: pgdumpcurrent @@ -227,7 +228,7 @@ jobs: ./pgcmp/pgcmp-dump shell: bash - name: Share Database Dump - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: migrated-down-db-dump path: pgdumpmigrateddown @@ -247,9 +248,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Clone PGCMP - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: NASA-AMMOS/pgcmp path: pgcmp @@ -289,7 +290,7 @@ jobs: shell: bash - name: Upload Invalid if: ${{ failure() && steps.dbcmp.conclusion == 'failure' }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: pgcmpresultsup path: "**/results/" @@ -309,9 +310,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Clone PGCMP - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: NASA-AMMOS/pgcmp path: pgcmp @@ -351,7 +352,7 @@ jobs: shell: bash - name: Upload Invalid if: ${{ failure() && steps.dbcmp.conclusion == 'failure' }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: pgcmpresultsdown path: "**/results/" diff --git a/.github/workflows/profile-compilation.yml b/.github/workflows/profile-compilation.yml new file mode 100644 index 0000000000..57bc718e54 --- /dev/null +++ b/.github/workflows/profile-compilation.yml @@ -0,0 +1,33 @@ +name: Profile Compilation + +on: + workflow_dispatch: + +jobs: + compile-check: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v6 + - name: Load NPM Cache + uses: ./.github/actions/load-node-cache + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: "temurin" + java-version: "21" + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + - name: Assemble + # Don't generate docs for tests + run: ./gradlew assemble -x javadoc -x javadocJar -x generateDocumentation --parallel --profile + - name: Upload Profile + if: always() + uses: actions/upload-artifact@v7 + with: + name: ProfileResults + path: | + /home/runner/work/plandev/plandev/build/reports/profile/profile* diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 63eae91b5e..eee7236120 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,13 +30,13 @@ jobs: SHOULD_PUBLISH_IMAGES: ${{ env.SHOULD_PUBLISH_IMAGES }} SHOULD_PUBLISH_DEPLOYMENT: ${{ env.SHOULD_PUBLISH_DEPLOYMENT }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: gradle/wrapper-validation-action@v2 - - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v5 with: generate-job-summary: false + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Gradle Version run: ./gradlew --version @@ -83,17 +83,19 @@ jobs: - name: Log SHOULD_PUBLISH_IMAGES run: echo ${{ needs.init.outputs.SHOULD_PUBLISH_IMAGES }} - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" - name: Init Gradle cache - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v5 with: generate-job-summary: false + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -155,7 +157,7 @@ jobs: fail-fast: false name: scan ${{ matrix.image }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Scan ${{ matrix.image }} for vulnerabilities # pinned to commit for release https://github.com/aquasecurity/trivy-action/releases/tag/v0.24.0 @@ -176,7 +178,7 @@ jobs: - name: Upload ${{ matrix.image }} scan results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Vuln Scan Results - ${{ matrix.image }} path: "${{ matrix.image }}-results.html" @@ -190,12 +192,14 @@ jobs: contents: read packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Gradle Cache - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v5 with: generate-job-summary: false + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Publish Package run: ./gradlew publish -Pversion.isRelease=$IS_RELEASE --parallel @@ -206,7 +210,7 @@ jobs: run: ./gradlew archiveDeployment - name: Publish deployment - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Deployment path: deployment.tar diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index f2034d59d1..224aad3ffb 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: @@ -36,17 +36,20 @@ jobs: queries: +security-extended tools: latest - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Build run: | ./gradlew testClasses - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 - name: NASA Scrub run: | python3 -m pip install nasa-scrub @@ -64,7 +67,7 @@ jobs: echo "RESULTS_DIR=$results_dir" >> $GITHUB_ENV - name: Upload Security Scan Results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Security Scan Results - ${{ matrix.language }} path: ${{ env.RESULTS_DIR }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3c6453154d..cf8a76edbd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,88 +37,155 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 + - name: Load NPM Cache + uses: ./.github/actions/load-node-cache - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "21" - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Assemble - run: ./gradlew assemble --parallel + # Don't generate docs for tests + run: ./gradlew assemble -x javadoc -x javadocJar -x generateDocumentation --parallel - name: Run Unit Tests run: ./gradlew test --parallel - name: Upload Test Results as XML and HTML if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: Unit Test Results path: | **/build/test-results/test **/build/reports/tests/test - e2e-test: + action-unit-tests: runs-on: ubuntu-latest environment: e2e-test steps: - name: Checkout Repo - uses: actions/checkout@v4 - - name: Extract PlanDev gateway docker tag from PR body - # look in the PR body for the string ___REQUIRES_GATEWAY_PR___=9999, extract the number if so & save to env var - # if gateway PR is labeled correctly, it will publish a docker tag called 'pr-9999' to use in tests - if: ${{ contains(env.PR_BODY, '___REQUIRES_GATEWAY_PR___=') }} - run: | - echo "GATEWAY_IMAGE_TAG=pr-$(echo $PR_BODY | sed -n 's/.*___REQUIRES_GATEWAY_PR___=\"\([0-9]\+\)\".*/\1/p')" >> $GITHUB_ENV - - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/checkout@v6 + - name: Setup NPM + uses: actions/setup-node@v6 with: - distribution: "temurin" - java-version: "21" + node-version-file: ./action-server/.nvmrc + cache: npm + cache-dependency-path: ./action-server/package-lock.json + - name: Install Dependencies + run: npm ci + working-directory: ./action-server + - name: Run Action Server Unit Tests + run: npm --silent run test + working-directory: ./action-server + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: Action Server Test Results + path: | + **/action-server/action-server-test-report.log + + db-tests: + runs-on: ubuntu-latest + environment: e2e-test + steps: + - name: Checkout Repo + uses: actions/checkout@v6 - name: Setup Postgres Client (psql) run: | sudo apt-get update sudo apt-get install --yes postgresql-client - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: "temurin" + java-version: "21" - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 - - name: Assemble - run: ./gradlew assemble --parallel - - name: Build scheduling procedure jars for testing - run: ./gradlew e2e-tests:buildAllProcedureJars + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} - name: Start Services run: | - echo "GATEWAY_IMAGE_TAG: $GATEWAY_IMAGE_TAG" - docker compose -f ./e2e-tests/docker-compose-test.yml up -d --build --quiet-pull - docker images - docker ps -a --no-trunc - - name: Sleep for 30 Seconds - run: sleep 30s + docker compose -f ./e2e-tests/docker-compose-test.yml up postgres -d --quiet-pull + - name: Sleep for 5 Seconds + run: sleep 5s shell: bash + - name: Run DB Tests + run: ./gradlew db-tests:e2eTest + - name: Upload DB Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: DB Test Results + path: | + **/db-tests/build/reports/tests/e2eTest + - name: Shutdown Backend + uses: ./.github/actions/shutdown-test-backend + + sequencing-e2e-tests: + runs-on: ubuntu-latest + environment: e2e-test + steps: + - name: Checkout Repo + uses: actions/checkout@v6 + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: "temurin" + java-version: "21" + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + - name: Start E2E Test Backend + uses: ./.github/actions/start-test-backend + - name: Run Sequencing E2E Tests + run: ./gradlew sequencing-server:e2eTest + - name: Upload Sequencing E2E Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: Sequencing E2E Test Results + path: | + **/sequencing-server/test-report.* + - name: Shutdown E2E Test Backend + uses: ./.github/actions/shutdown-test-backend + + java-e2e-test: + runs-on: ubuntu-latest + environment: e2e-test + steps: + - name: Checkout Repo + uses: actions/checkout@v6 + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: "temurin" + java-version: "21" + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + # This action defaults to matching on "main" and "master" as the branches allowed to write to the cache + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + - name: Start E2E Test Backend + uses: ./.github/actions/start-test-backend + - name: Build scheduling procedure jars for testing + run: ./gradlew e2e-tests:buildAllProcedureJars - name: Run E2E Tests - run: ./gradlew e2eTest + run: ./gradlew e2e-tests:e2eTest - name: Upload E2E Test Results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: E2E Test Results path: | **/e2e-tests/build/reports/tests/e2eTest - **/db-tests/build/reports/tests/e2eTest - **/sequencing-server/test-report.* - **/action-server/action-server-test-report.log - - name: Print Logs for Services - if: always() - run: docker compose -f ./e2e-tests/docker-compose-test.yml logs -t - - name: Stop Services - if: always() - run: | - docker ps -a - docker compose -f ./e2e-tests/docker-compose-test.yml down - docker ps -a - - name: Prune Volumes - if: always() - run: docker volume prune --force + - name: Shutdown Backend + uses: ./.github/actions/shutdown-test-backend diff --git a/action-server/build.gradle b/action-server/build.gradle index 4d811614eb..07f07d1ecf 100644 --- a/action-server/build.gradle +++ b/action-server/build.gradle @@ -5,6 +5,7 @@ plugins { node { version = '22.13.1' download = true + npmInstallCommand = System.getenv("CI") ? 'ci' : 'install' } task assemble(type: NpmTask) { diff --git a/merlin-server/build.gradle b/merlin-server/build.gradle index f6b7f6ce87..ff0d727156 100644 --- a/merlin-server/build.gradle +++ b/merlin-server/build.gradle @@ -16,6 +16,7 @@ node { nodeProjectDir = file("${project.projectDir.toPath().resolve("constraints-dsl-compiler")}") version = '20.12.1' download = true + npmInstallCommand = System.getenv("CI") ? 'ci' : 'install' } task assembleConstraintsDSLCompiler(type: NpmTask) { diff --git a/scheduler-worker/build.gradle b/scheduler-worker/build.gradle index 9e64947441..f77bca73ac 100644 --- a/scheduler-worker/build.gradle +++ b/scheduler-worker/build.gradle @@ -19,6 +19,7 @@ node { nodeProjectDir = file("${project.projectDir.toPath().resolve("scheduling-dsl-compiler")}") version = '20.12.1' download = true + npmInstallCommand = System.getenv("CI") ? 'ci' : 'install' } task deleteConstraintsTypescript(type: Delete) { diff --git a/sequencing-server/build.gradle b/sequencing-server/build.gradle index 3bfe4ca330..ccf5dc0866 100644 --- a/sequencing-server/build.gradle +++ b/sequencing-server/build.gradle @@ -5,6 +5,7 @@ plugins { node { version = '18.13.0' download = true + npmInstallCommand = System.getenv("CI") ? 'ci' : 'install' } task assemble(type: NpmTask) {