image: php:7.2-fpm stages: - bundle - release cache: paths: - vendor/ - node_modules/ before_script: - apt-get update -y # Install git (the php image doesn't have it) which is required by composer - apt-get install git -y # install rsync for file transfers - apt-get install rsync -y # install wget to download archives - apt-get install wget # Install composer - apt-get install zip unzip - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php composer-setup.php - php -r "unlink('composer-setup.php');" # Install NodeJS for NPM - curl -sL https://deb.nodesource.com/setup_12.x | bash - - apt-get update && apt-get install -y nodejs # Install php and js dependencies - php composer.phar install --no-dev --ignore-platform-reqs - npm install # build all UI assets - npm run build bundle_app: stage: bundle script: # download GeoLite2-City archive and extract it to writable/uploads - wget -c "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=$MAXMIND_LICENCE_KEY&suffix=tar.gz" -O - | tar -xz -C ./writable/uploads/ # rename extracted archives' folders - mv ./writable/uploads/GeoLite2-City* ./writable/uploads/GeoLite2-City # create bundle folder: uses .rsync-filter (-F) file to copy only needed files - rsync -aF --progress . ./castopod artifacts: name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}" paths: - castopod except: - main - beta - alpha release_app: stage: release script: # install required packages for prepare-release.sh script - apt-get install jq -y - apt-get install zip -y # make prepare-release.sh executable - chmod +x ./prepare-release.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