Skip to content

Commit a4b9ebb

Browse files
committed
ci: publish workflow
1 parent 7f30c04 commit a4b9ebb

File tree

8 files changed

+132
-86
lines changed

8 files changed

+132
-86
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Build and Push Docker Images
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
7+
jobs:
8+
build-and-push:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
contents: read
12+
packages: write
13+
14+
steps:
15+
- name: Checkout repo
16+
uses: actions/checkout@v3
17+
18+
- name: Log in to GitHub Container Registry
19+
uses: docker/login-action@v2
20+
with:
21+
registry: ghcr.io
22+
username: ${{ github.actor }}
23+
password: ${{ secrets.GITHUB_TOKEN }}
24+
25+
- name: Build and push server image
26+
uses: docker/build-push-action@v5
27+
with:
28+
context: .
29+
file: ./server/Dockerfile
30+
push: true
31+
tags: ghcr.io/${{ github.repository }}/server:latest
32+
33+
- name: Build and push client image
34+
uses: docker/build-push-action@v5
35+
with:
36+
context: ./client
37+
file: ./client/Dockerfile
38+
push: true
39+
tags: ghcr.io/${{ github.repository }}/client:latest

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/client/node_modules/
22
/server/node_modules/
33
/client/.env
4+
/server/dist

server/Dockerfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM node:20-alpine
22
WORKDIR /app
3-
COPY package*.json ./
4-
RUN npm ci
5-
COPY . .
3+
COPY server/package*.json ./
4+
RUN npm install
5+
COPY server/tsconfig.json ./
6+
COPY server/src ./src
7+
RUN npm run build
68
EXPOSE 3000
79
CMD ["npm", "start"]

server/package-lock.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/package.json

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
{
2-
"name": "server",
3-
"version": "1.0.0",
4-
"description": "Tic tac toe",
5-
"main": "index.js",
6-
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1",
8-
"start": "node src/index.js",
9-
"dev": "DEBUG=1 nodemon -x ts-node src/index.ts",
10-
"build": "tsc"
11-
},
12-
"keywords": [],
13-
"author": "",
14-
"license": "ISC",
15-
"dependencies": {
16-
"@types/cors": "^2.8.17",
17-
"cors": "^2.8.5",
18-
"express": "^4.18.2",
19-
"nodemon": "^3.0.1",
20-
"socket.io": "^4.7.2"
21-
},
22-
"devDependencies": {
23-
"@types/express": "^4.17.21",
24-
"ts-node": "^10.9.2",
25-
"typescript": "^5.4.5"
26-
}
2+
"name": "server",
3+
"version": "1.0.0",
4+
"description": "Tic tac toe",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1",
8+
"build": "tsc",
9+
"start": "node dist/index.js",
10+
"dev": "DEBUG=1 nodemon -x ts-node src/index.ts"
11+
},
12+
"keywords": [],
13+
"author": "",
14+
"license": "ISC",
15+
"dependencies": {
16+
"@types/cors": "^2.8.17",
17+
"cors": "^2.8.5",
18+
"express": "^4.18.2",
19+
"nodemon": "^3.0.1",
20+
"socket.io": "^4.7.2"
21+
},
22+
"devDependencies": {
23+
"@types/express": "^4.17.21",
24+
"ts-node": "^10.9.2",
25+
"typescript": "^5.4.5"
26+
}
2727
}

server/src/index.ts

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import express from "express";
22
import cors from "cors";
33
import { Server } from "socket.io";
44
import http from "http";
5-
import { User, Rooms } from "../../types/types";
5+
import { Rooms, User } from "./types/types";
66

77
const app = express();
88
app.use(cors());
@@ -11,68 +11,68 @@ const rooms: Rooms = {}
1111

1212
const server = http.createServer(app);
1313
const io = new Server(server, {
14-
cors: {
15-
origin: process.env.DEBUG ?
16-
"http://localhost:5173" :
17-
"https://bingolfy.onrender.com"
18-
}
14+
cors: {
15+
origin: process.env.DEBUG ?
16+
"http://localhost:5173" :
17+
"https://bingolfy.onrender.com"
18+
}
1919
})
2020

2121
io.on("connection", (socket) => {
22-
console.log(`User ${socket.id} connected!`);
23-
24-
socket.on("join_room", ({room, name}) => {
25-
if (rooms.hasOwnProperty(room)) {
26-
const foundUser = rooms[room].find((user: User) => user.name === name)
27-
if (!foundUser) {
28-
rooms[room].push({name: name, ready: false});
29-
} else {
30-
const foundItem = rooms[room].find((user: User) => user.name === name);
31-
if (foundItem)
32-
foundItem.ready = false;
33-
}
34-
} else {
35-
rooms[room] = [{name: name, ready: false}];
36-
}
37-
38-
socket.join(room);
39-
40-
console.log("Users in the room: ", rooms[room])
41-
io.to(room).emit("user_joined", rooms[room]);
42-
})
43-
44-
socket.on("tile_clicked", (data) => {
45-
socket.to(data.room).emit("flush", data.tiles);
46-
})
47-
48-
socket.on("user_won", (data) => {
49-
io.to(data.room).emit("game_over", data);
50-
})
51-
52-
socket.on("user_ready", (data) => {
53-
const foundItem = rooms[data.room].find((user: User) => user.name === data.user);
22+
console.log(`User ${socket.id} connected!`);
23+
24+
socket.on("join_room", ({ room, name }) => {
25+
if (rooms.hasOwnProperty(room)) {
26+
const foundUser = rooms[room].find((user: User) => user.name === name)
27+
if (!foundUser) {
28+
rooms[room].push({ name: name, ready: false });
29+
} else {
30+
const foundItem = rooms[room].find((user: User) => user.name === name);
5431
if (foundItem)
55-
foundItem.ready = true;
32+
foundItem.ready = false;
33+
}
34+
} else {
35+
rooms[room] = [{ name: name, ready: false }];
36+
}
37+
38+
socket.join(room);
39+
40+
console.log("Users in the room: ", rooms[room])
41+
io.to(room).emit("user_joined", rooms[room]);
42+
})
5643

57-
io.to(data.room).emit("user_joined", rooms[data.room]);
44+
socket.on("tile_clicked", (data) => {
45+
socket.to(data.room).emit("flush", data.tiles);
46+
})
5847

59-
if (!rooms[data.room].filter((player: User) => !player.ready).length) {
60-
let randomPlayer = rooms[data.room][Math.floor(Math.random() * rooms[data.room].length)];
61-
console.log("Everyones ready, sending random player: ", randomPlayer.name)
62-
io.to(data.room).emit("next_player", randomPlayer.name)
63-
}
64-
})
48+
socket.on("user_won", (data) => {
49+
io.to(data.room).emit("game_over", data);
50+
})
51+
52+
socket.on("user_ready", (data) => {
53+
const foundItem = rooms[data.room].find((user: User) => user.name === data.user);
54+
if (foundItem)
55+
foundItem.ready = true;
56+
57+
io.to(data.room).emit("user_joined", rooms[data.room]);
58+
59+
if (!rooms[data.room].filter((player: User) => !player.ready).length) {
60+
let randomPlayer = rooms[data.room][Math.floor(Math.random() * rooms[data.room].length)];
61+
console.log("Everyones ready, sending random player: ", randomPlayer.name)
62+
io.to(data.room).emit("next_player", randomPlayer.name)
63+
}
64+
})
6565

66-
socket.on("set_next_player", (data) => {
67-
io.to(data.room).emit("next_player", data.user)
68-
})
66+
socket.on("set_next_player", (data) => {
67+
io.to(data.room).emit("next_player", data.user)
68+
})
6969

70-
socket.on("error", (error) => {
71-
console.error("Socket error:", error);
72-
});
70+
socket.on("error", (error) => {
71+
console.error("Socket error:", error);
72+
});
7373

7474
})
7575

7676
server.listen(5174, () => {
77-
console.log("Server started!");
77+
console.log("Server started!");
7878
})
File renamed without changes.

server/tsconfig.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
{
22
"compilerOptions": {
33

4-
"target": "es2016",
5-
4+
"target": "ES2020",
65
/* Modules */
76
"module": "commonjs",
87
"esModuleInterop": true,
98
"allowSyntheticDefaultImports": true,
109
"forceConsistentCasingInFileNames": true,
1110

12-
/* Type Checking */
13-
"strict": true,
14-
"skipLibCheck": true,
11+
"strict": true,
12+
"skipLibCheck": true,
13+
"outDir": "dist",
14+
"rootDir": "src",
15+
"strict": true
1516

1617
/* "paths": {
1718
"@types/*": ["./types/*"]
1819
} */
20+
1921
}
2022
}

0 commit comments

Comments
 (0)