126 lines
3.5 KiB
YAML
126 lines
3.5 KiB
YAML
stages:
|
|
- lint
|
|
- build
|
|
|
|
.build-master:
|
|
image:
|
|
name: ${CI_DOCKER_IMAGE}
|
|
stage: build
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
changes:
|
|
- '**/*.php'
|
|
- '**/*.js'
|
|
- '.docker/**/*'
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
when: manual
|
|
before_script:
|
|
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
|
|
- docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_TOKEN}
|
|
|
|
- docker run --privileged --rm registry.fakecake.org/docker.io/tonistiigi/binfmt --install all
|
|
- docker buildx create --name mp-builder --driver docker-container --bootstrap --use
|
|
|
|
script:
|
|
- BUILD_TIMESTAMP=$(date -d $(echo ${CI_COMMIT_TIMESTAMP} | cut -b 1-10) +%y.%m)
|
|
|
|
- docker buildx build
|
|
--push
|
|
--platform linux/amd64,linux/arm64,linux/arm/v7
|
|
--tag ${CI_REGISTRY}/cthulhoo/${CI_JOB_NAME}:${BUILD_TIMESTAMP}-${CI_COMMIT_SHORT_SHA}
|
|
--tag ${CI_REGISTRY}/cthulhoo/${CI_JOB_NAME}:latest
|
|
--tag cthulhoo/${CI_JOB_NAME}:${BUILD_TIMESTAMP}-${CI_COMMIT_SHORT_SHA}
|
|
--tag cthulhoo/${CI_JOB_NAME}:latest
|
|
--build-context app-src=.
|
|
--cache-from type=registry,ref=${CI_REGISTRY}/cthulhoo/${CI_JOB_NAME}:latest
|
|
--cache-to type=inline
|
|
${BUILD_CONTEXT}
|
|
|
|
# .build-branch:
|
|
# image:
|
|
# name: ${CI_KANIKO_IMAGE}
|
|
# entrypoint: [""] # kaniko doesn't have /bin/sh
|
|
# stage: build
|
|
# rules:
|
|
# - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
|
|
# script:
|
|
# - /kaniko/executor
|
|
# --context "${BUILD_CONTEXT}"
|
|
# --dockerfile "${DOCKER_DIR}/Dockerfile"
|
|
# --destination "${CI_REGISTRY}/cthulhoo/${NAME}:${CI_COMMIT_BRANCH}-latest"
|
|
# --destination "${CI_REGISTRY}/cthulhoo/${NAME}:${CI_COMMIT_BRANCH}-${CI_COMMIT_SHORT_SHA}"
|
|
# --no-push
|
|
|
|
phpunit:
|
|
image:
|
|
name: ${CI_DOCKER_IMAGE}
|
|
stage: lint
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH
|
|
changes:
|
|
- '**/*.php'
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_COMMIT_BRANCH
|
|
when: manual
|
|
allow_failure: true
|
|
script:
|
|
- php81 ./vendor/bin/phpunit
|
|
|
|
eslint:
|
|
image:
|
|
name: ${CI_DOCKER_IMAGE}
|
|
stage: lint
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH
|
|
changes:
|
|
- '**/*.js'
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_COMMIT_BRANCH
|
|
when: manual
|
|
allow_failure: true
|
|
script:
|
|
- npm install
|
|
- npx eslint js plugins
|
|
|
|
phpstan:
|
|
image:
|
|
name: ${CI_DOCKER_IMAGE}
|
|
stage: lint
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH
|
|
changes:
|
|
- '**/*.php'
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_COMMIT_BRANCH
|
|
when: manual
|
|
allow_failure: true
|
|
script:
|
|
- php81 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G
|
|
|
|
ttrss-web-nginx:
|
|
extends: .build-master
|
|
variables:
|
|
BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/web-nginx
|
|
|
|
ttrss-fpm-pgsql-static:
|
|
extends: .build-master
|
|
variables:
|
|
BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/app
|
|
|
|
phpdoc:
|
|
image:
|
|
name: ${CI_DOCKER_IMAGE}
|
|
stage: build
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
changes:
|
|
- '**/*.php'
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
when: manual
|
|
script:
|
|
- php81 /phpDocumentor.phar -d classes -d include -t phpdoc --visibility=public
|
|
- 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/
|