.update_PHP_deps: variables: TIMEZONE: "Europe/Amsterdam" # 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: "" # Used for the update commit GIT_EMAIL: "" # Used for the update commit GITLAB_USERNAME: "" # Used for pushing the new branch and opening the MR GITLAB_ACCESS_TOKEN: "" # Used for pushing the new branch and opening the MR MERGE_IF_SUCCESSFUL: "false" # 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: "" 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 stage: "update_PHP_deps" rules: - if: '$SCHEDULED_PIPELINE == $CI_JOB_NAME' script: # `git`, `jq` and `curl` are needed, so if they are not already installed, they should be installed in the `before_script` of the extending job - git ${JOB_GIT_FLAGS} fetch origin ${TARGET_BRANCH} - git ${JOB_GIT_FLAGS} checkout ${TARGET_BRANCH} - 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}" - | vendor/hgraca/ci-cd-composer-update/src/GitLab/auto_merge_mr.sh \ MERGE_IF_SUCCESSFUL="${MERGE_IF_SUCCESSFUL}" \ MR_BRANCH="${MR_BRANCH}" \ MR_TITLE="\"${TITLE}\"" \ TARGET_BRANCH="${TARGET_BRANCH}" \ ACCESS_TOKEN="${GITLAB_ACCESS_TOKEN}" \ SECONDS_BETWEEN_POOLING="${SECONDS_BETWEEN_POOLING}" \ GITLAB_API="${GITLAB_API_URL}" \ CURL_FLAGS="${JOB_CURL_FLAGS}"