2023-04-01 06:19:16 +02:00
|
|
|
stages:
|
|
|
|
- lint
|
|
|
|
- build
|
2023-10-21 18:55:15 +02:00
|
|
|
- test
|
2023-10-21 19:17:32 +02:00
|
|
|
- publish
|
2023-04-01 06:19:16 +02:00
|
|
|
|
2023-04-02 11:30:33 +02:00
|
|
|
variables:
|
|
|
|
ESLINT_PATHS: js plugins
|
2023-11-25 18:21:10 +01:00
|
|
|
REGISTRY_PROJECT: cthulhoo
|
2023-04-01 06:19:16 +02:00
|
|
|
|
2023-04-02 11:30:33 +02:00
|
|
|
include:
|
|
|
|
- project: 'ci/ci-templates'
|
|
|
|
ref: master
|
2023-10-19 08:47:01 +02:00
|
|
|
file: .ci-build-docker-kaniko.yml
|
2023-04-02 11:30:33 +02:00
|
|
|
- project: 'ci/ci-templates'
|
|
|
|
ref: master
|
|
|
|
file: .ci-lint-common.yml
|
2023-10-21 18:55:15 +02:00
|
|
|
- project: 'ci/ci-templates'
|
|
|
|
ref: master
|
|
|
|
file: .ci-integration-test.yml
|
2024-02-01 16:54:47 +01:00
|
|
|
- project: 'ci/ci-templates'
|
|
|
|
ref: master
|
|
|
|
file: .ci-deploy-helm-chart.yml
|
2023-04-01 06:19:16 +02:00
|
|
|
|
|
|
|
phpunit:
|
2023-04-02 11:30:33 +02:00
|
|
|
extends: .phpunit
|
2023-10-28 17:07:54 +02:00
|
|
|
variables:
|
2023-12-02 16:04:55 +01:00
|
|
|
PHPUNIT_ARGS: --exclude integration --coverage-filter classes --coverage-filter include
|
2023-04-01 06:19:16 +02:00
|
|
|
|
|
|
|
eslint:
|
2023-04-02 11:32:28 +02:00
|
|
|
extends: .eslint
|
2023-04-01 06:19:16 +02:00
|
|
|
|
|
|
|
phpstan:
|
2023-04-02 11:30:33 +02:00
|
|
|
extends: .phpstan
|
2023-04-01 06:19:16 +02:00
|
|
|
|
2023-04-05 07:51:35 +02:00
|
|
|
ttrss-web-nginx:branch:
|
|
|
|
extends: .build-branch
|
|
|
|
variables:
|
2023-10-19 08:47:01 +02:00
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/web-nginx/Dockerfile
|
2023-04-05 07:51:35 +02:00
|
|
|
|
2023-10-21 19:17:32 +02:00
|
|
|
ttrss-fpm-pgsql-static:branch:
|
2023-11-01 11:08:50 +01:00
|
|
|
extends: .build-branch
|
|
|
|
variables:
|
2023-10-19 08:47:01 +02:00
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/app/Dockerfile
|
2023-04-05 07:51:35 +02:00
|
|
|
|
2023-10-21 19:17:32 +02:00
|
|
|
ttrss-web-nginx:
|
|
|
|
extends: .build-master-commit-only
|
|
|
|
variables:
|
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/web-nginx/Dockerfile
|
|
|
|
|
|
|
|
ttrss-fpm-pgsql-static:
|
2023-11-01 11:09:29 +01:00
|
|
|
extends: .build-master-commit-only
|
|
|
|
variables:
|
2023-10-19 08:47:01 +02:00
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/app/Dockerfile
|
2023-04-01 06:19:16 +02:00
|
|
|
|
2023-04-01 08:34:54 +02:00
|
|
|
phpdoc:
|
2023-10-14 14:18:32 +02:00
|
|
|
image: ${PHP_IMAGE}
|
2023-10-21 19:32:31 +02:00
|
|
|
stage: publish
|
2023-04-01 08:34:54 +02:00
|
|
|
rules:
|
2023-04-06 19:27:04 +02:00
|
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $PHPDOC_DEPLOY_SSH_KEY != null
|
2023-04-01 08:34:54 +02:00
|
|
|
script:
|
2023-12-10 07:36:09 +01:00
|
|
|
- php83 /phpDocumentor.phar -d classes -d include -t phpdoc --visibility=public
|
2023-04-01 08:34:54 +02:00
|
|
|
- mkdir -p ~/.ssh &&
|
|
|
|
cp ${PHPDOC_DEPLOY_SSH_KEY} ~/.ssh/id_ed25519 &&
|
|
|
|
chmod 0600 ~/.ssh/id_ed25519
|
|
|
|
- rsync -av -e 'ssh -o StrictHostKeyChecking=no' phpdoc/ ${PHPDOC_DEPLOY_HOST}:phpdoc/
|
2023-10-21 18:55:15 +02:00
|
|
|
|
2023-10-29 07:21:48 +01:00
|
|
|
phpunit-integration:
|
|
|
|
image: ${PHP_IMAGE}
|
|
|
|
variables:
|
2024-02-01 16:56:27 +01:00
|
|
|
TEST_HELM_REPO: oci://registry.fakecake.org/infra/helm-charts/tt-rss
|
2023-10-29 07:21:48 +01:00
|
|
|
extends: .integration-test
|
|
|
|
script:
|
|
|
|
- export K8S_NAMESPACE=$(kubectl get pods -o=custom-columns=NS:.metadata.namespace | tail -1)
|
|
|
|
- export API_URL="http://tt-rss-${CI_COMMIT_SHORT_SHA}-app.$K8S_NAMESPACE.svc.cluster.local/tt-rss/api/"
|
2023-12-02 09:38:25 +01:00
|
|
|
- export TTRSS_DB_HOST=tt-rss-${CI_COMMIT_SHORT_SHA}-app.$K8S_NAMESPACE.svc.cluster.local
|
|
|
|
- export TTRSS_DB_USER=postgres
|
|
|
|
- export TTRSS_DB_NAME=postgres
|
|
|
|
- export TTRSS_DB_PASS=password
|
2023-12-10 07:36:09 +01:00
|
|
|
- php83 vendor/bin/phpunit --group integration --do-not-cache-result --log-junit phpunit-report.xml --coverage-cobertura phpunit-coverage.xml --coverage-text --colors=never
|
2023-12-02 09:42:12 +01:00
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
reports:
|
|
|
|
junit: phpunit-report.xml
|
|
|
|
coverage_report:
|
|
|
|
coverage_format: cobertura
|
|
|
|
path: phpunit-coverage.xml
|
|
|
|
coverage: '/^\s*Lines:\s*\d+.\d+\%/'
|
2023-10-29 07:21:48 +01:00
|
|
|
|
2023-10-29 06:58:13 +01:00
|
|
|
selenium:
|
2023-10-22 12:35:01 +02:00
|
|
|
image: ${SELENIUM_IMAGE}
|
2023-10-21 18:55:15 +02:00
|
|
|
variables:
|
2024-02-01 16:56:27 +01:00
|
|
|
TEST_HELM_REPO: oci://registry.fakecake.org/infra/helm-charts/tt-rss
|
2023-10-22 12:35:01 +02:00
|
|
|
SELENIUM_GRID_ENDPOINT: http://selenium-hub.selenium-grid.svc.cluster.local:4444/wd/hub
|
2023-10-21 18:55:15 +02:00
|
|
|
extends: .integration-test
|
2023-10-21 19:59:26 +02:00
|
|
|
script:
|
2023-10-22 12:42:41 +02:00
|
|
|
- export K8S_NAMESPACE=$(kubectl get pods -o=custom-columns=NS:.metadata.namespace | tail -1)
|
2023-10-22 12:35:01 +02:00
|
|
|
- python3 tests/integration/selenium_test.py
|
2023-10-29 07:19:35 +01:00
|
|
|
needs:
|
|
|
|
- job: phpunit-integration
|
2023-12-02 10:44:21 +01:00
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
reports:
|
|
|
|
junit: selenium-report.xml
|
2023-10-21 19:17:32 +02:00
|
|
|
|
|
|
|
ttrss-web-nginx:publish:
|
|
|
|
stage: publish
|
|
|
|
extends: .build-master
|
|
|
|
variables:
|
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/web-nginx/Dockerfile
|
|
|
|
|
|
|
|
ttrss-fpm-pgsql-static:publish:
|
|
|
|
stage: publish
|
|
|
|
extends: .build-master
|
|
|
|
variables:
|
|
|
|
DOCKERFILE: ${CI_PROJECT_DIR}/.docker/app/Dockerfile
|
2023-10-22 18:12:51 +02:00
|
|
|
|
2024-02-17 10:02:07 +01:00
|
|
|
update-prod:
|
2024-02-17 10:07:29 +01:00
|
|
|
image: ${INFRA_IMAGE}
|
2024-02-17 10:02:07 +01:00
|
|
|
rules:
|
|
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $PROD_HELM_TOKEN != null
|
|
|
|
stage: publish
|
|
|
|
script:
|
|
|
|
- git clone https://token:${PROD_HELM_TOKEN}@gitlab.fakecake.org/git/helm-charts/tt-rss-prod.git chart
|
|
|
|
- cd chart
|
|
|
|
- yq -ei '.app.image.tag = "${CI_COMMIT_SHORT_SHA}"' values-prod.yaml
|
|
|
|
- yq -ei '.web.image.tag = "${CI_COMMIT_SHORT_SHA}"' values-prod.yaml
|
|
|
|
- git diff
|
|
|
|
- git commit -m "update image tag to ${CI_COMMIT_SHORT_SHA}"
|
|
|
|
- git push origin master
|
|
|
|
|
2023-10-22 18:12:51 +02:00
|
|
|
update-demo:
|
2024-02-01 16:53:31 +01:00
|
|
|
extends: .deploy-helm-chart
|
2023-10-22 18:12:51 +02:00
|
|
|
variables:
|
2024-02-01 16:53:31 +01:00
|
|
|
HELM_CHART: oci://registry.fakecake.org/infra/helm-charts/tt-rss
|
|
|
|
HELM_VALUES: .helm/values-demo.yaml
|
|
|
|
HELM_RELEASE: tt-rss-demo
|
|
|
|
HELM_ARGS: --set imageTag=${CI_COMMIT_SHORT_SHA}
|
2023-10-22 18:26:31 +02:00
|
|
|
rules:
|
2023-10-22 18:27:42 +02:00
|
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_REGISTRY_USER != null && $UPDATE_DEMO == "true"
|
2024-02-01 16:53:31 +01:00
|
|
|
stage: publish
|