几天以来,我一直在围绕 Gitlab CI 工作。我已将 EC2 -ASG 设置为带有 Spot 实例的运行器。
我想知道我们是否有任何解决方案可以在作业成功后立即删除现场实例。
以下是 gitlab 运行器配置。
concurrent = 2
check_interval = 3
[session_server]
session_timeout = 1800
[[runners]]
name = "shell-runner"
url = "https://gitlab.com/"
token = "xxxx-xxxx"
executor = "shell"
limit = 1
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[[runners]]
name = "docker-machine-runner"
url = "https://gitlab.com/"
token = "xxxx-xyxyxyxy"
executor = "docker+machine"
limit = 1
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.machine]
IdleCount = 0
IdleTime = 1800
MaxBuilds = 100
MachineDriver = "amazonec2"
MachineName = "gitlab-docker-machine-%s"
MachineOptions = [
"amazonec2-region=us-west-2",
"amazonec2-ssh-user=ubuntu",
"amazonec2-vpc-id=vpc-xxxx",
"amazonec2-subnet-id=subnet-xxx",
"amazonec2-use-private-address=true",
"amazonec2-instance-type=t3a.medium",
"amazonec2-ami=ami-xxx",
"amazonec2-zone=a",
"amazonec2-security-group=gitlab-runner-sg",
"amazonec2-request-spot-instance=true",
"amazonec2-spot-price=0.025"
]
我在上述配置中有两个运行器,即 shell 和 docker-machine。
目前,它根本没有删除现场队列,如果我设置amazonec2-block-duration-minutes=20标志,我猜它会将现场实例保留 20 分钟,然后将其删除。
我正在寻找一种解决方案,以便在每个作业成功后删除现场实例和/或它可以等待某个时间等待其他作业并终止。
在上面的 docker-machine-runner 中,实现这一点需要进行哪些配置更改?
或者我们可以做任何其他自动化来实现它吗?
如果需要更多信息,请告诉我。
提前致谢。