From 7fc0df9b724f15d656d5223d5a357b474be15904 Mon Sep 17 00:00:00 2001 From: Nick Hazekamp Date: Fri, 1 Nov 2024 16:20:56 -0400 Subject: [PATCH 1/5] Create GitHub Action Workflow to build sdks and test server --- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++ .gitignore | 2 ++ docker-compose.yml | 23 ++++++++++++++- server/Dockerfile | 2 +- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ee9a350 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + collect_sdks: + runs-on: ubuntu-latest + outputs: + sdks: ${{ steps.sdks.outputs.sdks }} + steps: + - uses: actions/checkout@v4 + - id: sdks + run: echo "sdks=$(cd sdks && ls -d * | jq --raw-input --slurp --compact-output 'split("\n")[:-1]')" >> ${GITHUB_OUTPUT} + + build: + runs-on: ubuntu-latest + needs: collect_sdks + strategy: + matrix: + sdks: ${{ fromJson(needs.collect_sdks.outputs.sdks) }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build SDK Docker Images + uses: docker/build-push-action@v6 + with: + context: sdks/${{ matrix.sdks }} + push: false + + battle: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker Compose Services + run: docker compose build + + - name: Run Docker Compose + run: docker compose up server + + - name: Collect Test Results + uses: actions/upload-artifact@v3 + with: + name: game-results + path: ./server/results/ + + - name: Tear Down Docker Compose + if: always() + run: docker compose down \ No newline at end of file diff --git a/.gitignore b/.gitignore index e6e52dd..b672bb9 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ game-log.txt test-log.txt sdks/clojure/target .vscode + +.fake \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 05287e6..beee01a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,10 +2,12 @@ version: '3.8' services: p1: build: - context: sdks/java + context: sdks/ruby dockerfile: Dockerfile ports: - "9091:9090" + networks: + - app-network p2: build: @@ -13,4 +15,23 @@ services: dockerfile: Dockerfile ports: - "9092:9090" + depends_on: + - p1 + networks: + - app-network + + server: + build: + context: server + dockerfile: Dockerfile + ports: + - "9090:9090" + depends_on: + - p2 + networks: + - app-network + +networks: + app-network: + driver: bridge diff --git a/server/Dockerfile b/server/Dockerfile index e970290..77ae043 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -11,4 +11,4 @@ COPY Gemfile Gemfile RUN bundle install COPY . . -CMD ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9091", "-p1", "127.0.0.1", "-p2p", "9092", "-p2", "127.0.0.1" ] +CMD ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9090", "-p1", "p1", "-p2p", "9090", "-p2", "p2" ] From 79a3a4237860259c4fd07b1b3ffe3a8b6c3f0141 Mon Sep 17 00:00:00 2001 From: Nick Hazekamp Date: Mon, 4 Nov 2024 20:04:44 -0500 Subject: [PATCH 2/5] Remove unnecessary step in github workflow and update server dockerfile --- .github/workflows/ci.yml | 8 +------- docker-compose.yml | 19 ++++++++++++++++--- server/Dockerfile | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee9a350..a41eaaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,13 +47,7 @@ jobs: run: docker compose build - name: Run Docker Compose - run: docker compose up server - - - name: Collect Test Results - uses: actions/upload-artifact@v3 - with: - name: game-results - path: ./server/results/ + run: docker compose up battle-server --profile battle - name: Tear Down Docker Compose if: always() diff --git a/docker-compose.yml b/docker-compose.yml index beee01a..a7275f0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,14 +24,27 @@ services: build: context: server dockerfile: Dockerfile - ports: - - "9090:9090" + command: ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9090", "-p1", "p1"] + depends_on: + - p1 + networks: + - app-network + profiles: + - single-player + + battle-server: + build: + context: server + dockerfile: Dockerfile + command: ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9090", "-p1", "p1", "-p2p", "9090", "-p2", "p2" ] depends_on: - p2 networks: - app-network + profiles: + - battle networks: app-network: - driver: bridge + driver: host diff --git a/server/Dockerfile b/server/Dockerfile index 77ae043..c7da192 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -11,4 +11,4 @@ COPY Gemfile Gemfile RUN bundle install COPY . . -CMD ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9090", "-p1", "p1", "-p2p", "9090", "-p2", "p2" ] +CMD ["ruby", "src/app.rb", "-nu", "-f", "-p1p", "9091", "-p1", "localhost", "-p2p", "9092", "-p2", "localhost" ] From f3a43784ac5a727cab031808fbabd5687b0ac518 Mon Sep 17 00:00:00 2001 From: Nick Hazekamp Date: Mon, 4 Nov 2024 20:09:23 -0500 Subject: [PATCH 3/5] Add brief overview of docker commands for server and clients, correct battle profile in workflow --- .github/workflows/ci.yml | 2 +- Docker.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 Docker.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a41eaaa..cdc25f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: run: docker compose build - name: Run Docker Compose - run: docker compose up battle-server --profile battle + run: docker compose --profile battle up battle-server - name: Tear Down Docker Compose if: always() diff --git a/Docker.md b/Docker.md new file mode 100644 index 0000000..ae9dbb8 --- /dev/null +++ b/Docker.md @@ -0,0 +1,31 @@ +# Running the Clients with Docker Compose + +__Note__: In base directory -> +``` +docker compose up +``` + +Run Server (see above) + +# Running the Server with Docker + +``` +docker buildx build -f server/Dockerfile server/ -t server +``` + +``` +docker run --network=host server +``` +__Note__: This assumes you have two clients running on localhost using post 9091 and 9092. + +# Run Single Player and Server with Docker compose + +``` +docker compose --profile single-player up server +``` + +# Run Two Players and Server with Docker compose + +``` +docker compose --profile battle up battle-server +``` From 2fce62b61b950b860c6edc445f91bcf86d008a01 Mon Sep 17 00:00:00 2001 From: Nick Hazekamp Date: Mon, 4 Nov 2024 20:18:53 -0500 Subject: [PATCH 4/5] Correct network type to work in Github actions --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index a7275f0..4d0f76c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,5 +46,5 @@ services: networks: app-network: - driver: host + driver: bridge From 6e789a7787c76c76e4b55426d65781ba2081dbbb Mon Sep 17 00:00:00 2001 From: Nick Hazekamp Date: Mon, 4 Nov 2024 20:23:03 -0500 Subject: [PATCH 5/5] Attempt to correct docker compose network type just in workflow --- .github/workflows/ci.yml | 7 +++++++ docker-compose.yml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cdc25f6..580819b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,13 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Find and Replace host network + uses: jacobtomlinson/gha-find-replace@v3 + with: + find: "host" + replace: "bridge" + include: "docker-compose.yml" + - name: Build Docker Compose Services run: docker compose build diff --git a/docker-compose.yml b/docker-compose.yml index 4d0f76c..a7275f0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,5 +46,5 @@ services: networks: app-network: - driver: bridge + driver: host