我正在尝试使用 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 的角度来看:
- 你确定在gitlab-runner上运行该命令(
maven-deploy
(时,"mykey.pem"在存储库中可用吗? - 另外,您确定使用的是docker gitlab-runner,如果您不是,那么您就不能使用
image:
指令,因此它可能在本地没有mvn/scp。 - 您可能需要查看依赖项指令,并确保在下一个任务中提供该项目。这应该默认完成!
从 AWS 的角度来看:
- 确保 ubuntu 目标计算机/服务器将端口 22 暴露给运行 gitlab-runner 的 EC2 计算机。
编辑:
如果您收到的错误与 pem 文件权限有关,请查看此解决方案 AWS EC2 pem 文件问题。另一个类似的决议在这里。
似乎如果您将chmod 400 mykey.pem放在scp之前,它可能会解决您的问题。