Bläddra i källkod

Improve test workflow

Zed 1 år sedan
förälder
incheckning
fb7c1d8710
1 ändrade filer med 74 tillägg och 22 borttagningar
  1. 74 22
      .github/workflows/run-tests.yml

+ 74 - 22
.github/workflows/run-tests.yml

@@ -8,49 +8,101 @@ on:
       - master
   workflow_call:
 
+# Ensure that multiple runs on the same branch do not overlap.
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+defaults:
+  run:
+    shell: bash
+
 jobs:
-  test:
+  build-test:
+    name: Build and test
     runs-on: buildjet-2vcpu-ubuntu-2204
     strategy:
       matrix:
-        nim:
-          - "1.6.x"
-          - "2.0.x"
-          - "2.2.x"
-          - "devel"
+        nim: ["1.6.x", "2.0.x", "2.2.x", "devel"]
     steps:
-      - uses: actions/checkout@v3
+      - name: Checkout Code
+        uses: actions/checkout@v4
         with:
           fetch-depth: 0
-      - name: Cache nimble
+
+      - name: Cache Nimble Dependencies
         id: cache-nimble
-        uses: buildjet/cache@v3
+        uses: buildjet/cache@v4
         with:
           path: ~/.nimble
-          key: ${{ matrix.nim }}-nimble-${{ hashFiles('*.nimble') }}
+          key: ${{ matrix.nim }}-nimble-v2-${{ hashFiles('*.nimble') }}
           restore-keys: |
-            ${{ matrix.nim }}-nimble-
-      - uses: actions/setup-python@v4
+            ${{ matrix.nim }}-nimble-v2-
+
+      - name: Setup Nim
+        uses: jiro4989/setup-nim-action@v2
+        with:
+          nim-version: ${{ matrix.nim }}
+          use-nightlies: true
+          repo-token: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Build Project
+        run: nimble build -d:release -Y
+
+  integration-test:
+    needs: [build-test]
+    name: Integration test
+    runs-on: buildjet-2vcpu-ubuntu-2204
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+
+      - name: Cache Nimble Dependencies
+        id: cache-nimble
+        uses: buildjet/cache@v4
+        with:
+          path: ~/.nimble
+          key: devel-nimble-v2-${{ hashFiles('*.nimble') }}
+          restore-keys: |
+            devel-nimble-v2-
+
+      - name: Setup Python (3.10) with pip cache
+        uses: buildjet/setup-python@v4
         with:
           python-version: "3.10"
-          cache: "pip"
-      - uses: jiro4989/setup-nim-action@v1
+          cache: pip
+
+      - name: Setup Nim
+        uses: jiro4989/setup-nim-action@v2
         with:
-          nim-version: ${{ matrix.nim }}
+          nim-version: devel
+          use-nightlies: true
           repo-token: ${{ secrets.GITHUB_TOKEN }}
-      - run: nimble build -d:release -Y
-      - run: pip install seleniumbase
-      - run: seleniumbase install chromedriver
-      - uses: supercharge/redis-github-action@1.5.0
-      - name: Prepare Nitter
+
+      - name: Build Project
+        run: nimble build -d:release -Y
+
+      - name: Install SeleniumBase and Chromedriver
+        run: |
+          pip install seleniumbase
+          seleniumbase install chromedriver
+
+      - name: Start Redis Service
+        uses: supercharge/redis-github-action@1.5.0
+
+      - name: Prepare Nitter Environment
         run: |
-          sudo apt install libsass-dev -y
+          sudo apt-get update && sudo apt-get install -y libsass-dev
           cp nitter.example.conf nitter.conf
           sed -i 's/enableDebug = false/enableDebug = true/g' nitter.conf
           nimble md
           nimble scss
+          echo '${{ secrets.SESSIONS }}' | head -n1
           echo '${{ secrets.SESSIONS }}' > ./sessions.jsonl
-      - name: Run tests
+
+      - name: Run Tests
         run: |
           ./nitter &
           pytest -n3 tests