mirror of
https://code.castopod.org/adaures/castopod.git
synced 2024-08-18 15:33:21 +02:00
184 lines
3.8 KiB
YAML
184 lines
3.8 KiB
YAML
image: code.castopod.org:5050/adaures/castopod:ci
|
|
|
|
stages:
|
|
- prepare
|
|
- quality
|
|
- bundle
|
|
- release
|
|
- deploy
|
|
- build
|
|
|
|
php-dependencies:
|
|
stage: prepare
|
|
script:
|
|
# Install all php dependencies
|
|
- composer install --prefer-dist --no-ansi --no-interaction --no-progress --ignore-platform-reqs
|
|
cache:
|
|
key:
|
|
files:
|
|
- composer.lock
|
|
paths:
|
|
- .composer-cache
|
|
artifacts:
|
|
expire_in: 30 mins
|
|
paths:
|
|
- vendor/
|
|
|
|
js-dependencies:
|
|
stage: prepare
|
|
script:
|
|
# Install all js dependencies
|
|
- pnpm install
|
|
cache:
|
|
key:
|
|
files:
|
|
- pnpm-lock.yaml
|
|
paths:
|
|
- .pnpm-store
|
|
artifacts:
|
|
expire_in: 30 mins
|
|
paths:
|
|
- node_modules/
|
|
|
|
lint-commit-msg:
|
|
stage: quality
|
|
script:
|
|
- chmod +x ./scripts/lint-commit-msg.sh
|
|
# lint commit message
|
|
- ./scripts/lint-commit-msg.sh
|
|
dependencies:
|
|
- js-dependencies
|
|
only:
|
|
- develop
|
|
- main
|
|
- beta
|
|
- alpha
|
|
|
|
lint-php:
|
|
stage: quality
|
|
script:
|
|
# check php code style
|
|
- vendor/bin/ecs check --ansi
|
|
# phpstan - increase memory limit to 1GB to prevent script failure
|
|
- php -d memory_limit=1G vendor/bin/phpstan analyse --ansi
|
|
# run rector to check for php errors
|
|
- vendor/bin/rector process --dry-run --ansi
|
|
dependencies:
|
|
- php-dependencies
|
|
|
|
lint-js:
|
|
stage: quality
|
|
script:
|
|
- pnpm run prettier
|
|
- pnpm run typecheck
|
|
- pnpm run lint
|
|
- pnpm run lint:css
|
|
dependencies:
|
|
- js-dependencies
|
|
|
|
tests:
|
|
stage: quality
|
|
services:
|
|
- mariadb
|
|
variables:
|
|
MYSQL_ROOT_PASSWORD: "R00Tp4ssW0RD"
|
|
MYSQL_DATABASE: "test"
|
|
MYSQL_USER: "castopod"
|
|
MYSQL_PASSWORD: "castopod"
|
|
script:
|
|
- echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE"
|
|
|
|
# run phpunit without code coverage
|
|
# TODO: add code coverage
|
|
- vendor/bin/phpunit --no-coverage
|
|
dependencies:
|
|
- php-dependencies
|
|
|
|
bundle:
|
|
stage: bundle
|
|
before_script:
|
|
# prepare dependencies before bundling
|
|
- chmod +x ./scripts/bundle-prepare.sh
|
|
- ./scripts/bundle-prepare.sh
|
|
script:
|
|
# make scripts/bundle.sh executable
|
|
- chmod +x ./scripts/bundle.sh
|
|
|
|
# bundle castopod with commit ref as version
|
|
- ./scripts/bundle.sh ${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}
|
|
dependencies:
|
|
- php-dependencies
|
|
- js-dependencies
|
|
artifacts:
|
|
name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- castopod
|
|
only:
|
|
variables:
|
|
- $CI_PROJECT_NAMESPACE == "adaures"
|
|
except:
|
|
- main
|
|
- beta
|
|
- alpha
|
|
|
|
release:
|
|
stage: release
|
|
before_script:
|
|
# IMPORTANT: delete local git tags before release to prevent eventual script failure (ie. tag already exists)
|
|
- git tag | xargs git tag -d
|
|
|
|
# prepare dependencies before release, both bundle and package scripts will be run by semantic-release
|
|
- chmod +x ./scripts/bundle-prepare.sh
|
|
- ./scripts/bundle-prepare.sh
|
|
script:
|
|
# make release scripts executable
|
|
- chmod +x ./scripts/bundle.sh
|
|
- chmod +x ./scripts/package.sh
|
|
|
|
# run semantic-release script (configured in `.releaserc.json` file)
|
|
- pnpm run release
|
|
dependencies:
|
|
- php-dependencies
|
|
- js-dependencies
|
|
artifacts:
|
|
paths:
|
|
- castopod
|
|
- CP_VERSION.env
|
|
only:
|
|
- main
|
|
- beta
|
|
- alpha
|
|
|
|
website:
|
|
stage: deploy
|
|
trigger: adaures/castopod.org
|
|
only:
|
|
- main
|
|
- beta
|
|
- alpha
|
|
|
|
documentation:
|
|
stage: deploy
|
|
trigger:
|
|
include: docs/.gitlab-ci.yml
|
|
strategy: depend
|
|
only:
|
|
changes:
|
|
- docs/**/*
|
|
|
|
docker:
|
|
stage: build
|
|
trigger:
|
|
include: docker/production/.gitlab-ci.yml
|
|
strategy: depend
|
|
variables:
|
|
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
|
|
only:
|
|
refs:
|
|
- develop
|
|
- main
|
|
- beta
|
|
- alpha
|
|
variables:
|
|
- $CI_PROJECT_NAMESPACE == "adaures"
|