Compare commits

..
5 Commits
Author SHA1 Message Date
Dustin Pianalto 97793ad622 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-12 23:16:29 -09:00
Dusty.P d581a9bf32 Merge pull request #8 from dustinpianalto/development
CI / build (push) Has been cancelled
Add action to deploy to ECS after image is built
2020-10-11 22:33:27 -08:00
Dustin Pianalto 13f80a6972 Add action to deploy to ECS after image is built
CI / build (push) Has been cancelled
2020-10-11 22:23:05 -08:00
Dusty.P 20bd455a44 Merge pull request #7 from dustinpianalto/development
CI / build (push) Has been cancelled
Add user to guild on user create
2020-10-09 23:48:07 -08:00
Dustin Pianalto cadef92efb Add user to guild on user create 2020-10-09 23:43:56 -08:00
7 changed files with 193 additions and 25 deletions
+25 -19
View File
@@ -17,28 +17,34 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Get Version
id: get_version
uses: battila7/get-version-action@v2.0.0
- name: Build, tag, and push image to Amazon ECR
- name: Build container image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: goff
IMAGE_TAG: ${{ steps.get_version.outputs.version-without-v }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
run: docker build -t registry.digitalocean.com/djpianalto/goff:$IMAGE_TAG
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Login to DigitalOcean Container Registry with short-lived credentials
run: doctl registry login --expiry-seconds 600
- name: Push image to DigitalOcean Container Registry
run: docker push registry.digitalocean.com/djpianalto/goff
- name: Update deployment file
run: TAG=${{ steps.get_version.outputs.version-without-v }} && sed -i 's|<IMAGE>|registry.digitalocean.com/djpianalto/goff:'${TAG}'|' $GITHUB_WORKSPACE/deployment.yml
- name: Save DigitalOcean kubeconfig with short-lived credentials
run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 discord-bots
- name: Deploy to DigitalOcean Kubernetes
run: kubectl apply -f $GITHUB_WORKSPACE/deployment.yml
- name: Verify deployment
run: kubectl rollout status deployment/goff
+25
View File
@@ -0,0 +1,25 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: goff
namespace: default
labels:
app: goff
spec:
replicas: 1
selector:
matchLabels:
app: goff
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 30
template:
metadata:
labels:
app: goff
spec:
containers:
- name: goff
image: <IMAGE>
+1 -1
View File
@@ -57,7 +57,7 @@ func addTagCommandFunc(ctx disgoman.Context, input []string) {
}
return
}
err = services.UserService.CreateUser(&goff.User{ID: ctx.User.ID})
err = services.UserService.CreateUser(&goff.User{ID: ctx.User.ID}, ctx.Guild.ID)
if err != nil {
log.Printf("Error creating user %s: %s", ctx.User.ID, err.Error())
}
+1 -1
View File
@@ -25,7 +25,7 @@ func OnGuildMemberAdd(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
IsStaff: false,
IsAdmin: false,
}
err := services.UserService.CreateUser(user)
err := services.UserService.CreateUser(user, member.GuildID)
if err != nil {
log.Println("Error adding user to database: ", err)
}
+6 -3
View File
@@ -36,10 +36,13 @@ func (s *UserService) User(id string) (*goff.User, error) {
return &u, nil
}
func (s *UserService) CreateUser(u *goff.User) error {
func (s *UserService) CreateUser(u *goff.User, gid string) error {
queryString := `INSERT INTO users (id, banned, logging, steam_id, is_active, is_staff, is_admin)
VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (id) DO NOTHING`
VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT DO NOTHING`
_, err := s.DB.Exec(queryString, u.ID, u.Banned, u.Logging, u.SteamID, u.IsActive, u.IsStaff, u.IsAdmin)
if err == nil {
err = s.AddUserToGuild(u, &goff.Guild{ID: gid})
}
return err
}
@@ -59,7 +62,7 @@ func (s *UserService) MarkUserInactive(u *goff.User) error {
}
func (s *UserService) AddUserToGuild(u *goff.User, g *goff.Guild) error {
queryString := `INSERT INTO x_users_guilds (user_id, guild_id) VALUES ($1, $2)`
queryString := `INSERT INTO x_users_guilds (user_id, guild_id) VALUES ($1, $2) ON CONFLICT DO NOTHING`
_, err := s.DB.Exec(queryString, u.ID, g.ID)
return err
}
+134
View File
@@ -0,0 +1,134 @@
{
"ipcMode": null,
"executionRoleArn": "arn:aws:iam::005692590034:role/goff_ecs_rds+cw+ecr",
"containerDefinitions": [
{
"dnsSearchDomains": null,
"environmentFiles": null,
"logConfiguration": {
"logDriver": "awslogs",
"secretOptions": null,
"options": {
"awslogs-group": "/ecs/goff",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": null,
"portMappings": [],
"command": null,
"linuxParameters": null,
"cpu": 0,
"environment": [],
"resourceRequirements": null,
"ulimits": null,
"dnsServers": null,
"mountPoints": [],
"workingDirectory": null,
"secrets": [
{
"valueFrom": "goff_database_uri",
"name": "DATABASE_URL"
},
{
"valueFrom": "goff_discord_token",
"name": "DISCORDGO_TOKEN"
},
{
"valueFrom": "goff_email_password",
"name": "GOFF_EMAIL_PASSWORD"
},
{
"valueFrom": "goff_email_username",
"name": "GOFF_EMAIL_USERNAME"
}
],
"dockerSecurityOptions": null,
"memory": 512,
"memoryReservation": null,
"volumesFrom": [],
"stopTimeout": null,
"image": "005692590034.dkr.ecr.us-east-1.amazonaws.com/goff:latest",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": null,
"disableNetworking": null,
"interactive": null,
"healthCheck": null,
"essential": true,
"links": null,
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": null,
"systemControls": null,
"privileged": null,
"name": "goff"
}
],
"placementConstraints": [],
"memory": "512",
"taskRoleArn": "arn:aws:iam::005692590034:role/goff_ecs_rds+cw+ecr",
"compatibilities": [
"EC2"
],
"taskDefinitionArn": "arn:aws:ecs:us-east-1:005692590034:task-definition/goff:2",
"family": "goff",
"requiresAttributes": [
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.secrets.ssm.environment-variables"
}
],
"pidMode": null,
"requiresCompatibilities": [
"EC2"
],
"networkMode": null,
"cpu": "1024",
"revision": 2,
"status": "ACTIVE",
"inferenceAccelerators": null,
"proxyConfiguration": null,
"volumes": []
}
+1 -1
View File
@@ -13,7 +13,7 @@ type User struct {
type UserService interface {
User(id string) (*User, error)
CreateUser(u *User) error
CreateUser(u *User, gid string) error
DeleteUser(u *User) error
MarkUserInactive(u *User) error
AddUserToGuild(u *User, g *Guild) error