stages: - prepare - build - test - update - deploy variables: TIMEZONE: "America/New_York" # For the system in general DATE_TIMEZONE: ${TIMEZONE} # For PHP GIT_DEPTH: 1 GITLAB_API_URL: ${CI_API_V4_URL} TARGET_BRANCH: ${CI_COMMIT_REF_NAME} # This is the branch chosen in the `Pipeline Schedule` TARGET_REMOTE: "https://${GITLAB_USERNAME}:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git" # These could/should be overridden in an extending job: UPDATE_BRANCH_PREFIX: "update_PHP_deps_" # Used for the update branch name, it will be followed by the datetime GIT_USER: "DependBot" # Used for the update commit GIT_EMAIL: "webmaster@thetempusproject.com" # Used for the update commit GITLAB_USERNAME: "root" # Used for pushing the new branch and opening the MR GITLAB_ACCESS_TOKEN: "glpat-PKEmivGtBfbz4DVPdhzk" # Used for pushing the new branch and opening the MR MERGE_IF_SUCCESSFUL: "true" # Set to true, to merge automatically if the pipeline succeeds SECONDS_BETWEEN_POOLING: 10 # Nbr of seconds between checking if the MR pipeline is successful, so then it will merge JOB_GIT_FLAGS: "" JOB_CURL_FLAGS: "" JOB_COMPOSER_FLAGS: "" composer_update: stage: update rules: - if: '$CI_COMMIT_BRANCH == "main"' image: composer:latest interruptible: true # allows to stop the job if a newer pipeline starts, saving resources and allowing new jobs to start because job concurrency is limited script: - git ${JOB_GIT_FLAGS} fetch origin ${TARGET_BRANCH} - git ${JOB_GIT_FLAGS} checkout ${TARGET_BRANCH} - git reset --hard origin/main - git pull --allow-unrelated-histories - export DATE_TIME="$(date '+%Y%m%d%H%M%S')" - export MR_BRANCH="${UPDATE_BRANCH_PREFIX}${DATE_TIME}" - git ${JOB_GIT_FLAGS} checkout -b "${MR_BRANCH}" - composer update ${JOB_COMPOSER_FLAGS} - if [ "$(git diff)" == "" ]; then echo "No updates needed!"; exit 0; fi - export TITLE="Update PHP dependencies [${DATE_TIME}]" - git ${JOB_GIT_FLAGS} commit -a -m "${TITLE}" - git ${JOB_GIT_FLAGS} push "${TARGET_REMOTE}" "${MR_BRANCH}" artifacts: paths: - vendor/ cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ prepare: stage: prepare script: - echo "Preparing environment..." build: stage: build script: - echo "Building the project..." test: stage: test script: - echo "Running tests..." deploy: stage: deploy script: - echo "Deploying the project..."