223 lines
5.9 KiB
YAML
223 lines
5.9 KiB
YAML
# 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 <<EOF
|
|
import Config
|
|
|
|
config :pleroma, Pleroma.Captcha,
|
|
enabled: false
|
|
|
|
config :pleroma, :instance,
|
|
registrations_open: true,
|
|
account_activation_required: false,
|
|
approval_required: false
|
|
EOF
|
|
|
|
echo '-- Running migrations...'
|
|
/opt/pleroma/bin/pleroma_ctl migrate
|
|
|
|
echo '-- Starting!'
|
|
/opt/pleroma/bin/pleroma start &
|
|
PLEROMA_PID=$!
|
|
|
|
cleanup() {
|
|
if kill -0 $PLEROMA_PID 2>/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
|