Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.65 KiB
Newer Older
  • Learn to ignore specific revisions
  • image: code.podlibre.org:5050/podlibre/castopod-host: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-host with commit ref as version
        - ./scripts/bundle.sh ${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}
    
      dependencies:
        - php-dependencies
        - js-dependencies
    
        name: "castopod-host-${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