Search code examples
javamavengitlabcicd

GitLab CI/CD runner fails to execute


I'm trying to work with gitlab CI/CD. I'm using Ubuntu server and Spring Boot with Maven. All is fine, runner starts pipeline jobs but it gets lots of errors with pattern "warning: failed to remove target/..." even if i call simple echo 'something' in .yaml pipeline script gitlab-ci.yaml. I found that if i remove /home/gitlab-runner/builds then all starts to work fine until /builds generated again. What am i doing wrong? I already tried to reinstall runner, making gitlab-user, different variations of script^ nothing works until i manually remove builds folder. However, there is also js frontend which is also on gitlab ci/cd and everything works fine there. Help me please!

Here is the error i get trying to get my java spring boot maven pipeline work:

enter image description here

gitlab-ci.yaml code here:

stages:
    - test
    - package
    - deploy
    # - sonar

test:
  stage: test
  only:
    - master
    - merge_requests
  except:
    - tags
  script:
    - echo 'test are running i swear!!!!!!'
    - sudo mvn clean
    - sudo systemctl stop socnet.service
  
package:
  stage: package
  only:
    - master
  except:
    - tags
  script:
    - sudo mvn package -Dmaven.test.skip=true
      
deploy_to_server:
  stage: deploy
  only:
    - master
  except:
    - tags
  script:
    - sudo systemctl restart socnet.service

Solution

  • Remove sudo from your .gitlab-ci.yml.

    Using sudo there will execute mvn package as root user, hence all generated files have root as the owner.

    When gitlab-runner picks up a job and proceeds to clean up previously generated files, it is still unprivileged and hence will fail to remove files owned by root.

    You might want to add the following variables into your .gitlab-ci.yml file in order to change the location for Maven dependencies cache to inside the project directory:

    variables:
      MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
      MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
    

    https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Maven.gitlab-ci.yml