Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.77 KiB
Newer Older
image: code.castopod.org:5050/adaures/castopod:latest
  stage: prepare
  script:
    # Install all php dependencies
    - composer install --prefer-dist --no-ansi --no-interaction --no-progress --ignore-platform-reqs
    # Install all npm dependencies
    - chmod +x ./scripts/lint-commit-msg.sh
    - ./scripts/lint-commit-msg.sh
    # phpstan - increase memory limit to 1GB to prevent script failure
    - php -d memory_limit=1G vendor/bin/phpstan analyse --ansi
    - vendor/bin/rector process --dry-run --ansi
lint-js:
  stage: quality
  script:
    - npm run prettier
    - npm run typecheck
    - npm run lint
    - npm run lint:css
tests:
  stage: quality
  script:
    # run phpunit without code coverage
    # TODO: add code coverage
    - vendor/bin/phpunit --no-coverage
  before_script:
    # prepare dependencies before bundling
    - chmod +x ./scripts/bundle-prepare.sh
    - ./scripts/bundle-prepare.sh
    # 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
    name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}"
  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
    # make release scripts executable
    - chmod +x ./scripts/bundle.sh
    - chmod +x ./scripts/package.sh

    # run semantic-release script (configured in `.releaserc.json` file)
    - npm run release
  dependencies:
    - php-dependencies
    - js-dependencies

documentation:
  stage: deploy
  trigger:
    include: docs/.gitlab-ci.yml
    strategy: depend
  only:
    changes:
      - docs/**/*