现在,我将(Spring Boot)应用程序部署到EC2实例,例如:
scp
命令(Ubuntu)从我的本地计算机部署/上传JAR 我想自动化该过程,但是:
问题:是否可以使用GitLab CI / CD工具执行2个简单步骤(现已手动完成-通过scp
进行构建和部署),如果可以,您能否提出?简单的步骤即可。
谢谢!
答案 0 :(得分:1)
您需要在存储库中create a .gitlab-ci.yml file定义CI作业,以执行您定义的两个任务。
这是一个让您入门的示例。
stages:
- build
- deploy
build:
stage: build
image: gradle:jdk
script:
- gradle build
artifacts:
paths:
- my_app.jar
deploy:
stage: deploy
image: ubuntu:latest
script:
- apt-get update
- apt-get -y install openssh-client
- scp my_app.jar target.server:/my_app.jar
在此示例中,构建作业运行gradle容器并使用gradle构建应用。 GitLab CI工件用于捕获内置的jar(my_app.jar),并将其传递给部署作业。
部署作业运行ubuntu容器,安装openssh-client(用于scp),然后执行scp将my_app.jar(从构建作业传递过来)打开到目标服务器。
您必须填写构建和复制应用程序的实际详细信息。对于诸如SSH密钥之类的机密,将set project level CI/CD variables传递到您的CI作业中。
答案 1 :(得分:0)
使用以下内容创建外壳文件。
#!/bin/bash
# Copy JAR file to EC2 via SCP with PEM in home directory (usually /home/ec2-user)
scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user
#SSH to EC2 Instnace
ssh -T -i "bastion_keypair.pem" ec2-user@y.ec2.id.amazonaws.com /bin/bash <<-'END2'
#The following commands will be executed automatically by bash.
#Consdier this as remote shell script.
killall java
java -jar ~/myJar.jar server ~/config.yml &>/dev/null &
echo 'done'
#Once completed, the shell will exit.
END2
答案 2 :(得分:0)
在2020年,使用较旧的功能GitLab 13.0 (May 2020)(在Auto DevOps,2018年6月推出)中使用GitLab 11.0应该更容易
Auto DevOps提供了预定义的CI / CD配置,使您可以自动检测,构建,测试,部署和监视应用程序。
借助CI / CD最佳实践和工具,Auto DevOps旨在简化成熟,现代的软件开发生命周期的设置和执行。 概述
但现在(2020年5月):
自动部署到ECS
到目前为止,还没有一种简单的方法可以部署到Amazon Web Services。结果,Gitlab用户不得不花费大量时间来确定自己的配置。
在Gitlab 13.0中,Auto DevOps已扩展为支持部署到AWS!
部署到AWS Elastic Container Service(ECS)的Gitlab用户现在可以利用Auto DevOps,即使他们没有使用Kubernetes。 Auto DevOps具有开箱即用的完整交付管道,可简化并加速交付和云部署。只需提交代码,Gitlab即可完成其余工作!通过消除复杂性,团队可以专注于软件创建的创新方面!
为了启用此工作流程,用户需要:
- 定义AWS类型的环境变量:“ AWS_ACCESS_KEY_ID”,“ AWS_ACCOUNT_ID”和“ AWS_REGION”,以及
- 启用自动DevOps。
然后,将通过完整,自动的交付管道为您自动构建ECS部署。