Commit 0800347b authored by Grant's avatar Grant
Browse files

testkit: update ci

Assisted-by: deepseek:v4-flash
parent 70128b40
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -7,6 +7,10 @@ include:
    inputs:
      wiki_token: $CI_PUSH_TOKEN

stages:
  - build
  - test-federation

build image:
  stage: build
  image: docker:latest
+87 −52
Original line number Diff line number Diff line
#
# TODO: different modes of testing based on branch
#       - inside MR: test against testing instances
#       - main branch: test against important public instances
# TODO: require manual trigger inside MRs as not every test is needed every commit
#
# Federation test CI jobs.
# Two modes: Docker (MR) / Production (main).

.fed test: &fed_test
  stage: test
  dependencies: []
.fed_job: &fed_job
  stage: test-federation
  needs: []
  # image: node:24-alpine
  image: registry.sc07.dev/sc07/fedi-testkit/node:24-pptr
  services:
    - name: postgres:14-alpine
      alias: postgres
      variables:
        POSTGRES_HOST_AUTH_METHOD: trust
    - name: redis:7-alpine
      alias: redis
  variables:
    DATABASE_URL: postgres://postgres@postgres:5432/fediauth
    REDIS_URI: redis://redis
    SESSION_SECRET: test
    TEST_FEDERATION_MODE: KEYRING
    PUPPETEER_EXECUTABLE_PATH: /usr/bin/chromium-browser
    TESTKIT_PUPPETEER_ARGS: --no-sandbox
    DATABASE_URL: postgres://postgres@postgres/postgres
    REDIS_URI: redis://redis:6379/0
  before_script:
    - corepack enable && corepack prepare
    - yarn
    - npx -w backend prisma migrate deploy
    - npx -w backend prisma generate
    - corepack enable
    - yarn workspaces focus @fediverse-auth/backend
    - yarn workspace @fediverse-auth/backend prisma generate
  script:
    - yarn workspace @fediverse-auth/backend run ci:test
    - yarn workspace @fediverse-auth/backend run ci:test:federation
  after_script:
    - docker compose -f ./node_modules/@sc07/fedi-testkit/src/docker/compose/${TEST_SOFTWARE}/docker-compose.yml down --volumes --remove-orphans 2>/dev/null || true
  artifacts:
    when: always
    paths:
      - backend/vitest.xml
    reports:
      junit: backend/vitest.xml
    paths:
      - backend/vitest.xml

mr test federation:
  when: manual
  parallel:
    matrix:
      - TEST_FEDERATION_KEYRING_SERVICE:
          - grants.cafe
          - toast.ooo
          - piefed.grant.rip
          - mbin.grant.rip
.docker_job: &docker_job
  <<: *fed_job
  variables:
    FEDERATION_MODE: docker
  services:
    - name: docker:dind
    - name: postgres:14-alpine
      alias: postgres
      variables:
        POSTGRES_HOST_AUTH_METHOD: trust
    - name: redis:7-alpine
      alias: redis
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  <<: *fed_test
    - if: ${CI_PIPELINE_SOURCE} == "merge_request_event"
      when: manual

test federation:
  parallel:
    matrix:
      - TEST_FEDERATION_KEYRING_SERVICE:
          - mastodon.social
          - mastodon.world
          - lemmy.world
          - piefed.social
          - pixelfed.social
mr:federation:mastodon:
  <<: *docker_job
  variables:
    TEST_SOFTWARE: mastodon

mr:federation:lemmy:
  <<: *docker_job
  variables:
    TEST_SOFTWARE: lemmy

mr:federation:piefed:
  <<: *docker_job
  variables:
    TEST_SOFTWARE: piefed

mr:federation:mbin:
  <<: *docker_job
  variables:
    TEST_SOFTWARE: mbin

mr:federation:pixelfed:
  <<: *docker_job
  variables:
    TEST_SOFTWARE: pixelfed

.prod_job: &prod_job
  <<: *fed_job
  variables:
    FEDERATION_MODE: production
    TEST_FEDERATION_MODE: KEYRING
  services:
    - name: postgres:14-alpine
      alias: postgres
      variables:
        POSTGRES_HOST_AUTH_METHOD: trust
    - name: redis:7-alpine
      alias: redis
  rules:
    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  <<: *fed_test
 No newline at end of file
    - if: ${CI_PIPELINE_SOURCE} == "push" && ${CI_COMMIT_BRANCH} == ${CI_DEFAULT_BRANCH}
      when: on_success

prod:federation:mastodon:
  <<: *prod_job
  variables:
    TEST_FEDERATION_KEYRING_SERVICE: mastodon.social

prod:federation:lemmy:
  <<: *prod_job
  variables:
    TEST_FEDERATION_KEYRING_SERVICE: lemmy.world

prod:federation:piefed:
  <<: *prod_job
  variables:
    TEST_FEDERATION_KEYRING_SERVICE: piefed.social

prod:federation:pixelfed:
  <<: *prod_job
  variables:
    TEST_FEDERATION_KEYRING_SERVICE: pixelfed.social