From 44bc0bf2230ab33500190ab6d7e18e9fba32887f Mon Sep 17 00:00:00 2001 From: Minjae Gwon Date: Mon, 11 Dec 2023 17:59:43 +0900 Subject: [PATCH 1/5] chore: add target directory for building --- .gitignore | 6 ++++-- build/.gitkeep | 0 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 build/.gitkeep diff --git a/.gitignore b/.gitignore index 29f4bed..7a30498 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,6 @@ # Icon must end with two \r Icon - # Thumbnails ._* @@ -109,4 +108,7 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk -# End of https://www.toptal.com/developers/gitignore/api/macos,scala,sbt,intellij,visualstudiocode,windows \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/macos,scala,sbt,intellij,visualstudiocode,windows + +build/* +!build/.gitkeep diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 0000000..e69de29 From 290723d23352a01f1c1be4b833291104d4385bd3 Mon Sep 17 00:00:00 2001 From: Minjae Gwon Date: Mon, 11 Dec 2023 18:00:20 +0900 Subject: [PATCH 2/5] feat: assembly jar with shell scripts --- README.md | 12 +++++++----- build.sbt | 10 ++++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f3c8e52..62be18f 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ To build the project, follow these instructions: 1. Clone the repository. +1. Run `sbt clean`. 1. Run `sbt assembly`. ### Run @@ -19,12 +20,13 @@ To build the project, follow these instructions: To launch a master node and worker nodes, follow these steps: 1. Build the project using the instructions above. -1. Run [`master` script](bin/master) with parameters. - - For example, execute `./master ` from the [`bin`](bin) directory. -1. Run [`worker` script](bin/worker) with parameters. - - For example, `./worker : -I <...> -O ` from the [`bin`](bin) directory. +1. Ensure that `master` and `worker` executables are present in the [`build`](build) directory. +1. Run [`master`](build/master) with parameters. + - For example, `./master `. +1. Run [`worker`](build/worker) with parameters. + - For example, `./worker : -I <...> -O `. -It is possible to run jar files downloaded from releases page instead of building the project. +Note that built executables consist of shell scripts and JAR files, and thus require systems that support running shell scripts and have Java installed. ## Development diff --git a/build.sbt b/build.sbt index 5f637f1..5e1579e 100644 --- a/build.sbt +++ b/build.sbt @@ -1,3 +1,5 @@ +import sbtassembly.AssemblyPlugin.defaultShellScript + ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / scalaVersion := "2.13.12" @@ -14,6 +16,10 @@ ThisBuild / assembly / assemblyMergeStrategy := { case x => (assembly / assemblyMergeStrategy).value(x) } +ThisBuild / assemblyPrependShellScript := Some( + defaultShellScript +) + lazy val commonSettings = Seq( name := "cs434-project", idePackagePrefix := Some("kr.ac.postech.paranode"), @@ -61,7 +67,7 @@ lazy val master = (project in file("master")) .settings( commonSettings, idePackagePrefix := Some("kr.ac.postech.paranode.master"), - assembly / assemblyJarName := "master.jar" + assembly / assemblyOutputPath := file("build/master") ) .dependsOn(core) .dependsOn(rpc) @@ -70,7 +76,7 @@ lazy val worker = (project in file("worker")) .settings( commonSettings, idePackagePrefix := Some("kr.ac.postech.paranode.worker"), - assembly / assemblyJarName := "worker.jar" + assembly / assemblyOutputPath := file("build/worker") ) .dependsOn(core) .dependsOn(rpc) From 8c423fe50ebba711ef7a3fcb158c5d960f9dccbb Mon Sep 17 00:00:00 2001 From: Minjae Gwon Date: Mon, 11 Dec 2023 18:00:59 +0900 Subject: [PATCH 3/5] chore: fix dockerfile to use packed scripts --- docker/master/Dockerfile | 4 ++-- docker/worker/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/master/Dockerfile b/docker/master/Dockerfile index 4baf1b6..bf3acde 100644 --- a/docker/master/Dockerfile +++ b/docker/master/Dockerfile @@ -23,6 +23,6 @@ ENV NUMBER_OF_WORKERS=${NUMBER_OF_WORKERS} WORKDIR /app -COPY --from=builder /app/master/target/scala-2.13/master.jar . +COPY --from=builder /app/build/master . -ENTRYPOINT java -jar master.jar ${NUMBER_OF_WORKERS} +ENTRYPOINT ./master ${NUMBER_OF_WORKERS} diff --git a/docker/worker/Dockerfile b/docker/worker/Dockerfile index eccf6f8..55e6eb9 100644 --- a/docker/worker/Dockerfile +++ b/docker/worker/Dockerfile @@ -32,6 +32,6 @@ COPY docker/worker/data/${WORKER_ID} /data WORKDIR /app -COPY --from=builder /app/worker/target/scala-2.13/worker.jar . +COPY --from=builder /app/build/worker . -ENTRYPOINT java -jar worker.jar ${MASTER_HOST}:${MASTER_PORT} -I /data/0 /data/1 -O /output/ +ENTRYPOINT ./worker ${MASTER_HOST}:${MASTER_PORT} -I /data/0 /data/1 -O /output/ From fa9b75ddba1d3573ce2b3b9ba1f282ff31a895e9 Mon Sep 17 00:00:00 2001 From: Minjae Gwon Date: Mon, 11 Dec 2023 18:01:46 +0900 Subject: [PATCH 4/5] fix: deploy fixed files --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b5ab4f..246a1b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,11 +47,11 @@ jobs: - uses: actions/upload-artifact@v3 with: name: master - path: master/target/scala-2.13/master.jar + path: build/master - uses: actions/upload-artifact@v3 with: name: worker - path: worker/target/scala-2.13/worker.jar + path: build/worker - name: Release development build if: github.ref == 'refs/heads/develop' uses: marvinpinto/action-automatic-releases@latest @@ -61,8 +61,8 @@ jobs: prerelease: true title: "Development Build" files: | - master/target/scala-2.13/master.jar - worker/target/scala-2.13/worker.jar + build/master + build/worker - name: Release production build if: github.ref == 'refs/heads/main' uses: marvinpinto/action-automatic-releases@latest @@ -71,5 +71,5 @@ jobs: automatic_release_tag: "latest" title: "Production Build" files: | - master/target/scala-2.13/master.jar - worker/target/scala-2.13/worker.jar + build/master + build/worker From 2d77e1186474ac381f2382672dec70d503fdc9a9 Mon Sep 17 00:00:00 2001 From: Minjae Gwon Date: Mon, 11 Dec 2023 18:02:14 +0900 Subject: [PATCH 5/5] chore: remove unused scripts --- bin/master | 14 -------------- bin/worker | 14 -------------- 2 files changed, 28 deletions(-) delete mode 100755 bin/master delete mode 100755 bin/worker diff --git a/bin/master b/bin/master deleted file mode 100755 index 4fda028..0000000 --- a/bin/master +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -SCRIPT_PATH=$(realpath "$0") -BIN_DIR=$(dirname "$SCRIPT_PATH") -PROJECT_DIR=$(dirname "$BIN_DIR") - -JAR_PATH="$PROJECT_DIR/master/target/scala-2.13/master.jar" - -if [ ! -f "$JAR_PATH" ]; then - echo "Jar not found at $JAR_PATH. Try running 'sbt assembly' first." - exit 1 -fi - -java -Xmx8g -jar "$JAR_PATH" "$@" diff --git a/bin/worker b/bin/worker deleted file mode 100755 index 9788852..0000000 --- a/bin/worker +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -SCRIPT_PATH=$(realpath "$0") -BIN_DIR=$(dirname "$SCRIPT_PATH") -PROJECT_DIR=$(dirname "$BIN_DIR") - -JAR_PATH="$PROJECT_DIR/worker/target/scala-2.13/worker.jar" - -if [ ! -f "$JAR_PATH" ]; then - echo "Jar not found at $JAR_PATH. Try running 'sbt assembly' first." - exit 1 -fi - -java -Xmx8g -jar "$JAR_PATH" "$@"