image: code.podlibre.org:5050/podlibre/castopod-host:latest stages: - prepare - quality - bundle - release cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ - .npm/ dependencies: stage: prepare script: # Install all php dependencies - composer install --prefer-dist --no-ansi --no-interaction --no-progress --ignore-platform-reqs # Install all npm dependencies - npm ci --cache .npm --prefer-offline lint-commit-msg: stage: quality cache: key: ${CI_COMMIT_REF_SLUG} script: - chmod +x ./scripts/lint-commit.sh # lint commit message - ./scripts/lint-commit.sh lint-php: stage: quality cache: key: ${CI_COMMIT_REF_SLUG} 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 lint-js: stage: quality cache: key: ${CI_COMMIT_REF_SLUG} script: - npm run prettier - npm run typecheck - npm run eslint - npm run stylelint tests: stage: quality cache: key: ${CI_COMMIT_REF_SLUG} script: # run phpunit without code coverage # TODO: add code coverage - vendor/bin/phpunit --no-coverage bundle: stage: bundle cache: key: ${CI_COMMIT_REF_SLUG} script: # make scripts/bundle.sh executable - chmod +x ./scripts/bundle-prepare.sh - chmod +x ./scripts/bundle.sh # bundle castopod-host with commit ref as version - ./scripts/bundle-prepare.sh - ./scripts/bundle.sh ${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA} artifacts: name: "castopod-host-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}" paths: - castopod-host except: - main - beta - alpha release: stage: release cache: key: ${CI_COMMIT_REF_SLUG} script: # make release scripts executable - chmod +x ./scripts/bundle-prepare.sh - chmod +x ./scripts/bundle.sh - chmod +x ./scripts/package.sh # prepare bundle before release, both bundle and package scripts will be run by semantic-release - ./scripts/bundle-prepare.sh # IMPORTANT: delete local git tags before release to prevent eventual script failure (ie. tag already exists) - git tag | xargs git tag -d # run semantic-release script (configured in `.releaserc.json` file) - npm run release only: - main - alpha - beta