name: stufflog3 kind: pipeline type: docker steps: - name: backend-build image: golang:1.19 depends_on: [] commands: - go mod download - CGO_ENABLED=0 go build -ldflags "-w -s" -o build/handler cmd/stufflog3/main.go - name: backend-test image: golang:1.19 depends_on: [] commands: - go test -v ./... - name: backend-migrate image: golang:1.19 depends_on: [] environment: DB_CONNECT: from_secret: DB_CONNECT commands: - go install github.com/pressly/goose/v3/cmd/goose@latest - cd scripts/goose-mysql/ - goose mysql "$DB_CONNECT" up - name: backend-deploy image: node:18.3.0 depends_on: - backend-build - backend-test - backend-migrate environment: AWS_ACCESS_KEY_ID: from_secret: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: from_secret: AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: from_secret: STUFFLOG3_AWS_REGION STUFFLOG3_AWS_CLIENT_ID: from_secret: STUFFLOG3_AWS_CLIENT_ID STUFFLOG3_AWS_CLIENT_SECRET: from_secret: STUFFLOG3_AWS_CLIENT_SECRET STUFFLOG3_AWS_POOL_CLIENT_ID: from_secret: STUFFLOG3_AWS_POOL_CLIENT_ID STUFFLOG3_AWS_POOL_CLIENT_SECRET: from_secret: STUFFLOG3_AWS_POOL_CLIENT_SECRET STUFFLOG3_AWS_POOL_ID: from_secret: STUFFLOG3_AWS_POOL_ID STUFFLOG3_AWS_REGION: from_secret: STUFFLOG3_AWS_REGION STUFFLOG3_MYSQL_HOST: from_secret: STUFFLOG3_MYSQL_HOST STUFFLOG3_MYSQL_PASSWORD: from_secret: STUFFLOG3_MYSQL_PASSWORD STUFFLOG3_MYSQL_PORT: from_secret: STUFFLOG3_MYSQL_PORT STUFFLOG3_MYSQL_SCHEMA: from_secret: STUFFLOG3_MYSQL_SCHEMA STUFFLOG3_MYSQL_USERNAME: from_secret: STUFFLOG3_MYSQL_USERNAME DOMAIN_NAME: from_secret: DOMAIN_NAME CERTIFICATE_ARN: from_secret: CERTIFICATE_ARN CERTIFICATE_NAME: from_secret: CERTIFICATE_NAME HOSTED_ZONE_ID: from_secret: HOSTED_ZONE_ID S3_WEBUI_BUCKET: from_secret: S3_WEBUI_BUCKET IAM_ROLE: from_secret: IAM_ROLE commands: - apt-get update > /dev/null 2>&1 - apt-get -y install awscli zip > /dev/null 2>&1 - npm install -g serverless > /dev/null 2>&1 - npm install -g serverless-domain-manager > /dev/null 2>&1 - npm install -g serverless-apigateway-service-proxy > /dev/null 2>&1 - serverless deploy - name: frontend-build image: node:18.3.0 depends_on: [] environment: VITE_STUFFLOG3_AWS_POOL_REGION: from_secret: VITE_STUFFLOG3_AWS_POOL_REGION VITE_STUFFLOG3_AWS_POOL_ID: from_secret: VITE_STUFFLOG3_AWS_POOL_ID VITE_STUFFLOG3_AWS_POOL_PUBLIC_CLIENT_ID: from_secret: VITE_STUFFLOG3_AWS_POOL_PUBLIC_CLIENT_ID commands: - cd frontend - npm install - npm run build - cp static/* build/ - name: frontend-deploy image: amazon/aws-cli:latest depends_on: - frontend-build environment: AWS_ACCESS_KEY_ID: from_secret: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: from_secret: AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: from_secret: STUFFLOG3_AWS_REGION S3_WEBUI_BUCKET: from_secret: S3_WEBUI_BUCKET commands: - cd frontend/build - aws s3 sync --delete . s3://$S3_WEBUI_BUCKET