diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6f40229..3338c91 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,63 +1,59 @@ name: Main - on: push - env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} jobs: - build-and-publish: - runs-on: ubuntu-latest - permissions: - contents: write - packages: write - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Prepare java - uses: actions/setup-java@v2 - with: - distribution: "adopt" - java-version: "16" - - - name: Install clojure tools - uses: DeLaGuardo/setup-clojure@3.5 - with: - cli: 1.10.3.943 - - - name: Build bot and copy out jar for docker - shell: bash - run: | - clojure -T:build uber - cp target/doplarr.jar docker - - - name: Release tagged version - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - files: | - target/doplarr.jar - config.edn - - - name: Log in to the Container registry - uses: docker/login-action@v1 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v3 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - - name: Build and push Docker image - uses: docker/build-push-action@v2 - with: - context: docker - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + build-and-publish: + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Prepare java + uses: actions/setup-java@v3 + with: + distribution: "adopt" + java-version: "22" + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@13.4 + with: + cli: latest + - name: Build bot and copy out jar for docker + shell: bash + run: | + clojure -T:build uber + cp target/doplarr.jar docker + - name: Release tagged version + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + target/doplarr.jar + config.edn + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/build/build.clj b/build/build.clj index 139e1ea..cffde7a 100644 --- a/build/build.clj +++ b/build/build.clj @@ -1,8 +1,23 @@ (ns build - (:require - [org.corfield.build :as bb])) + (:require [clojure.tools.build.api :as b])) + +(def class-dir "target/classes") +(def uber-file "target/doplarr.jar") + +;; delay to defer side effects (artifact downloads) +(def basis (delay (b/create-basis {:project "deps.edn"}))) + +(defn clean [_] + (b/delete {:path "target"})) (defn uber [_] - (bb/clean nil) - (bb/uber {:uber-file "target/doplarr.jar" - :main 'doplarr.core})) + (clean nil) + (b/copy-dir {:src-dirs ["src" "resources"] + :target-dir class-dir}) + (b/compile-clj {:basis @basis + :ns-compile '[doplarr.core] + :class-dir class-dir}) + (b/uber {:class-dir class-dir + :uber-file uber-file + :basis @basis + :main 'doplarr.core})) diff --git a/deps.edn b/deps.edn index fcbf49a..d20a033 100644 --- a/deps.edn +++ b/deps.edn @@ -1,23 +1,20 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.11.1"} - io.aviso/pretty {:mvn/version "1.1.1"} - org.clojure/core.cache {:mvn/version "1.0.225"} - yogthos/config {:mvn/version "1.2.0"} - com.rpl/specter {:mvn/version "1.1.4"} + :deps {org.clojure/clojure {:mvn/version "1.12.4"} + org.clj-commons/pretty {:mvn/version "3.6.7"} + org.clojure/core.cache {:mvn/version "1.1.234"} + yogthos/config {:mvn/version "1.2.1"} + com.rpl/specter {:mvn/version "1.1.6"} org.suskalo/discljord {:git/url "https://github.com/kiranshila/discljord" :git/sha "b66cdbed645ff052dd5f18361a0a7722a4860304"} expound/expound {:mvn/version "0.9.0"} - org.clojure/core.async {:mvn/version "1.5.648"} - cheshire/cheshire {:mvn/version "5.11.0"} - fmnoise/flow {:mvn/version "4.2.1"} - hato/hato {:mvn/version "0.8.2"} - com.taoensso/timbre {:mvn/version "5.2.1"} + org.clojure/core.async {:mvn/version "1.8.741"} + cheshire/cheshire {:mvn/version "6.1.0"} + fmnoise/flow {:mvn/version "4.3.0"} + hato/hato {:mvn/version "1.0.0"} + com.taoensso/timbre {:mvn/version "6.8.0"} camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"}} - :jvm-opts ["-Dconfig=config.edn"] - :aliases {:build {:extra-paths ["build"] - :deps {io.github.seancorfield/build-clj - {:git/tag "v0.8.3" :git/sha "7ac1f8d"}} + :deps {io.github.clojure/tools.build {:git/tag "v0.10.11" :git/sha "c6c670a"}} :ns-default build}}} diff --git a/docker/Dockerfile b/docker/Dockerfile index 2e99436..1523ed2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,30 +1,16 @@ -FROM clojure:tools-deps-1.11.1.1435 as builder - -WORKDIR /src - -# CACHING DEPS -COPY ./deps.edn ./ -RUN clojure -P -RUN clojure -T:build || true - -COPY ./build/ /src/build/ -COPY ./src/ /src/src/ - -RUN clojure -T:build uber - -FROM eclipse-temurin:22_36-jre-alpine as runtime +FROM eclipse-temurin:22_36-jre-alpine AS runtime WORKDIR /app -RUN \ - apk add --no-cache \ +RUN apk add --no-cache \ ca-certificates \ tini \ tzdata -COPY --from=builder /src/target/doplarr.jar ./ -ENTRYPOINT ["/sbin/tini", "--"] -CMD ["java","-jar","/app/doplarr.jar"] +COPY target/doplarr.jar . -LABEL "maintainer"="Kiran Shila " -LABEL "org.opencontainers.image.source"="https://github.com/kiranshila/Doplarr" +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["java", "-jar", "/app/doplarr.jar"] + +LABEL maintainer="Kiran Shila " +LABEL org.opencontainers.image.source="https://github.com/kiranshila/Doplarr" diff --git a/src/doplarr/utils.clj b/src/doplarr/utils.clj index 6c2a2b3..abeaab9 100644 --- a/src/doplarr/utils.clj +++ b/src/doplarr/utils.clj @@ -30,6 +30,7 @@ :as :json-string-keys :coerce :always :async? true + :version :http-1.1 :headers {"X-API-Key" key}} params) put