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



我正在尝试使用 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 实例中部署项目吗?

谢谢!

由于您没有发布太多关于您的问题的信息,也没有发布错误,因此我只建议一些事情:

从 GitLab 的角度来看:

  1. 你确定在gitlab-runner上运行该命令(maven-deploy(时,"mykey.pem"在存储库中可用吗?
  2. 另外,您确定使用的是docker gitlab-runner,如果您不是,那么您就不能使用image:指令,因此它可能在本地没有mvn/scp。
  3. 您可能需要查看依赖项指令,并确保在下一个任务中提供该项目。这应该默认完成!

从 AWS 的角度来看:

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

编辑:

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

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

最新更新