# This file is a template, and might need editing before it works on your project. # Official framework image. Look for the different tagged releases at: # https://hub.docker.com/r/library/node/tags/ image: node:18 stages: - check-changelog - lint - build - test - deploy # https://git.pleroma.social/help/ci/yaml/workflow.md#switch-between-branch-pipelines-and-merge-request-pipelines workflow: rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never - if: $CI_COMMIT_BRANCH check-changelog: stage: check-changelog image: alpine rules: - if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma-fe' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^renovate/ when: never - if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma-fe' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'weblate' when: never - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" before_script: '' after_script: '' cache: {} script: - apk add git - sh ./tools/check-changelog lint-eslint: stage: lint script: - yarn - yarn ci-eslint lint-biome: stage: lint script: - yarn - yarn ci-biome lint-stylelint: stage: lint script: - yarn - yarn ci-stylelint test: stage: test tags: - amd64 - himem variables: APT_CACHE_DIR: apt-cache script: - mkdir -pv $APT_CACHE_DIR && apt-get -qq update - yarn - yarn playwright install firefox - yarn playwright install-deps - yarn unit-ci artifacts: # When the test fails, upload screenshots for better context on why it fails paths: - test/**/__screenshots__ when: on_failure e2e-pleroma: stage: test image: mcr.microsoft.com/playwright:v1.57.0-jammy services: - name: postgres:15-alpine alias: db - name: $PLEROMA_IMAGE alias: pleroma entrypoint: ["/bin/ash", "-c"] command: - | set -eu SEED_SENTINEL_PATH=/var/lib/pleroma/.e2e_seeded CONFIG_OVERRIDE_PATH=/var/lib/pleroma/config.exs echo '-- Waiting for database...' while ! pg_isready -U ${DB_USER:-pleroma} -d postgres://${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-pleroma} -t 1; do sleep 1s done echo '-- Writing E2E config overrides...' cat > $CONFIG_OVERRIDE_PATH </dev/null; then kill -TERM $PLEROMA_PID wait $PLEROMA_PID || true fi } trap cleanup INT TERM echo '-- Waiting for API...' api_ok=false for _i in $(seq 1 120); do if wget -qO- http://127.0.0.1:4000/api/v1/instance >/dev/null 2>&1; then api_ok=true break fi sleep 1s done if [ $api_ok != true ]; then echo 'Timed out waiting for Pleroma API to become available' exit 1 fi if [ ! -f $SEED_SENTINEL_PATH ]; then if [ -n ${E2E_ADMIN_USERNAME:-} ] && [ -n ${E2E_ADMIN_PASSWORD:-} ] && [ -n ${E2E_ADMIN_EMAIL:-} ]; then echo '-- Seeding admin user' $E2E_ADMIN_USERNAME '...' if ! /opt/pleroma/bin/pleroma_ctl user new $E2E_ADMIN_USERNAME $E2E_ADMIN_EMAIL --admin --password $E2E_ADMIN_PASSWORD -y; then echo '-- User already exists or creation failed, ensuring admin + confirmed...' /opt/pleroma/bin/pleroma_ctl user set $E2E_ADMIN_USERNAME --admin --confirmed fi else echo '-- Skipping admin seeding (missing E2E_ADMIN_* env)' fi touch $SEED_SENTINEL_PATH fi wait $PLEROMA_PID tags: - amd64 - himem variables: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1" FF_NETWORK_PER_BUILD: "true" PLEROMA_IMAGE: git.pleroma.social:5050/pleroma/pleroma:stable POSTGRES_USER: pleroma POSTGRES_PASSWORD: pleroma POSTGRES_DB: pleroma DB_USER: pleroma DB_PASS: pleroma DB_NAME: pleroma DB_HOST: db DB_PORT: 5432 DOMAIN: localhost INSTANCE_NAME: Pleroma E2E E2E_ADMIN_USERNAME: admin E2E_ADMIN_PASSWORD: adminadmin E2E_ADMIN_EMAIL: admin@example.com ADMIN_EMAIL: $E2E_ADMIN_EMAIL NOTIFY_EMAIL: $E2E_ADMIN_EMAIL VITE_PROXY_TARGET: http://pleroma:4000 VITE_PROXY_ORIGIN: http://localhost:4000 E2E_BASE_URL: http://localhost:8080 script: - npm install -g yarn@1.22.22 - yarn --frozen-lockfile - | echo "-- Waiting for Pleroma API..." api_ok="false" for _i in $(seq 1 120); do if wget -qO- http://pleroma:4000/api/v1/instance >/dev/null 2>&1; then api_ok="true" break fi sleep 1s done if [ "$api_ok" != "true" ]; then echo "Timed out waiting for Pleroma API to become available" exit 1 fi - yarn e2e:pw artifacts: when: on_failure paths: - test/e2e-playwright/test-results - test/e2e-playwright/playwright-report build: stage: build tags: - amd64 - himem script: - yarn - yarn build artifacts: paths: - dist/ docs-deploy: stage: deploy image: alpine:latest only: - develop@pleroma/pleroma-fe before_script: - apk add curl script: - curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' https://git.pleroma.social/api/v4/projects/673/trigger/pipeline