【问题标题】:How to deploy maven project on aws with Gitlab CI/CD如何使用 Gitlab CI/CD 在 aws 上部署 maven 项目
【发布时间】:2019-08-22 15:10:30
【问题描述】:

我正在尝试使用 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


如果我在我的电脑的终端上执行 scp 命令,那么 jar 会上传到 aws ec2 实例中,而在 gitlab 中我有错误并且 jar 没有上传。

这是我第一次使用 Gitlab CI 和 aws,所以有人可以逐步解释我需要做什么才能使用 Gitlab CI 在 aws ec2 实例中部署项目吗?

谢谢!

【问题讨论】:

    标签: maven amazon-ec2 gitlab gitlab-ci


    【解决方案1】:

    由于您没有发布太多关于您的问题的信息,也没有发布错误,所以我只建议您查看一些内容:

    从 GitLab 的角度来看:

    1. 在 gitlab-runner 上运行该命令 (maven-deploy) 时,您确定“mykey.pem”在存储库中可用吗?
    2. 另外你确定你使用的是 dockergitlab-runner,如果你不是,那么你不能使用 image: 指令,因此它可能没有 mvn/本地 scp。
    3. 您可能希望查看dependencies 指令并确保您在下一个任务中使该工件可用。这应该默认完成!

    从 AWS 的角度来看:

    1. 确保 ubuntu 目标机器/服务器的端口 22 暴露给运行 gitlab-runner 的 EC2 机器。

    编辑:

    如果您收到的错误与 pem 文件权限有关,请查看AWS EC2 pem file issue 的此解决方案。另一个类似的分辨率是here

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

    【讨论】:

    • 我的错误是'mykey.pem的权限0666,太开放了
    • 如果这是您的错误,请查看link。它讨论了如何在 AWS EC2 上避免此错误。好像如果你把 chmod 400 mykey.pem 放在 scp 之前它可能会修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2020-09-21
    • 2018-12-04
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多