Aby workflow działał, musisz skonfigurować następujące secrets w GitHub:
- AWS_ACCESS_KEY_ID - AWS Access Key ID
- AWS_SECRET_ACCESS_KEY - AWS Secret Access Key
- CODECOV_TOKEN - Codecov repository upload token (opcjonalne, ale zalecane aby uniknąć rate limits)
- Przejdź do Settings → Secrets and variables → Actions w Twoim repozytorium GitHub
- Kliknij "New repository secret"
- Dodaj secrets:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYCODECOV_TOKEN(opcjonalne - pobierz z https://codecov.io → Settings → General → Repository Upload Token)
# Utwórz użytkownika IAM
aws iam create-user --user-name github-actions-deploy
# Utwórz policy z wymaganymi uprawnieniami
cat > ecr-ecs-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ecs:UpdateService",
"ecs:DescribeServices"
],
"Resource": "arn:aws:ecs:eu-central-1:*:service/fastapi-app-cluster/fastapi-app-service"
},
{
"Effect": "Allow",
"Action": [
"ecs:DescribeTasks",
"ecs:ListTasks"
],
"Resource": "*"
}
]
}
EOF
# Utwórz policy
aws iam create-policy \
--policy-name GitHubActionsECRECS \
--policy-document file://ecr-ecs-policy.json
# Dołącz policy do użytkownika
aws iam attach-user-policy \
--user-name github-actions-deploy \
--policy-arn arn:aws:iam::YOUR_ACCOUNT_ID:policy/GitHubActionsECRECS
# Utwórz access keys
aws iam create-access-key --user-name github-actions-deployAutomatycznie:
- Buduje obraz Docker dla platformy linux/amd64
- Wypycha obraz do ECR
- Aktualizuje ECS service z nowym deploymentem
- Push do brancha
mainlubmaster - Ręczne uruchomienie (workflow_dispatch)