Commit 4028f23a authored by Nikos Psaromanolakis's avatar Nikos Psaromanolakis
Browse files

fix: Semantic release

parent fed412bc
Loading
Loading
Loading
Loading
Loading

.releaserc.json

0 → 100644
+32 −0
Original line number Diff line number Diff line
{
    "branches": [
      "main"
    ],
    "plugins": [
      ["@semantic-release/commit-analyzer", {
        "preset": "conventionalcommits",
        "presetConfig": {
          "types": [
            {"type": "feat", "section": "Features"},
            {"type": "fix", "section": "Bug Fixes"},
            {"type": "chore", "hidden": true},
            {"type": "docs", "hidden": true},
            {"type": "style", "hidden": true},
            {"type": "refactor", "hidden": true},
            {"type": "perf", "hidden": true},
            {"type": "test", "hidden": true}
          ],
          "issueUrlFormat": "https://labs.etsi.org/rep/osl/hypo/code/org.etsi.osl.hypo.core/common/-/issues/{{id}}"
        }
      }],
      "@semantic-release/release-notes-generator",
      ["@semantic-release/gitlab", {
        "gitlabUrl": "https://labs.etsi.org/rep/osl/hypo/code/org.etsi.osl.hypo.core/common"
      }],
      ["@semantic-release/changelog",{
          "changelogFile": "./CHANGELOG.md"
      }],
      "@semantic-release/git"
    ]
  }
  
 No newline at end of file
+80 −39
Original line number Diff line number Diff line
stages:
  - verify
  - prepare
  - release
  - deploy
  - prod_extract_next_release
  - prod_package
  - prod_release


default:
  image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/maven:3.8.3-openjdk-17

variables:
  MAVEN_CLI_OPTS: "-s .ci-settings.xml --batch-mode"
  MAVEN_CLI_OPTS: "-s ${CI_PROJECT_DIR}/.ci-settings.xml --batch-mode"
  BUILD_ENV: build.env

verify_job:
  stage: verify
  script: mvn ${MAVEN_CLI_OPTS} verify
  except:
    - main

prepare_job:
  stage: prepare
prod_extract_next_release_job:
  image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts
  stage: prod_extract_next_release
  variables:
    GITLAB_TOKEN: $GROUP_ACCESS_TOKEN
  script:
    - export VERSION=$(mvn ${MAVEN_CLI_OPTS} -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec)
    - echo "VERSION=${VERSION}" >> ${BUILD_ENV}
    - DEV_RELEASE_VERSION=$(npx -y
      -p @semantic-release/commit-analyzer@9.0.2
      -p @semantic-release/git@10.0.1
      -p @semantic-release/gitlab@9.5.0
      -p @semantic-release/release-notes-generator@10.0.3
      -p @semantic-release/exec@6.0.3
      -p @semantic-release/changelog@6.0.2
      -p conventional-changelog-conventionalcommits@5.0.0
      -p semantic-release@19.0.5
      semantic-release --dry-run | grep -oP '(?<=Published release ).*' | awk '{print $1}' || echo "no-release" )
    - echo "$DEV_RELEASE_VERSION" > dev_release_version.txt
    - cat dev_release_version.txt
  artifacts:
    reports:
      dotenv: ${BUILD_ENV}
    paths:
      - dev_release_version.txt
  only:
    refs:
    - main
      - develop
    variables:
      - '$CI_COMMIT_MESSAGE =~ /^release:\s\d/'


release_job:
  stage: release
  image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/release-cli:latest
prod_package_job:
  stage: prod_package
  image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/maven:3.8.3-openjdk-17
  dependencies:
    - prepare_job
    - prod_extract_next_release_job
  script:
    - echo "Creating release for version ${VERSION}"
  release:
    tag_name: ${VERSION}
    description: ${VERSION}
    - DEV_RELEASE_VERSION=$(cat dev_release_version.txt)
    - echo  $DEV_RELEASE_VERSION
    - if [ "$DEV_RELEASE_VERSION" = "no-release" ]; then exit 0; fi
    - chmod +x ./mvnw
    - ./mvnw ${MAVEN_CLI_OPTS}  -q versions:set -DnewVersion=$DEV_RELEASE_VERSION
    - ./mvnw ${MAVEN_CLI_OPTS} -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec
    - ./mvnw ${MAVEN_CLI_OPTS} deploy
    - git add pom.xml
    - git status
    - git config --global user.email $GITLAB_USER_EMAIL
    - git config --global user.name $GITLAB_USER_NAME
    - |
      if git commit -m "Release $DEV_RELEASE_VERSION: Update project version [skip ci]"; then
        REPO_URL="${CI_SERVER_URL}/${CI_PROJECT_PATH}.git"
        AUTH_REPO_URL="https://${GITLAB_USER_NAME}:${GROUP_ACCESS_TOKEN}@${REPO_URL#https://}"
        git remote set-url origin "$AUTH_REPO_URL"
        git push -f origin HEAD:main

      else
        echo "No changes to commit."
      fi
  artifacts:
    paths:
      - target/**
  only:
    refs:
    - main
      - develop
    variables:
      - '$CI_COMMIT_MESSAGE =~ /^release:\s\d/'

deploy_job:
  stage: deploy
prod_semantic_versioning_job:
  image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts
  stage: prod_release
  variables:
    GITLAB_TOKEN: $GROUP_ACCESS_TOKEN
  before_script:
    - git pull origin HEAD
  script:
    - echo "Deploying artifact to GitLab registry"
    - mvn ${MAVEN_CLI_OPTS} deploy
    - RELEASE_VERSION=$(npx -y
      -p @semantic-release/commit-analyzer@9.0.2
      -p @semantic-release/git@10.0.1
      -p @semantic-release/gitlab@9.5.0
      -p @semantic-release/release-notes-generator@10.0.3
      -p @semantic-release/exec@6.0.3
      -p @semantic-release/changelog@6.0.2
      -p conventional-changelog-conventionalcommits@5.0.0
      -p semantic-release@19.0.5
      semantic-release | grep -oP '(?<=Published release ).*' | awk '{print $1}' || echo "no-release" )
    - echo "$RELEASE_VERSION" > release_version.txt
    - cat release_version.txt
  artifacts:
    paths:
      - release_version.txt
  only:
    refs:
    - main
      - develop
    variables:
      - '$CI_COMMIT_MESSAGE =~ /^release:\s\d/'