如何使用Gitlab CI/CD在aws上部署maven项目

如何使用Gitlab CI/CD在aws上部署maven项目,maven,amazon-ec2,gitlab,gitlab-ci,Maven,Amazon Ec2,Gitlab,Gitlab Ci,我正在尝试使用Gitlab CI/CD在aws上部署java maven项目 这是我的.gitlab-ci.yml image: maven:3-jdk-8 services: - docker:dind stages: - test - build - deploy maven-test: stage: test script: - echo "Test stage" - mvn clean validate

我正在尝试使用Gitlab CI/CD在aws上部署java maven项目

这是我的.gitlab-ci.yml


image: maven:3-jdk-8
services:
    - docker:dind

stages:
    - test
    - build
    - deploy

maven-test:
    stage: test
    script:
        - echo "Test stage"
        - mvn clean validate compile test -B


maven-build:
    stage: build
    script:
        - echo "Build stage"
        - mvn install -B -DskipTests
    artifacts:
        paths:
            - ./target/*.jar

maven-deploy:
    stage: deploy
    script:
        - echo "Deploy stage"
        - scp -v -o StrictHostKeyChecking=no -I "mykey.pem" ./target/*.jar ubuntu@xxxxxxx.com:*.jar
    when: manual


如果我在pc中的终端上执行scp命令,那么jar将上载到aws ec2实例中,而在gitlab中,我有错误,jar不会上载

这是我使用Gitlab CI和aws的第一种方法,所以有人能一步一步地解释我需要做什么来使用Gitlab CI在aws ec2实例中部署项目吗


谢谢

由于您没有发布太多关于您的问题的信息,也没有发布错误信息,因此我只建议您关注以下几点:

从GitLab的角度来看:

  • 在gitlab runner上运行该命令(
    maven deploy
    )时,您确定“mykey.pem”在存储库中可用吗
  • 另外,您是否确定使用的是,如果不是,则无法使用
    image:
    指令,因此它可能在本地没有mvn/scp
  • 您可能希望查看该指令,并确保在下一个任务中提供该工件。这应该在默认情况下完成 从AWS的角度来看:

  • 确保ubuntu目标机器/服务器的端口22暴露于运行gitlab runner的EC2机器
  • 编辑:

    如果您收到的错误与pem文件权限有关,请查看此解决方案。另一个类似的决议是


    如果您将chmod 400 mykey.pem放在scp之前,可能会解决您的问题。

    我的错误是'mykey.pem'的权限0666太开放如果这是您的错误,请查看此错误。它讨论了如何在AWS EC2上避免此错误。似乎如果您将
    chmod 400 mykey.pem
    放在scp之前,它可能会修复它。