# tinqs/ci/setup-aws — Tinqs Studio CI # Installs AWS CLI and optionally logs into ECR. # Detects Alpine (apk/pip), Debian (apt-get), and Amazon Linux/RHEL (dnf). # Skips install if AWS CLI is already present (pre-baked AMI). # Credentials come from the runner environment (IAM instance profile on EC2, # task role on Fargate) — no explicit key configuration needed. # Composite action — runs directly on the host. # Author: Ozan + Claude Code — 2026-05-22 name: 'Tinqs Setup AWS' description: 'Install AWS CLI and optionally login to ECR' inputs: region: description: 'AWS region' default: 'eu-west-1' ecr-login: description: 'Login to ECR (true/false)' default: 'false' ecr-repo: description: 'ECR repository URL (required if ecr-login is true)' default: '' runs: using: 'composite' steps: - run: | REGION="${{ inputs.region }}" ECR_LOGIN="${{ inputs.ecr-login }}" ECR_REPO="${{ inputs.ecr-repo }}" # Install AWS CLI if missing if ! command -v aws &>/dev/null; then echo "Installing AWS CLI..." if command -v apk &>/dev/null; then # Alpine — use pip (AWS CLI v2 binary needs glibc) apk add --no-cache python3 py3-pip pip3 install --break-system-packages awscli 2>/dev/null || pip3 install awscli elif command -v dnf &>/dev/null || command -v apt-get &>/dev/null; then # Amazon Linux / Debian — official installer (glibc available) curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscli.zip unzip -q /tmp/awscli.zip -d /tmp/aws-install /tmp/aws-install/aws/install rm -rf /tmp/awscli.zip /tmp/aws-install else echo "ERROR: unsupported package manager" && exit 1 fi fi aws --version # ECR login if [ "$ECR_LOGIN" = "true" ] && [ -n "$ECR_REPO" ]; then echo "Logging into ECR ($REGION)..." aws ecr get-login-password --region "$REGION" | \ docker login --username AWS --password-stdin "$ECR_REPO" echo "ECR login OK" fi shell: bash