1 构建image,推送ECR
可以根据基于Debian镜像构建image,推送至ecr
构建及推送ECR代码可以参考Python 调用 Docker 及推送至AWS ECR
2 构建EC2,运行GitLab runner
启动一个EC2,用来跑GitLab Runner,必须赋予IAM Role!!!!
启动docker,改权限
sudo apt update
sudo apt install docker.io -y
# 改权限
sudo groupadd docker
sudo usermod -aG docker $USER
sudo service docker restart
newgrp - docker
下载Gitlab Runner
sudo mkdir -p /opt/gitlab-runner/{metadata,builds,cache}
curl -s "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt install gitlab-runner
启动GitLab Runner
sudo gitlab-runner register --url https://gitlab.com/ --registration-token 获取到的Token --name fargate-test-runner --run-untagged --executor custom -n
2.1 改配置文件
运行sudo vim /etc/gitlab-runner/config.toml
只要改
executor = "custom"
后面的部分就行
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "fargate-test"
url = "https://gitlab.com/"
token = "自动生成的,不要改"
executor = "custom"
builds_dir = "/opt/gitlab-runner/builds"
cache_dir = "/opt/gitlab-runner/cache"
[runners.custom]
config_exec = "/opt/gitlab-runner/fargate"
config_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "config"]
prepare_exec = "/opt/gitlab-runner/fargate"
prepare_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "prepare"]
run_exec = "/opt/gitlab-runner/fargate"
run_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "run"]
cleanup_exec = "/opt/gitlab-runner/fargate"
cleanup_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "cleanup"]
执行sudo vim /etc/gitlab-runner/fargate.toml
LogLevel = "info"
LogFormat = "text"
[Fargate]
Cluster = "cluster的名字"
Region = "us-east-2"
Subnet = "subnet-xxxxxx"
SecurityGroup = "sg-xxxxxxxxxxxxx"
TaskDefinition = "task definition的名字:版本号,例如:test-task:1"
EnablePublicIP = true
[TaskMetadata]
Directory = "/opt/gitlab-runner/metadata"
[SSH]
Username = "root"
3 创建Cluster
- 创建一个 Cluster
- 选择Networking only
- 起名,
test-cluster
和fargate.toml
里的一样 - 选择Create.
- 选择View cluster.
- 点击Update Cluster
- 在
Default capacity provider strategy
, 点击Add another provider 选择FARGATE
. 点击Update.
4 构建task definiton
- 点击Create new Task Definition.
- 选择FARGATE ,点击 Next step.
- 给cluster起名 ,假设叫
test-task
. (需要和fargate.toml
的文件相同,但是不好喊:1
). - 添加container,名字必须叫做
ci-coordinator
,image选择之前推送的ECR镜像地址,port mapping添加22/TCP
5 添加gitlab配置
.gitlab-cicd.yml
test:
script:
- echo "It works!"
- for i in $(seq 1 30); do echo "."; sleep 1; done
6 添加fargate driver
sudo curl -Lo /opt/gitlab-runner/fargate "https://gitlab-runner-custom-fargate-downloads.s3.amazonaws.com/latest/fargate-linux-amd64"
sudo chmod +x /opt/gitlab-runner/fargate