Skip to content

Commit 2ebe8d2

Browse files
authored
Merge pull request #9 from mpuckett159/features/github-actions
Features/GitHub actions
2 parents ce18bfa + de4fdec commit 2ebe8d2

File tree

12 files changed

+214
-109
lines changed

12 files changed

+214
-109
lines changed

.github/workflows/pull-request.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: lint
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- master
7+
8+
jobs:
9+
lint:
10+
name: lint
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v2
14+
- name: golangci-lint
15+
uses: golangci/golangci-lint-action@v2
16+
with:
17+
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
18+
version: latest
19+
working-directory: frontend
20+
args: --out-format=tab

.github/workflows/release.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Build on Release
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
name: Set up QEMU
14+
- uses: docker/setup-qemu-action@v1
15+
name: Set up Docker Buildx
16+
- uses: docker/setup-buildx-action@v1
17+
name: Login to DockerHub
18+
- uses: docker/login-action@v1
19+
with:
20+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
21+
password: ${{ secrets.DOCKER_HUB_TOKEN }}
22+
- name: Build and push API
23+
uses: docker/build-push-action@v2
24+
with:
25+
context: ./frontend
26+
platforms: linux/amd64
27+
push: true
28+
tags: |
29+
mpuckett259/stack-web-app:latest

frontend/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Compile and export binary for Go app
2+
FROM golang:1.16.3-buster AS build
3+
4+
ENV GO111MODULE=auto
5+
6+
WORKDIR /app
7+
COPY . /app
8+
RUN go build -o /app/main -ldflags="-extldflags=-static" -tags sqlite_omit_load_extension
9+
10+
# Copy out app from build image and set execution
11+
FROM alpine:latest
12+
COPY --from=build /app/main /
13+
CMD [ "/main" ]

frontend/db/db.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111
// User object that describes the database table columns and is used to push the info
1212
// back to the websocket client for speaker stack rendering
1313
type User struct {
14-
SpeakerPostition int16 `json:"speakerPosition"`
15-
SpeakerId string `json:"speakerId"`
16-
Name string `json:"name"`
14+
SpeakerPostition int16 `json:"speakerPosition"`
15+
SpeakerId string `json:"speakerId"`
16+
Name string `json:"name"`
1717
}
1818

1919
// Start is used to start the database, that is remove any potentially existing db files
@@ -23,7 +23,7 @@ func Start() {
2323
// Add to context logger
2424
ContextLogger = ContextLogger.WithFields(log.Fields{
2525
"function": "Start",
26-
"module": "db",
26+
"module": "db",
2727
})
2828

2929
// Delete and recreate existing sqlite file just in case
@@ -42,8 +42,8 @@ func CreateTable(newTableId string) (err error) {
4242
// Add to context logger
4343
ContextLogger = ContextLogger.WithFields(log.Fields{
4444
"function": "CreateTable",
45-
"module": "db",
46-
"tableId": newTableId,
45+
"module": "db",
46+
"tableId": newTableId,
4747
})
4848

4949
// Get sqlite db connection
@@ -57,7 +57,7 @@ func CreateTable(newTableId string) (err error) {
5757
if err != nil {
5858
log.WithFields(log.Fields{
5959
"sqlQuery": createMeetingTableSQL,
60-
"error": err.Error(),
60+
"error": err.Error(),
6161
}).Error("Error preparing statement to create meeting table")
6262
return err
6363
}
@@ -68,7 +68,7 @@ func CreateTable(newTableId string) (err error) {
6868
if err != nil {
6969
log.WithFields(log.Fields{
7070
"sqlQuery": createMeetingTableSQL,
71-
"error": err.Error(),
71+
"error": err.Error(),
7272
}).Error("Error executing statement to create meeting table")
7373
return err
7474
}
@@ -86,8 +86,8 @@ func DeleteTable(tableId string) (err error) {
8686
// Add to context logger
8787
ContextLogger = ContextLogger.WithFields(log.Fields{
8888
"function": "DeleteTable",
89-
"module": "db",
90-
"tableId": tableId,
89+
"module": "db",
90+
"tableId": tableId,
9191
})
9292

9393
// Get sqlite db connection
@@ -101,7 +101,7 @@ func DeleteTable(tableId string) (err error) {
101101
if err != nil {
102102
log.WithFields(log.Fields{
103103
"sqlQuery": deleteMeetingTableSQL,
104-
"error": err.Error(),
104+
"error": err.Error(),
105105
}).Error("Error preparing statement to delete meeting table")
106106
return err
107107
}
@@ -112,7 +112,7 @@ func DeleteTable(tableId string) (err error) {
112112
if err != nil {
113113
log.WithFields(log.Fields{
114114
"sqlQuery": deleteMeetingTableSQL,
115-
"error": err.Error(),
115+
"error": err.Error(),
116116
}).Error("Error executing statement to delete meeting table")
117117
return err
118118
}
@@ -125,11 +125,11 @@ func DeleteTable(tableId string) (err error) {
125125
func GetOnStack(tableId string, speakerId string, name string) (err error) {
126126
// Add to context logger
127127
ContextLogger = ContextLogger.WithFields(log.Fields{
128-
"function": "GetOnStack",
129-
"module": "db",
130-
"tableId": tableId,
128+
"function": "GetOnStack",
129+
"module": "db",
130+
"tableId": tableId,
131131
"speakerId": speakerId,
132-
"name": name,
132+
"name": name,
133133
})
134134

135135
// Get sqlite db connection
@@ -143,7 +143,7 @@ func GetOnStack(tableId string, speakerId string, name string) (err error) {
143143
if err != nil {
144144
log.WithFields(log.Fields{
145145
"sqlQuery": addUserToStackTableSQL,
146-
"error": err.Error(),
146+
"error": err.Error(),
147147
}).Error("Error preparing statement to get on stack.")
148148
return err
149149
}
@@ -154,7 +154,7 @@ func GetOnStack(tableId string, speakerId string, name string) (err error) {
154154
if err != nil {
155155
log.WithFields(log.Fields{
156156
"sqlQuery": addUserToStackTableSQL,
157-
"error": err.Error(),
157+
"error": err.Error(),
158158
}).Error("Error executing statement to get on stack.")
159159
return err
160160
}
@@ -168,9 +168,9 @@ func GetOnStack(tableId string, speakerId string, name string) (err error) {
168168
func GetOffStack(tableId string, speakerId string) (err error) {
169169
// Add to context logger
170170
ContextLogger = ContextLogger.WithFields(log.Fields{
171-
"function": "GetOffStack",
172-
"module": "db",
173-
"tableId": tableId,
171+
"function": "GetOffStack",
172+
"module": "db",
173+
"tableId": tableId,
174174
"speakerId": speakerId,
175175
})
176176

@@ -185,7 +185,7 @@ func GetOffStack(tableId string, speakerId string) (err error) {
185185
if err != nil {
186186
log.WithFields(log.Fields{
187187
"sqlQuery": removeUserFromStackTableSQL,
188-
"error": err.Error(),
188+
"error": err.Error(),
189189
}).Error("Error preparing statement to get off stack")
190190
return err
191191
}
@@ -196,7 +196,7 @@ func GetOffStack(tableId string, speakerId string) (err error) {
196196
if err != nil {
197197
log.WithFields(log.Fields{
198198
"sqlQuery": removeUserFromStackTableSQL,
199-
"error": err.Error(),
199+
"error": err.Error(),
200200
}).Error("Error executing statement to get off stack")
201201
}
202202

@@ -211,8 +211,8 @@ func ShowCurrentStack(tableId string) (stackUsers []User, err error) {
211211
// Add to context logger
212212
ContextLogger = ContextLogger.WithFields(log.Fields{
213213
"function": "ShowCurrentStack",
214-
"module": "db",
215-
"tableId": tableId,
214+
"module": "db",
215+
"tableId": tableId,
216216
})
217217

218218
// Get sqlite db connection
@@ -226,25 +226,25 @@ func ShowCurrentStack(tableId string) (stackUsers []User, err error) {
226226
if err != nil {
227227
log.WithFields(log.Fields{
228228
"sqlQuery": showCurrentStackTableSQL,
229-
"error": err.Error(),
229+
"error": err.Error(),
230230
}).Error("Error querying meeting table")
231231
return nil, err
232232
}
233233
defer rows.Close()
234234

235-
// Parse database rows to User object slice
235+
// Parse database rows to User object slice
236236
for rows.Next() {
237237
var stackUser User
238238
err := rows.Scan(&stackUser.SpeakerPostition, &stackUser.SpeakerId, &stackUser.Name)
239239
if err != nil {
240240
log.WithFields(log.Fields{
241241
"sqlQuery": showCurrentStackTableSQL,
242-
"error": err.Error(),
242+
"error": err.Error(),
243243
}).Error("Error scanning query results for meeting table")
244244
}
245245
stackUsers = append(stackUsers, stackUser)
246246
}
247247

248248
// Return current stack
249249
return stackUsers, nil
250-
}
250+
}

frontend/db/log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ import (
77
// ContextLogger declares top level context logger to use in package
88
var ContextLogger = log.WithFields(log.Fields{
99
"package": "db",
10-
})
10+
})
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
module stack-web-app
1+
module stack-web-app/frontend
22

3-
go 1.15
3+
go 1.16
44

55
require (
66
github.com/google/uuid v1.2.0
77
github.com/gorilla/handlers v1.5.1
88
github.com/gorilla/mux v1.8.0
99
github.com/gorilla/websocket v1.4.2
10-
github.com/mattn/go-sqlite3 v1.14.6
10+
github.com/mattn/go-sqlite3 v1.14.7
1111
github.com/sirupsen/logrus v1.8.1
1212
)

go.sum renamed to frontend/go.sum

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
12
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
23
github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=
34
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
@@ -9,11 +10,13 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
910
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
1011
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
1112
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
12-
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
13-
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
13+
github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
14+
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
15+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1416
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1517
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
1618
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
19+
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
1720
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
1821
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
1922
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

frontend/main.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import (
1010
"net/http"
1111
"os"
1212

13-
"stack-web-app/frontend/wshandler"
1413
"stack-web-app/frontend/db"
14+
"stack-web-app/frontend/wshandler"
1515

16-
"github.com/gorilla/handlers"
17-
log "github.com/sirupsen/logrus"
16+
"github.com/gorilla/handlers"
1817
"github.com/gorilla/mux"
18+
log "github.com/sirupsen/logrus"
1919
)
2020

2121
func main() {
@@ -54,7 +54,7 @@ func main() {
5454
err := http.ListenAndServe(fmt.Sprintf(":%s", port), loggedRouter)
5555
if err != nil {
5656
log.WithFields(log.Fields{
57-
"error": err.Error(),
58-
}).Fatal("Fatal error with HTTP server")
57+
"error": err.Error(),
58+
}).Fatal("Fatal error with HTTP server")
5959
}
60-
}
60+
}

0 commit comments

Comments
 (0)