.template: &job-check-version-cohesion image: gitlab.wpdesk.dev:5050/wpdesk/docker-tests/php-box:8.3.2 stage: tests variables: PLUGIN_VERSION: ${CI_COMMIT_REF_NAME} tags: - deploy before_script: - echo "Plugin version from tag ${PLUGIN_VERSION}" script: # official semver regex: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string - SEMVER_REGEX="(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?" - SEMVER_PART="(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?" - echo "Checking plugin version in plugin header" - if [[ "$(grep -h 'Version:' *.php | grep -oP $SEMVER_REGEX)" != "$PLUGIN_VERSION" ]]; then exit 1; fi - | # Check for $plugin_version variable in file only for plugin-flow plugins. wpdesk/wp-init doesn't use such identifier. if ! composer show -q wpdesk/wp-init; then echo "Checking plugin version in variable"; if [[ "$(grep -h '$plugin_version' *.php | grep -oP $SEMVER_REGEX)" != "$PLUGIN_VERSION" ]]; then exit 1; fi fi - | if [[ -f readme.txt ]]; then # skip check if it's preproduction version if [[ "$(echo $PLUGIN_VERSION | grep -oP $SEMVER_PART)" ]]; then exit 0 else echo "Checking plugin version in readme.txt" if [[ "$(grep -h 'Stable tag:' readme.txt | grep -oP $SEMVER_REGEX)" != "$PLUGIN_VERSION" ]]; then exit 1; fi fi fi check version cohesion tag: <<: *job-check-version-cohesion except: variables: - $IS_LIBRARY - $IS_NPM_LIBRARY only: refs: - tags check version cohesion: <<: *job-check-version-cohesion allow_failure: true except: variables: - $IS_LIBRARY - $IS_NPM_LIBRARY refs: - tags before_script: - PLUGIN_VERSION=`grep -h 'Version' *.php | grep -oE '([0-9]+.?)+'` - echo "Plugin version from plugin file ${PLUGIN_VERSION}"