From ccf627589983850cd1937ba33266b742fff41afa Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sat, 15 Feb 2025 22:23:49 +0000 Subject: [PATCH 001/174] refactor(docker): Simplify Dockerfile and update build process with Alpine base image I would need to create multiple layers for each programming language with their common tools, starting with rust. Signed-off-by: Eden Reich --- .cargo/config.toml | 9 --- Cargo.lock | 51 ++----------- Cargo.toml | 4 +- Dockerfile | 83 +++++++++++----------- examples/docker-compose/.env.example | 1 + examples/docker-compose/docker-compose.yml | 7 +- 6 files changed, 49 insertions(+), 106 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 901bd96..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,9 +0,0 @@ -[target.x86_64-unknown-linux-musl] -rustflags = ["-C", "target-feature=+crt-static"] -linker = "x86_64-linux-musl-gcc" -ar = "x86_64-linux-musl-ar" - -[target.aarch64-unknown-linux-musl] -rustflags = ["-C", "target-feature=+crt-static"] -linker = "aarch64-linux-musl-gcc" -ar = "aarch64-linux-musl-ar" diff --git a/Cargo.lock b/Cargo.lock index 858c5ee..f56b642 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -815,19 +815,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -1072,16 +1059,6 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" -[[package]] -name = "iri-string" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0f0a572e8ffe56e2ff4f769f32ffe919282c3916799f8b68688b6030063bea" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -1271,13 +1248,11 @@ dependencies = [ "chrono", "either", "futures", - "futures-util", "http", "http-body", "http-body-util", "hyper", "hyper-rustls", - "hyper-timeout", "hyper-util", "jsonwebtoken", "once_cell", @@ -1289,10 +1264,8 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "snafu", - "tokio", "tower", "tower-http", - "tracing", "url", "web-time", ] @@ -1305,9 +1278,9 @@ checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags", "cfg-if", @@ -1346,9 +1319,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -2175,12 +2148,9 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags", "bytes", - "futures-util", "http", "http-body", - "iri-string", "pin-project-lite", - "tower", "tower-layer", "tower-service", "tracing", @@ -2204,23 +2174,10 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "log", "pin-project-lite", - "tracing-attributes", "tracing-core", ] -[[package]] -name = "tracing-attributes" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "tracing-core" version = "0.1.33" diff --git a/Cargo.toml b/Cargo.toml index f75db77..1da1bf2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,8 @@ futures-util = "0.3.31" ignore = "0.4.23" inference-gateway-sdk = "0.9.0" log = "0.4.25" -octocrab = "0.43.0" -openssl = { version = "0.10.70", features = ["vendored"] } +octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } +openssl = { version = "0.10.71", features = ["vendored"] } serde = "1.0.217" serde_json = "1.0.138" serde_yaml = "0.9.34" diff --git a/Dockerfile b/Dockerfile index 56a4483..f1d2ca4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,43 +3,28 @@ ARG TARGET_ARCH=aarch64-unknown-linux-musl # ARG TARGET_ARCH=x86_64-unknown-linux-musl -FROM ubuntu:24.04 AS build - -RUN apt-get update && apt-get install --no-install-recommends -y \ - curl \ - ca-certificates \ - build-essential \ - pkg-config \ - wget \ - git \ - musl-tools \ - libssl-dev \ - && rm -rf /var/lib/apt/lists/* \ - && cd /tmp \ - && wget https://musl.cc/x86_64-linux-musl-cross.tgz \ - && wget https://musl.cc/aarch64-linux-musl-cross.tgz \ - && tar -xzf x86_64-linux-musl-cross.tgz \ - && tar -xzf aarch64-linux-musl-cross.tgz \ - && mv x86_64-linux-musl-cross aarch64-linux-musl-cross /opt/ \ - && rm -rf *.tgz - +FROM alpine:3.21.3 AS build ARG TARGET_ARCH -ENV TARGET_ARCH=${TARGET_ARCH} \ - CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc \ - AR_x86_64_unknown_linux_musl=x86_64-linux-musl-ar \ - CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc \ - AR_aarch64_unknown_linux_musl=aarch64-linux-musl-ar \ - RUSTFLAGS="-C target-feature=+crt-static" \ - PKG_CONFIG_ALLOW_CROSS=1 \ - OPENSSL_STATIC=1 \ - OPENSSL_DIR=/usr \ - OPENSSL_INCLUDE_DIR=/usr/include \ - OPENSSL_LIB_DIR=/usr/lib - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -ENV PATH="/root/.cargo/bin:/opt/x86_64-linux-musl-cross/bin:/opt/aarch64-linux-musl-cross/bin:${PATH}" - -WORKDIR /app +ENV CC=clang \ + AR=llvm-ar \ + RUSTFLAGS="-C target-feature=+crt-static -C linker=clang" \ + CARGO_HOME=/root/.cargo \ + PATH="/root/.cargo/bin:${PATH}" \ + PKG_CONFIG_ALLOW_CROSS=1 + +RUN apk add --update --no-cache \ + make \ + perl \ + curl \ + file \ + musl-dev \ + clang \ + llvm \ + gcc \ + openssl-dev \ + pkgconfig \ + && rm -rf /var/cache/apk/* \ + && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y COPY Cargo.toml Cargo.lock ./ COPY . . @@ -47,17 +32,31 @@ COPY . . RUN rustup target add ${TARGET_ARCH} \ && cargo build --release --no-default-features --target ${TARGET_ARCH} -FROM alpine:3.21.3 -ARG TARGET_ARCH - -COPY --from=build /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder +WORKDIR /app +FROM alpine:3.21.3 AS common RUN apk add --no-cache \ ca-certificates \ git \ curl \ && addgroup -S -g 1001 coder \ - && adduser -S -G coder -u 1001 -h /home/coder -s /sbin/nologin -g "Coder user" coder + && adduser -S -G coder -u 1001 -h /home/coder -s /sbin/nologin -g "Coder user" coder \ + && rm -rf \ + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* +FROM common AS rust +ARG TARGET_ARCH +ENV PATH="/home/coder/.cargo/bin:${PATH}" +COPY --from=build --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder +COPY --from=build --chown=coder:coder /root/.cargo/bin/ /home/coder/.cargo/bin/ USER coder -ENTRYPOINT ["coder"] \ No newline at end of file +WORKDIR /home/coder +ENTRYPOINT [ "coder" ] + +FROM gcr.io/distroless/static:nonroot AS minimal +ARG TARGET_ARCH +COPY --from=build /app/target/${TARGET_ARCH}/release/coder /coder +USER nonroot:nonroot +ENTRYPOINT [ "/coder" ] \ No newline at end of file diff --git a/examples/docker-compose/.env.example b/examples/docker-compose/.env.example index 6088323..f57c7a7 100644 --- a/examples/docker-compose/.env.example +++ b/examples/docker-compose/.env.example @@ -13,6 +13,7 @@ CODER_LANGUAGE_LINTER='cargo fmt' CODER_LANGUAGE_TEST_COMMAND='cargo test' CODER_LANGUAGE_DOCS_URL='https://docs.rs' CODER_ISSUE='#1' +CODER_APK_PACKAGES='rustfmt clippy' # Gateway settings ## General settings diff --git a/examples/docker-compose/docker-compose.yml b/examples/docker-compose/docker-compose.yml index 521f65c..c146de3 100644 --- a/examples/docker-compose/docker-compose.yml +++ b/examples/docker-compose/docker-compose.yml @@ -1,17 +1,12 @@ services: coder: - image: ghcr.io/inference-gateway/coder:0.1.3 - user: 1000:1000 + image: coder:latest working_dir: /app volumes: - repository:/app env_file: - .env - entrypoint: "" command: | - apk add cargo - cargo install rustfmt - cargo install clippy coder init && coder index && coder fix --issue=${CODER_ISSUE} From 3a5034662619017c5bb7a3fa9419b23ae4081320 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 00:27:35 +0000 Subject: [PATCH 002/174] ci: Enhance GitHub Actions workflow for building and pushing Docker containers with Rust tools support and minimal ones Signed-off-by: Eden Reich --- .github/workflows/release.yml | 91 ++++++++++++++++++++++++++++------- Dockerfile | 27 ++++++++--- 2 files changed, 94 insertions(+), 24 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1cb2a78..5e5fff0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,31 +99,25 @@ jobs: exit 1 fi - build_artifacts: - name: Build and Upload Artifacts + build_binaries: + name: Build static binaries needs: github_release if: needs.github_release.outputs.new_release_published == 'true' + timeout-minutes: 15 permissions: contents: write - packages: write strategy: fail-fast: false matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-musl - arch_platform: linux/amd64 - timeout: 10 - os: ubuntu-latest target: aarch64-unknown-linux-musl - arch_platform: linux/arm64 - timeout: 40 # Cross-compilation takes longer - os: macos-latest target: x86_64-apple-darwin - timeout: 10 - os: macos-latest target: aarch64-apple-darwin - timeout: 10 runs-on: ${{ matrix.os }} steps: - name: Checkout repository @@ -213,37 +207,100 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + build_container: + name: Build and Push Docker Containers + needs: github_release + if: needs.github_release.outputs.new_release_published == 'true' + timeout-minutes: 45 + permissions: + packages: write + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + arch_platform: linux/amd64 + variant: minimal + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + arch_platform: linux/arm64 + variant: minimal + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + arch_platform: linux/amd64 + variant: rust + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + arch_platform: linux/arm64 + variant: rust + runs-on: ${{ matrix.os }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + persist-credentials: false + + - name: Update Cargo.toml version + run: | + echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" + if [[ "$RUNNER_OS" == "macOS" ]]; then + sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + else + sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + fi + - name: Set up QEMU - if: startsWith(matrix.os, 'ubuntu') uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - if: startsWith(matrix.os, 'ubuntu') uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - if: startsWith(matrix.os, 'ubuntu') uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push container - if: startsWith(matrix.os, 'ubuntu') + - name: B&P Minimal Container + if: matrix.variant == 'minimal' uses: docker/build-push-action@v6 with: context: . platforms: ${{ matrix.arch_platform }} push: true - cache-from: type=gha,scope=${{ github.workflow }}-${{ matrix.target }} - cache-to: type=gha,mode=max,scope=${{ github.workflow }}-${{ matrix.target }} + cache-from: type=gha,scope=minimal-${{ matrix.target }} + cache-to: type=gha,mode=max,scope=minimal-${{ matrix.target }} tags: | ghcr.io/${{ github.repository_owner }}/coder:latest - ghcr.io/${{ github.repository_owner }}/coder:${{ needs.github_release.outputs.new_release_version }} + ghcr.io/${{ github.repository_owner }}/coder:minimal + ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} + build-args: | + TARGET_ARCH=${{ matrix.target }} + labels: | + org.opencontainers.image.source=https://github.com/inference-gateway/coder + org.opencontainers.image.description=The AI-Powered Coder + org.opencontainers.image.licenses=MIT + target: minimal + + - name: B&P Rust Container + if: matrix.variant == 'rust' + uses: docker/build-push-action@v6 + with: + context: . + platforms: ${{ matrix.arch_platform }} + push: true + cache-from: type=gha,scope=rust-${{ matrix.target }} + cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} + tags: | + ghcr.io/${{ github.repository_owner }}/coder:rust + ghcr.io/${{ github.repository_owner }}/coder:rust-${{ needs.github_release.outputs.new_release_version }} build-args: | TARGET_ARCH=${{ matrix.target }} labels: | org.opencontainers.image.source=https://github.com/inference-gateway/coder org.opencontainers.image.description=The AI-Powered Coder org.opencontainers.image.licenses=MIT + target: rust diff --git a/Dockerfile b/Dockerfile index f1d2ca4..291056e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,11 @@ RUN apk add --update --no-cache \ openssl-dev \ pkgconfig \ && rm -rf /var/cache/apk/* \ - && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \ + && rustup install stable \ + && rustup default stable + +WORKDIR /app COPY Cargo.toml Cargo.lock ./ COPY . . @@ -32,15 +36,14 @@ COPY . . RUN rustup target add ${TARGET_ARCH} \ && cargo build --release --no-default-features --target ${TARGET_ARCH} -WORKDIR /app - FROM alpine:3.21.3 AS common -RUN apk add --no-cache \ +RUN apk add --update --no-cache \ ca-certificates \ git \ curl \ + libgcc \ && addgroup -S -g 1001 coder \ - && adduser -S -G coder -u 1001 -h /home/coder -s /sbin/nologin -g "Coder user" coder \ + && adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder \ && rm -rf \ /var/cache/apk/* \ /tmp/* \ @@ -48,9 +51,19 @@ RUN apk add --no-cache \ FROM common AS rust ARG TARGET_ARCH -ENV PATH="/home/coder/.cargo/bin:${PATH}" +ENV PATH="/home/coder/.cargo/bin:${PATH}" \ + RUSTUP_HOME="/home/coder/.rustup" \ + CARGO_HOME="/home/coder/.cargo" +RUN apk add --update --no-cache \ + rustup && \ + rustup-init -y \ + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} \ + --component rustfmt clippy \ + && chown -R coder:coder /home/coder/.cargo /home/coder/.rustup COPY --from=build --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder -COPY --from=build --chown=coder:coder /root/.cargo/bin/ /home/coder/.cargo/bin/ USER coder WORKDIR /home/coder ENTRYPOINT [ "coder" ] From 2ddfc743072eaa03785cce07a2937b2f8e0ca4e6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 16 Feb 2025 00:31:32 +0000 Subject: [PATCH 003/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.1=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.1](https://github.com/inference-gateway/coder/compare/0.1.3...0.1.4-rc.1) (2025-02-16) ### ♻️ Improvements * **docker:** Simplify Dockerfile and update build process with Alpine base image ([ccf6275](https://github.com/inference-gateway/coder/commit/ccf627589983850cd1937ba33266b742fff41afa)) ### 🐛 Bug Fixes * **docker-compose:** Update coder service image version to 0.1.3 with alpine base image ([c2d26b0](https://github.com/inference-gateway/coder/commit/c2d26b0af2a1c29fbcb616baa0162d5efc2e2662)) * **docker:** Add git and curl to the container image for enhanced functionality ([b21b49b](https://github.com/inference-gateway/coder/commit/b21b49bf98497fe52729bb6f834d9bf1cd44596f)) ### 👷 CI * Enhance GitHub Actions workflow for building and pushing Docker containers with Rust tools support and minimal ones ([3a50346](https://github.com/inference-gateway/coder/commit/3a5034662619017c5bb7a3fa9419b23ae4081320)) --- CHANGELOG.md | 15 +++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e67eb7..32e3657 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.1](https://github.com/inference-gateway/coder/compare/0.1.3...0.1.4-rc.1) (2025-02-16) + +### ♻️ Improvements + +* **docker:** Simplify Dockerfile and update build process with Alpine base image ([ccf6275](https://github.com/inference-gateway/coder/commit/ccf627589983850cd1937ba33266b742fff41afa)) + +### 🐛 Bug Fixes + +* **docker-compose:** Update coder service image version to 0.1.3 with alpine base image ([c2d26b0](https://github.com/inference-gateway/coder/commit/c2d26b0af2a1c29fbcb616baa0162d5efc2e2662)) +* **docker:** Add git and curl to the container image for enhanced functionality ([b21b49b](https://github.com/inference-gateway/coder/commit/b21b49bf98497fe52729bb6f834d9bf1cd44596f)) + +### 👷 CI + +* Enhance GitHub Actions workflow for building and pushing Docker containers with Rust tools support and minimal ones ([3a50346](https://github.com/inference-gateway/coder/commit/3a5034662619017c5bb7a3fa9419b23ae4081320)) + ## [0.1.3](https://github.com/inference-gateway/coder/compare/0.1.2...0.1.3) (2025-02-15) ### 🐛 Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index f56b642..b4f0862 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.3" +version = "0.1.4-rc.1" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 1da1bf2..9d42f28 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.3" +version = "0.1.4-rc.1" edition = "2021" [dependencies] From c0cf8d3fa99a87f09758232f7b99c094f95e3abb Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 01:08:12 +0000 Subject: [PATCH 004/174] refactor: Update Dockerfile and CI workflow to use clang and llvm for cross-compilation Signed-off-by: Eden Reich --- .github/workflows/release.yml | 15 ++++----- Dockerfile | 60 +++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5e5fff0..245cedd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -164,9 +164,10 @@ jobs: curl \ ca-certificates \ build-essential \ + clang \ + llvm \ pkg-config \ wget \ - git \ musl-tools \ libssl-dev \ && sudo rm -rf /var/lib/apt/lists/* \ @@ -179,21 +180,17 @@ jobs: && rm -rf *.tgz - name: Build binary for ${{ matrix.target }} - timeout-minutes: ${{ matrix.timeout }} env: PKG_CONFIG_ALLOW_CROSS: 1 - RUSTFLAGS: "-C target-feature=+crt-static" + RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" + CC: clang + AR: llvm-ar OPENSSL_DIR: /usr OPENSSL_LIB_DIR: /usr/lib OPENSSL_INCLUDE_DIR: /usr/include OPENSSL_STATIC: 1 - CC_aarch64_unknown_linux_musl: aarch64-linux-musl-gcc - AR_aarch64_unknown_linux_musl: aarch64-linux-musl-ar - CC_x86_64_unknown_linux_musl: x86_64-linux-musl-gcc - AR_x86_64_unknown_linux_musl: x86_64-linux-musl-ar run: | - export PATH="/root/.cargo/bin:/opt/x86_64-linux-musl-cross/bin:/opt/aarch64-linux-musl-cross/bin:${PATH}" - cargo build --release --target ${{ matrix.target }} + cargo build --release --no-default-features --target ${{ matrix.target }} - name: Rename binary to the published name run: | diff --git a/Dockerfile b/Dockerfile index 291056e..9e8d8a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,41 +13,45 @@ ENV CC=clang \ PKG_CONFIG_ALLOW_CROSS=1 RUN apk add --update --no-cache \ - make \ - perl \ - curl \ - file \ - musl-dev \ - clang \ - llvm \ - gcc \ - openssl-dev \ - pkgconfig \ - && rm -rf /var/cache/apk/* \ - && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \ - && rustup install stable \ - && rustup default stable + make \ + perl \ + file \ + musl-dev \ + clang \ + llvm \ + gcc \ + openssl-dev \ + pkgconfig \ + rustup \ + && rm -rf \ + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* \ + && rustup-init -y \ + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} WORKDIR /app COPY Cargo.toml Cargo.lock ./ COPY . . -RUN rustup target add ${TARGET_ARCH} \ - && cargo build --release --no-default-features --target ${TARGET_ARCH} +RUN cargo build --release --no-default-features --target ${TARGET_ARCH} FROM alpine:3.21.3 AS common RUN apk add --update --no-cache \ - ca-certificates \ - git \ - curl \ - libgcc \ + ca-certificates \ + git \ + curl \ + libgcc \ && addgroup -S -g 1001 coder \ && adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder \ && rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* FROM common AS rust ARG TARGET_ARCH @@ -57,11 +61,11 @@ ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUN apk add --update --no-cache \ rustup && \ rustup-init -y \ - --no-modify-path \ - --profile minimal \ - --default-toolchain stable \ - --target ${TARGET_ARCH} \ - --component rustfmt clippy \ + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} \ + --component rustfmt clippy \ && chown -R coder:coder /home/coder/.cargo /home/coder/.rustup COPY --from=build --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder USER coder From a41ed31b16c3848082859127c1f1f955442120d8 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 01:13:18 +0000 Subject: [PATCH 005/174] ci: Make the Build and Push job name shorter It often doesn't fit in Github UI which is quite annoying. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 245cedd..984f3bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -205,7 +205,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_container: - name: Build and Push Docker Containers + name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' timeout-minutes: 45 From c90a1f46005328045e6020237969608bf3cc04de Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 01:15:49 +0000 Subject: [PATCH 006/174] ci: Increase timeout for B&P Containers job to 65 minutes Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 984f3bc..0c6b2fd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -208,7 +208,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 45 + timeout-minutes: 65 # TODO - setup a self hosted runner instead of cross-compiling with emulators, it's crazy why github doesn't offer those runners permissions: packages: write strategy: From 41e2c5fa2baa3eb4042697cd036a302d07fa3f84 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 13:06:59 +0000 Subject: [PATCH 007/174] ci: Update Ubuntu version in release workflow to 24.04 and add arm64 runner Signed-off-by: Eden Reich --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c6b2fd..7fd4e88 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -110,9 +110,9 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest + - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - os: ubuntu-latest + - os: ubuntu-24.04-arm64 target: aarch64-unknown-linux-musl - os: macos-latest target: x86_64-apple-darwin @@ -215,19 +215,19 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest + - os: ubuntu-24.04 target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: minimal - - os: ubuntu-latest + - os: ubuntu-24.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: minimal - - os: ubuntu-latest + - os: ubuntu-24.04 target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: rust - - os: ubuntu-latest + - os: ubuntu-24.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: rust From f6109443895e59249226061aa62ea5645b99677c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 16 Feb 2025 13:08:10 +0000 Subject: [PATCH 008/174] ci: Reduce timeout for B&P Containers job from 65 to 15 minutes Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7fd4e88..3000743 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -208,7 +208,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 65 # TODO - setup a self hosted runner instead of cross-compiling with emulators, it's crazy why github doesn't offer those runners + timeout-minutes: 15 permissions: packages: write strategy: From c0e5b38df5d35d005c7d80af025fc5e0c55d2227 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 16 Feb 2025 13:10:43 +0000 Subject: [PATCH 009/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.2](https://github.com/inference-gateway/coder/compare/0.1.4-rc.1...0.1.4-rc.2) (2025-02-16) ### ♻️ Improvements * Update Dockerfile and CI workflow to use clang and llvm for cross-compilation ([c0cf8d3](https://github.com/inference-gateway/coder/commit/c0cf8d3fa99a87f09758232f7b99c094f95e3abb)) ### 👷 CI * Increase timeout for B&P Containers job to 65 minutes ([c90a1f4](https://github.com/inference-gateway/coder/commit/c90a1f46005328045e6020237969608bf3cc04de)) * Make the Build and Push job name shorter ([a41ed31](https://github.com/inference-gateway/coder/commit/a41ed31b16c3848082859127c1f1f955442120d8)) * Reduce timeout for B&P Containers job from 65 to 15 minutes ([f610944](https://github.com/inference-gateway/coder/commit/f6109443895e59249226061aa62ea5645b99677c)) * Update Ubuntu version in release workflow to 24.04 and add arm64 runner ([41e2c5f](https://github.com/inference-gateway/coder/commit/41e2c5fa2baa3eb4042697cd036a302d07fa3f84)) --- CHANGELOG.md | 13 +++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32e3657..f62980e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.2](https://github.com/inference-gateway/coder/compare/0.1.4-rc.1...0.1.4-rc.2) (2025-02-16) + +### ♻️ Improvements + +* Update Dockerfile and CI workflow to use clang and llvm for cross-compilation ([c0cf8d3](https://github.com/inference-gateway/coder/commit/c0cf8d3fa99a87f09758232f7b99c094f95e3abb)) + +### 👷 CI + +* Increase timeout for B&P Containers job to 65 minutes ([c90a1f4](https://github.com/inference-gateway/coder/commit/c90a1f46005328045e6020237969608bf3cc04de)) +* Make the Build and Push job name shorter ([a41ed31](https://github.com/inference-gateway/coder/commit/a41ed31b16c3848082859127c1f1f955442120d8)) +* Reduce timeout for B&P Containers job from 65 to 15 minutes ([f610944](https://github.com/inference-gateway/coder/commit/f6109443895e59249226061aa62ea5645b99677c)) +* Update Ubuntu version in release workflow to 24.04 and add arm64 runner ([41e2c5f](https://github.com/inference-gateway/coder/commit/41e2c5fa2baa3eb4042697cd036a302d07fa3f84)) + ## [0.1.4-rc.1](https://github.com/inference-gateway/coder/compare/0.1.3...0.1.4-rc.1) (2025-02-16) ### ♻️ Improvements diff --git a/Cargo.lock b/Cargo.lock index b4f0862..1c288ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.1" +version = "0.1.4-rc.2" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 9d42f28..7c55aac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.1" +version = "0.1.4-rc.2" edition = "2021" [dependencies] From 274d375bdb2d888de200706001e50986600e4919 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 14:39:41 +0000 Subject: [PATCH 010/174] ci: Change ARM64 jobs to use self-hosted runners in release workflow Finally have my own runners using ARC on Arm64, will give it a test. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3000743..1687415 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -112,7 +112,7 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - os: ubuntu-24.04-arm64 + - os: self-hosted target: aarch64-unknown-linux-musl - os: macos-latest target: x86_64-apple-darwin @@ -219,7 +219,7 @@ jobs: target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: minimal - - os: ubuntu-24.04-arm64 + - os: self-hosted target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: minimal @@ -227,7 +227,7 @@ jobs: target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: rust - - os: ubuntu-24.04-arm64 + - os: self-hosted target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: rust From 82961f35479accaf1348da502bc980097686e370 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 17 Feb 2025 14:42:24 +0000 Subject: [PATCH 011/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.3=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.3](https://github.com/inference-gateway/coder/compare/0.1.4-rc.2...0.1.4-rc.3) (2025-02-17) ### 👷 CI * Change ARM64 jobs to use self-hosted runners in release workflow ([274d375](https://github.com/inference-gateway/coder/commit/274d375bdb2d888de200706001e50986600e4919)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f62980e..64cfccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.3](https://github.com/inference-gateway/coder/compare/0.1.4-rc.2...0.1.4-rc.3) (2025-02-17) + +### 👷 CI + +* Change ARM64 jobs to use self-hosted runners in release workflow ([274d375](https://github.com/inference-gateway/coder/commit/274d375bdb2d888de200706001e50986600e4919)) + ## [0.1.4-rc.2](https://github.com/inference-gateway/coder/compare/0.1.4-rc.1...0.1.4-rc.2) (2025-02-16) ### ♻️ Improvements diff --git a/Cargo.lock b/Cargo.lock index 1c288ad..3d6cb19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.2" +version = "0.1.4-rc.3" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 7c55aac..33d936b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.2" +version = "0.1.4-rc.3" edition = "2021" [dependencies] From d242dce5f5032754271e85fa9f487a4efe7b8037 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 14:54:38 +0000 Subject: [PATCH 012/174] ci: Update release workflow to handle macOS builds separately Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1687415..a31c629 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -158,7 +158,7 @@ jobs: run: rustup target add ${{ matrix.target }} - name: Add build tools for musl target instead of glibc - if: startsWith(matrix.os, 'ubuntu') + if: ${{ !startsWith(matrix.os, 'macos') }} run: | sudo apt-get update && sudo apt-get install --no-install-recommends -y \ curl \ @@ -180,6 +180,7 @@ jobs: && rm -rf *.tgz - name: Build binary for ${{ matrix.target }} + if: ${{ !startsWith(matrix.os, 'macos') }} env: PKG_CONFIG_ALLOW_CROSS: 1 RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" @@ -192,6 +193,13 @@ jobs: run: | cargo build --release --no-default-features --target ${{ matrix.target }} + - name: Build binary for ${{ matrix.target }} + if: ${{ startsWith(matrix.os, 'macos') }} + env: + RUSTFLAGS: "-C target-feature=+crt-static" + run: | + cargo build --release --no-default-features --target ${{ matrix.target }} + - name: Rename binary to the published name run: | mv target/${{ matrix.target }}/release/coder target/${{ matrix.target }}/release/coder_${{ matrix.target }} From 74429be18ee3401e6e23920c70c985d388ff9a7e Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 16:42:11 +0000 Subject: [PATCH 013/174] ci: Update release workflow to include ubuntu-22.04-arm64 in self-hosted jobs Just to ensure it runs on the correct dynamic runner. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a31c629..80f3170 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -112,7 +112,9 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - os: self-hosted + - os: + - self-hosted + - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl - os: macos-latest target: x86_64-apple-darwin @@ -227,7 +229,9 @@ jobs: target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: minimal - - os: self-hosted + - os: + - self-hosted + - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: minimal @@ -235,7 +239,9 @@ jobs: target: x86_64-unknown-linux-musl arch_platform: linux/amd64 variant: rust - - os: self-hosted + - os: + - self-hosted + - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 variant: rust From 6e0eeecf8d6280a8717d96f94149dbbc07fd6b33 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 17 Feb 2025 16:44:49 +0000 Subject: [PATCH 014/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.4=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.4](https://github.com/inference-gateway/coder/compare/0.1.4-rc.3...0.1.4-rc.4) (2025-02-17) ### 👷 CI * Update release workflow to handle macOS builds separately ([d242dce](https://github.com/inference-gateway/coder/commit/d242dce5f5032754271e85fa9f487a4efe7b8037)) * Update release workflow to include ubuntu-22.04-arm64 in self-hosted jobs ([74429be](https://github.com/inference-gateway/coder/commit/74429be18ee3401e6e23920c70c985d388ff9a7e)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64cfccc..3206957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.4](https://github.com/inference-gateway/coder/compare/0.1.4-rc.3...0.1.4-rc.4) (2025-02-17) + +### 👷 CI + +* Update release workflow to handle macOS builds separately ([d242dce](https://github.com/inference-gateway/coder/commit/d242dce5f5032754271e85fa9f487a4efe7b8037)) +* Update release workflow to include ubuntu-22.04-arm64 in self-hosted jobs ([74429be](https://github.com/inference-gateway/coder/commit/74429be18ee3401e6e23920c70c985d388ff9a7e)) + ## [0.1.4-rc.3](https://github.com/inference-gateway/coder/compare/0.1.4-rc.2...0.1.4-rc.3) (2025-02-17) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 3d6cb19..bcb96d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.3" +version = "0.1.4-rc.4" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 33d936b..24e2646 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.3" +version = "0.1.4-rc.4" edition = "2021" [dependencies] From 8e8af765f3d6506891a4482eafbef0bd557e419b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 18:53:09 +0000 Subject: [PATCH 015/174] ci: Comment out Build and Push Rust Container job in release workflow Just to trigger a release candidate change, will bring it back later. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80f3170..e7b4cf7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -296,22 +296,22 @@ jobs: org.opencontainers.image.licenses=MIT target: minimal - - name: B&P Rust Container - if: matrix.variant == 'rust' - uses: docker/build-push-action@v6 - with: - context: . - platforms: ${{ matrix.arch_platform }} - push: true - cache-from: type=gha,scope=rust-${{ matrix.target }} - cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} - tags: | - ghcr.io/${{ github.repository_owner }}/coder:rust - ghcr.io/${{ github.repository_owner }}/coder:rust-${{ needs.github_release.outputs.new_release_version }} - build-args: | - TARGET_ARCH=${{ matrix.target }} - labels: | - org.opencontainers.image.source=https://github.com/inference-gateway/coder - org.opencontainers.image.description=The AI-Powered Coder - org.opencontainers.image.licenses=MIT - target: rust + # - name: B&P Rust Container + # if: matrix.variant == 'rust' + # uses: docker/build-push-action@v6 + # with: + # context: . + # platforms: ${{ matrix.arch_platform }} + # push: true + # cache-from: type=gha,scope=rust-${{ matrix.target }} + # cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} + # tags: | + # ghcr.io/${{ github.repository_owner }}/coder:rust + # ghcr.io/${{ github.repository_owner }}/coder:rust-${{ needs.github_release.outputs.new_release_version }} + # build-args: | + # TARGET_ARCH=${{ matrix.target }} + # labels: | + # org.opencontainers.image.source=https://github.com/inference-gateway/coder + # org.opencontainers.image.description=The AI-Powered Coder + # org.opencontainers.image.licenses=MIT + # target: rust From 83461f20f439b9e8b5c2a2d5f0fa21495b1a2495 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 17 Feb 2025 18:55:34 +0000 Subject: [PATCH 016/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.5=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.5](https://github.com/inference-gateway/coder/compare/0.1.4-rc.4...0.1.4-rc.5) (2025-02-17) ### 👷 CI * Comment out Build and Push Rust Container job in release workflow ([8e8af76](https://github.com/inference-gateway/coder/commit/8e8af765f3d6506891a4482eafbef0bd557e419b)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3206957..750548f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.5](https://github.com/inference-gateway/coder/compare/0.1.4-rc.4...0.1.4-rc.5) (2025-02-17) + +### 👷 CI + +* Comment out Build and Push Rust Container job in release workflow ([8e8af76](https://github.com/inference-gateway/coder/commit/8e8af765f3d6506891a4482eafbef0bd557e419b)) + ## [0.1.4-rc.4](https://github.com/inference-gateway/coder/compare/0.1.4-rc.3...0.1.4-rc.4) (2025-02-17) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index bcb96d1..98fac28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.4" +version = "0.1.4-rc.5" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 24e2646..75bcd61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.4" +version = "0.1.4-rc.5" edition = "2021" [dependencies] From fd20e5b0c5e6781706222b59bd99c268ea441a35 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 19:11:20 +0000 Subject: [PATCH 017/174] ci: Split language specific containers with tools to a separate job and comment it out Signed-off-by: Eden Reich --- .github/workflows/release.yml | 103 +++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 33 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7b4cf7..0261016 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -228,23 +228,11 @@ jobs: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl arch_platform: linux/amd64 - variant: minimal - os: - self-hosted - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 - variant: minimal - - os: ubuntu-24.04 - target: x86_64-unknown-linux-musl - arch_platform: linux/amd64 - variant: rust - - os: - - self-hosted - - ubuntu-22.04-arm64 - target: aarch64-unknown-linux-musl - arch_platform: linux/arm64 - variant: rust runs-on: ${{ matrix.os }} steps: - name: Checkout repository @@ -294,24 +282,73 @@ jobs: org.opencontainers.image.source=https://github.com/inference-gateway/coder org.opencontainers.image.description=The AI-Powered Coder org.opencontainers.image.licenses=MIT - target: minimal - - # - name: B&P Rust Container - # if: matrix.variant == 'rust' - # uses: docker/build-push-action@v6 - # with: - # context: . - # platforms: ${{ matrix.arch_platform }} - # push: true - # cache-from: type=gha,scope=rust-${{ matrix.target }} - # cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} - # tags: | - # ghcr.io/${{ github.repository_owner }}/coder:rust - # ghcr.io/${{ github.repository_owner }}/coder:rust-${{ needs.github_release.outputs.new_release_version }} - # build-args: | - # TARGET_ARCH=${{ matrix.target }} - # labels: | - # org.opencontainers.image.source=https://github.com/inference-gateway/coder - # org.opencontainers.image.description=The AI-Powered Coder - # org.opencontainers.image.licenses=MIT - # target: rust + + # build_container_with_tools: + # name: B&P Language specific Containers + # needs: github_release + # if: needs.github_release.outputs.new_release_published == 'true' + # timeout-minutes: 15 + # permissions: + # packages: write + # strategy: + # fail-fast: false + # matrix: + # include: + # - os: ubuntu-24.04 + # target: x86_64-unknown-linux-musl + # arch_platform: linux/amd64 + # language: rust + # - os: + # - self-hosted + # - ubuntu-22.04-arm64 + # target: aarch64-unknown-linux-musl + # arch_platform: linux/arm64 + # language: rust + # runs-on: ${{ matrix.os }} + # steps: + # - name: Checkout repository + # uses: actions/checkout@v4 + # with: + # ref: ${{ github.ref }} + # persist-credentials: false + + # - name: Update Cargo.toml version + # run: | + # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" + # if [[ "$RUNNER_OS" == "macOS" ]]; then + # sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + # else + # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + # fi + + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 + + # - name: Set up Docker Buildx + # uses: docker/setup-buildx-action@v3 + + # - name: Login to GitHub Container Registry + # uses: docker/login-action@v3 + # with: + # registry: ghcr.io + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + + # - name: B&P ${{ matrix.language }} Container + # uses: docker/build-push-action@v6 + # with: + # context: . + # platforms: ${{ matrix.arch_platform }} + # push: true + # cache-from: type=gha,scope=rust-${{ matrix.target }} + # cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} + # tags: | + # ghcr.io/${{ github.repository_owner }}/coder:${{ matrix.language }} + # ghcr.io/${{ github.repository_owner }}/coder:${{ matrix.language }}-${{ needs.github_release.outputs.new_release_version }} + # build-args: | + # TARGET_ARCH=${{ matrix.target }} + # labels: | + # org.opencontainers.image.source=https://github.com/inference-gateway/coder + # org.opencontainers.image.description=The AI-Powered Coder + # org.opencontainers.image.licenses=MIT + # target: ${{ matrix.language }} From ca6f85fc5ba7d85c13f113c15709b832ded25615 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 19:12:06 +0000 Subject: [PATCH 018/174] ci: Remove conditional check for minimal variant in B&P Minimal Container job Signed-off-by: Eden Reich --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0261016..3fe11fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -264,7 +264,6 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: B&P Minimal Container - if: matrix.variant == 'minimal' uses: docker/build-push-action@v6 with: context: . From 1bdf885cd539045a0cdf816d5672b021bb575c3b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 19:12:41 +0000 Subject: [PATCH 019/174] ci: Rename build_container job to build_containers and update commented job name Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3fe11fc..7e29b45 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -214,7 +214,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - build_container: + build_containers: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' @@ -282,7 +282,7 @@ jobs: org.opencontainers.image.description=The AI-Powered Coder org.opencontainers.image.licenses=MIT - # build_container_with_tools: + # build_containers_with_tools: # name: B&P Language specific Containers # needs: github_release # if: needs.github_release.outputs.new_release_published == 'true' From 4a09c1a2d5c3a7d441c65d2ba7bff8ecc184a0ce Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 19:13:22 +0000 Subject: [PATCH 020/174] ci: Comment out QEMU setup step in release workflow It's no longer needed since it's built natively, no need emulator. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e29b45..305892f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,8 +250,8 @@ jobs: sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml fi - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 From 4d00ad3ecd9644b57a2218030681c99a87b3c416 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 17 Feb 2025 19:15:26 +0000 Subject: [PATCH 021/174] ci: Comment out temporarily build_binaries job in release workflow to speed things up Signed-off-by: Eden Reich --- .github/workflows/release.yml | 216 +++++++++++++++++----------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 305892f..ea184ee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,120 +99,120 @@ jobs: exit 1 fi - build_binaries: - name: Build static binaries - needs: github_release - if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 15 - permissions: - contents: write - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-24.04 - target: x86_64-unknown-linux-musl - - os: - - self-hosted - - ubuntu-22.04-arm64 - target: aarch64-unknown-linux-musl - - os: macos-latest - target: x86_64-apple-darwin - - os: macos-latest - target: aarch64-apple-darwin - runs-on: ${{ matrix.os }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - ref: ${{ github.ref }} - persist-credentials: false + # build_binaries: + # name: Build static binaries + # needs: github_release + # if: needs.github_release.outputs.new_release_published == 'true' + # timeout-minutes: 15 + # permissions: + # contents: write + # strategy: + # fail-fast: false + # matrix: + # include: + # - os: ubuntu-24.04 + # target: x86_64-unknown-linux-musl + # - os: + # - self-hosted + # - ubuntu-22.04-arm64 + # target: aarch64-unknown-linux-musl + # - os: macos-latest + # target: x86_64-apple-darwin + # - os: macos-latest + # target: aarch64-apple-darwin + # runs-on: ${{ matrix.os }} + # steps: + # - name: Checkout repository + # uses: actions/checkout@v4 + # with: + # ref: ${{ github.ref }} + # persist-credentials: false - - name: Update Cargo.toml version - run: | - echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - if [[ "$RUNNER_OS" == "macOS" ]]; then - sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - else - sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - fi + # - name: Update Cargo.toml version + # run: | + # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" + # if [[ "$RUNNER_OS" == "macOS" ]]; then + # sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + # else + # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + # fi - - name: Install Rust - uses: actions-rust-lang/setup-rust-toolchain@v1.10.1 - with: - toolchain: stable - override: true + # - name: Install Rust + # uses: actions-rust-lang/setup-rust-toolchain@v1.10.1 + # with: + # toolchain: stable + # override: true - - name: Cache Rust dependencies - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-${{ matrix.target }}-cargo - - - name: Add target ${{ matrix.target }} - run: rustup target add ${{ matrix.target }} - - - name: Add build tools for musl target instead of glibc - if: ${{ !startsWith(matrix.os, 'macos') }} - run: | - sudo apt-get update && sudo apt-get install --no-install-recommends -y \ - curl \ - ca-certificates \ - build-essential \ - clang \ - llvm \ - pkg-config \ - wget \ - musl-tools \ - libssl-dev \ - && sudo rm -rf /var/lib/apt/lists/* \ - && cd /tmp \ - && wget https://musl.cc/x86_64-linux-musl-cross.tgz \ - && wget https://musl.cc/aarch64-linux-musl-cross.tgz \ - && tar -xzf x86_64-linux-musl-cross.tgz \ - && tar -xzf aarch64-linux-musl-cross.tgz \ - && sudo mv x86_64-linux-musl-cross aarch64-linux-musl-cross /opt/ \ - && rm -rf *.tgz - - - name: Build binary for ${{ matrix.target }} - if: ${{ !startsWith(matrix.os, 'macos') }} - env: - PKG_CONFIG_ALLOW_CROSS: 1 - RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" - CC: clang - AR: llvm-ar - OPENSSL_DIR: /usr - OPENSSL_LIB_DIR: /usr/lib - OPENSSL_INCLUDE_DIR: /usr/include - OPENSSL_STATIC: 1 - run: | - cargo build --release --no-default-features --target ${{ matrix.target }} + # - name: Cache Rust dependencies + # uses: actions/cache@v4 + # with: + # path: | + # ~/.cargo/bin/ + # ~/.cargo/registry/index/ + # ~/.cargo/registry/cache/ + # ~/.cargo/git/db/ + # target/ + # key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + # restore-keys: | + # ${{ runner.os }}-${{ matrix.target }}-cargo + + # - name: Add target ${{ matrix.target }} + # run: rustup target add ${{ matrix.target }} + + # - name: Add build tools for musl target instead of glibc + # if: ${{ !startsWith(matrix.os, 'macos') }} + # run: | + # sudo apt-get update && sudo apt-get install --no-install-recommends -y \ + # curl \ + # ca-certificates \ + # build-essential \ + # clang \ + # llvm \ + # pkg-config \ + # wget \ + # musl-tools \ + # libssl-dev \ + # && sudo rm -rf /var/lib/apt/lists/* \ + # && cd /tmp \ + # && wget https://musl.cc/x86_64-linux-musl-cross.tgz \ + # && wget https://musl.cc/aarch64-linux-musl-cross.tgz \ + # && tar -xzf x86_64-linux-musl-cross.tgz \ + # && tar -xzf aarch64-linux-musl-cross.tgz \ + # && sudo mv x86_64-linux-musl-cross aarch64-linux-musl-cross /opt/ \ + # && rm -rf *.tgz + + # - name: Build binary for ${{ matrix.target }} + # if: ${{ !startsWith(matrix.os, 'macos') }} + # env: + # PKG_CONFIG_ALLOW_CROSS: 1 + # RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" + # CC: clang + # AR: llvm-ar + # OPENSSL_DIR: /usr + # OPENSSL_LIB_DIR: /usr/lib + # OPENSSL_INCLUDE_DIR: /usr/include + # OPENSSL_STATIC: 1 + # run: | + # cargo build --release --no-default-features --target ${{ matrix.target }} - - name: Build binary for ${{ matrix.target }} - if: ${{ startsWith(matrix.os, 'macos') }} - env: - RUSTFLAGS: "-C target-feature=+crt-static" - run: | - cargo build --release --no-default-features --target ${{ matrix.target }} + # - name: Build binary for ${{ matrix.target }} + # if: ${{ startsWith(matrix.os, 'macos') }} + # env: + # RUSTFLAGS: "-C target-feature=+crt-static" + # run: | + # cargo build --release --no-default-features --target ${{ matrix.target }} - - name: Rename binary to the published name - run: | - mv target/${{ matrix.target }}/release/coder target/${{ matrix.target }}/release/coder_${{ matrix.target }} + # - name: Rename binary to the published name + # run: | + # mv target/${{ matrix.target }}/release/coder target/${{ matrix.target }}/release/coder_${{ matrix.target }} - - name: Upload to GitHub Release - uses: softprops/action-gh-release@v2 - with: - files: target/${{ matrix.target }}/release/coder_${{ matrix.target }} - tag_name: ${{ needs.github_release.outputs.new_release_version }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Upload to GitHub Release + # uses: softprops/action-gh-release@v2 + # with: + # files: target/${{ matrix.target }}/release/coder_${{ matrix.target }} + # tag_name: ${{ needs.github_release.outputs.new_release_version }} + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_containers: name: B&P Containers From d6a041fb75328193a9d209768ac77bfedf7e1e56 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 17 Feb 2025 19:18:05 +0000 Subject: [PATCH 022/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.6=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.6](https://github.com/inference-gateway/coder/compare/0.1.4-rc.5...0.1.4-rc.6) (2025-02-17) ### 👷 CI * Comment out QEMU setup step in release workflow ([4a09c1a](https://github.com/inference-gateway/coder/commit/4a09c1a2d5c3a7d441c65d2ba7bff8ecc184a0ce)) * Comment out temporarily build_binaries job in release workflow to speed things up ([4d00ad3](https://github.com/inference-gateway/coder/commit/4d00ad3ecd9644b57a2218030681c99a87b3c416)) * Remove conditional check for minimal variant in B&P Minimal Container job ([ca6f85f](https://github.com/inference-gateway/coder/commit/ca6f85fc5ba7d85c13f113c15709b832ded25615)) * Rename build_container job to build_containers and update commented job name ([1bdf885](https://github.com/inference-gateway/coder/commit/1bdf885cd539045a0cdf816d5672b021bb575c3b)) * Split language specific containers with tools to a separate job and comment it out ([fd20e5b](https://github.com/inference-gateway/coder/commit/fd20e5b0c5e6781706222b59bd99c268ea441a35)) --- CHANGELOG.md | 10 ++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 750548f..c18d29c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.6](https://github.com/inference-gateway/coder/compare/0.1.4-rc.5...0.1.4-rc.6) (2025-02-17) + +### 👷 CI + +* Comment out QEMU setup step in release workflow ([4a09c1a](https://github.com/inference-gateway/coder/commit/4a09c1a2d5c3a7d441c65d2ba7bff8ecc184a0ce)) +* Comment out temporarily build_binaries job in release workflow to speed things up ([4d00ad3](https://github.com/inference-gateway/coder/commit/4d00ad3ecd9644b57a2218030681c99a87b3c416)) +* Remove conditional check for minimal variant in B&P Minimal Container job ([ca6f85f](https://github.com/inference-gateway/coder/commit/ca6f85fc5ba7d85c13f113c15709b832ded25615)) +* Rename build_container job to build_containers and update commented job name ([1bdf885](https://github.com/inference-gateway/coder/commit/1bdf885cd539045a0cdf816d5672b021bb575c3b)) +* Split language specific containers with tools to a separate job and comment it out ([fd20e5b](https://github.com/inference-gateway/coder/commit/fd20e5b0c5e6781706222b59bd99c268ea441a35)) + ## [0.1.4-rc.5](https://github.com/inference-gateway/coder/compare/0.1.4-rc.4...0.1.4-rc.5) (2025-02-17) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 98fac28..d293bae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.5" +version = "0.1.4-rc.6" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 75bcd61..d8c892d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.5" +version = "0.1.4-rc.6" edition = "2021" [dependencies] From 3422a9fcb82382aa578395006e443a6aa57a5fe6 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 01:31:29 +0100 Subject: [PATCH 023/174] ci: Add k8s to the list of OS options in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ea184ee..10f90f1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -114,6 +114,7 @@ jobs: # target: x86_64-unknown-linux-musl # - os: # - self-hosted + # - k8s # - ubuntu-22.04-arm64 # target: aarch64-unknown-linux-musl # - os: macos-latest @@ -230,6 +231,7 @@ jobs: arch_platform: linux/amd64 - os: - self-hosted + - k8s - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl arch_platform: linux/arm64 @@ -299,6 +301,7 @@ jobs: # language: rust # - os: # - self-hosted + # - k8s # - ubuntu-22.04-arm64 # target: aarch64-unknown-linux-musl # arch_platform: linux/arm64 From 9d308a356f9a1a798b1e246515c2861cdc61794d Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 00:34:01 +0000 Subject: [PATCH 024/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.7=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.7](https://github.com/inference-gateway/coder/compare/0.1.4-rc.6...0.1.4-rc.7) (2025-02-19) ### 👷 CI * Add k8s to the list of OS options in release workflow ([3422a9f](https://github.com/inference-gateway/coder/commit/3422a9fcb82382aa578395006e443a6aa57a5fe6)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c18d29c..8af0e7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.7](https://github.com/inference-gateway/coder/compare/0.1.4-rc.6...0.1.4-rc.7) (2025-02-19) + +### 👷 CI + +* Add k8s to the list of OS options in release workflow ([3422a9f](https://github.com/inference-gateway/coder/commit/3422a9fcb82382aa578395006e443a6aa57a5fe6)) + ## [0.1.4-rc.6](https://github.com/inference-gateway/coder/compare/0.1.4-rc.5...0.1.4-rc.6) (2025-02-17) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index d293bae..fb5f311 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.6" +version = "0.1.4-rc.7" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index d8c892d..ffc985c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.6" +version = "0.1.4-rc.7" edition = "2021" [dependencies] From 8568c6744340b52f46543298a973c04e0f945e26 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 01:50:10 +0100 Subject: [PATCH 025/174] ci: Increase timeout for B&P Containers job in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 10f90f1..8721602 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,7 +219,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 15 + timeout-minutes: 30 permissions: packages: write strategy: From b6c4bf2a93beb0b098211624afe3a08a4130f82d Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 00:52:44 +0000 Subject: [PATCH 026/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.8=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.8](https://github.com/inference-gateway/coder/compare/0.1.4-rc.7...0.1.4-rc.8) (2025-02-19) ### 👷 CI * Increase timeout for B&P Containers job in release workflow ([8568c67](https://github.com/inference-gateway/coder/commit/8568c6744340b52f46543298a973c04e0f945e26)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8af0e7e..a383beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.8](https://github.com/inference-gateway/coder/compare/0.1.4-rc.7...0.1.4-rc.8) (2025-02-19) + +### 👷 CI + +* Increase timeout for B&P Containers job in release workflow ([8568c67](https://github.com/inference-gateway/coder/commit/8568c6744340b52f46543298a973c04e0f945e26)) + ## [0.1.4-rc.7](https://github.com/inference-gateway/coder/compare/0.1.4-rc.6...0.1.4-rc.7) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index fb5f311..03c8df9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.7" +version = "0.1.4-rc.8" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index ffc985c..3abffac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.7" +version = "0.1.4-rc.8" edition = "2021" [dependencies] From 8f022262d03d8e677f451e239056314e26b6cd5c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 02:44:43 +0100 Subject: [PATCH 027/174] ci: Update Dockerfile to use rust:alpine as base image and streamline build process There is an issue with rust registry the container sometimes can't reach it and so it gets stuck. Signed-off-by: Eden Reich --- Dockerfile | 58 ++++++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9e8d8a5..0b50f47 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ ARG TARGET_ARCH=aarch64-unknown-linux-musl # ARG TARGET_ARCH=x86_64-unknown-linux-musl -FROM alpine:3.21.3 AS build +FROM rust:alpine3.21 AS build ARG TARGET_ARCH ENV CC=clang \ AR=llvm-ar \ @@ -13,45 +13,39 @@ ENV CC=clang \ PKG_CONFIG_ALLOW_CROSS=1 RUN apk add --update --no-cache \ - make \ - perl \ - file \ - musl-dev \ - clang \ - llvm \ - gcc \ - openssl-dev \ - pkgconfig \ - rustup \ + make \ + perl \ + file \ + musl-dev \ + clang \ + llvm \ + openssl-dev \ + pkgconfig \ && rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* \ - && rustup-init -y \ - --no-modify-path \ - --profile minimal \ - --default-toolchain stable \ - --target ${TARGET_ARCH} + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* WORKDIR /app COPY Cargo.toml Cargo.lock ./ COPY . . -RUN cargo build --release --no-default-features --target ${TARGET_ARCH} +RUN rustup target add ${TARGET_ARCH} && \ + cargo build --release --no-default-features --target ${TARGET_ARCH} FROM alpine:3.21.3 AS common RUN apk add --update --no-cache \ - ca-certificates \ - git \ - curl \ - libgcc \ + ca-certificates \ + git \ + curl \ + libgcc \ && addgroup -S -g 1001 coder \ && adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder \ && rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* FROM common AS rust ARG TARGET_ARCH @@ -61,11 +55,11 @@ ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUN apk add --update --no-cache \ rustup && \ rustup-init -y \ - --no-modify-path \ - --profile minimal \ - --default-toolchain stable \ - --target ${TARGET_ARCH} \ - --component rustfmt clippy \ + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} \ + --component rustfmt clippy \ && chown -R coder:coder /home/coder/.cargo /home/coder/.rustup COPY --from=build --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder USER coder From 27486eb3c60a51676270e77bbbb56fb5b48e8371 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 01:47:33 +0000 Subject: [PATCH 028/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.9=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.9](https://github.com/inference-gateway/coder/compare/0.1.4-rc.8...0.1.4-rc.9) (2025-02-19) ### 👷 CI * Update Dockerfile to use rust:alpine as base image and streamline build process ([8f02226](https://github.com/inference-gateway/coder/commit/8f022262d03d8e677f451e239056314e26b6cd5c)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a383beb..c37f28b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.9](https://github.com/inference-gateway/coder/compare/0.1.4-rc.8...0.1.4-rc.9) (2025-02-19) + +### 👷 CI + +* Update Dockerfile to use rust:alpine as base image and streamline build process ([8f02226](https://github.com/inference-gateway/coder/commit/8f022262d03d8e677f451e239056314e26b6cd5c)) + ## [0.1.4-rc.8](https://github.com/inference-gateway/coder/compare/0.1.4-rc.7...0.1.4-rc.8) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 03c8df9..f9c0a4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.8" +version = "0.1.4-rc.9" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 3abffac..e1e2ede 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.8" +version = "0.1.4-rc.9" edition = "2021" [dependencies] From 3756ab1cb406fb901662bfad70a121660e9eaa0b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 03:05:19 +0100 Subject: [PATCH 029/174] ci: Optimize Dockerfile by removing redundant apk update commands Probably not needed, there is a network bottleneck right now, which I still have to resolve. It's sometimes goes through and sometimes hangs. Probably related to docker CNI. Might need to switch to use KO. Signed-off-by: Eden Reich --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0b50f47..f2cae31 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ ENV CC=clang \ PATH="/root/.cargo/bin:${PATH}" \ PKG_CONFIG_ALLOW_CROSS=1 -RUN apk add --update --no-cache \ +RUN apk add --no-cache \ make \ perl \ file \ @@ -35,7 +35,7 @@ RUN rustup target add ${TARGET_ARCH} && \ cargo build --release --no-default-features --target ${TARGET_ARCH} FROM alpine:3.21.3 AS common -RUN apk add --update --no-cache \ +RUN apk add --no-cache \ ca-certificates \ git \ curl \ @@ -52,7 +52,7 @@ ARG TARGET_ARCH ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUSTUP_HOME="/home/coder/.rustup" \ CARGO_HOME="/home/coder/.cargo" -RUN apk add --update --no-cache \ +RUN apk add --no-cache \ rustup && \ rustup-init -y \ --no-modify-path \ From d479ce8eee2b8cab6af6316094ba601c4a4042b9 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 02:07:59 +0000 Subject: [PATCH 030/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.10=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.10](https://github.com/inference-gateway/coder/compare/0.1.4-rc.9...0.1.4-rc.10) (2025-02-19) ### 👷 CI * Optimize Dockerfile by removing redundant apk update commands ([3756ab1](https://github.com/inference-gateway/coder/commit/3756ab1cb406fb901662bfad70a121660e9eaa0b)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c37f28b..3ac6728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.10](https://github.com/inference-gateway/coder/compare/0.1.4-rc.9...0.1.4-rc.10) (2025-02-19) + +### 👷 CI + +* Optimize Dockerfile by removing redundant apk update commands ([3756ab1](https://github.com/inference-gateway/coder/commit/3756ab1cb406fb901662bfad70a121660e9eaa0b)) + ## [0.1.4-rc.9](https://github.com/inference-gateway/coder/compare/0.1.4-rc.8...0.1.4-rc.9) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index f9c0a4f..c9cf7f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.9" +version = "0.1.4-rc.10" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index e1e2ede..b77b767 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.9" +version = "0.1.4-rc.10" edition = "2021" [dependencies] From 6a2b930918b30b353f552e63c75c8424d5e2cef6 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 14:10:41 +0000 Subject: [PATCH 031/174] ci: Update release workflow to use Kaniko for building and pushing OCI images TODO - I need to remove dind from the dynamic runner. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 58 ++++++++++++++--------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8721602..6032e20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -236,6 +236,9 @@ jobs: target: aarch64-unknown-linux-musl arch_platform: linux/arm64 runs-on: ${{ matrix.os }} + container: + image: gcr.io/kaniko-project/executor:v1.23.2 + options: --platform=${{ matrix.arch_platform }} steps: - name: Checkout repository uses: actions/checkout@v4 @@ -246,43 +249,28 @@ jobs: - name: Update Cargo.toml version run: | echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - if [[ "$RUNNER_OS" == "macOS" ]]; then - sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - else - sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - fi - - # - name: Set up QEMU - # uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} + - name: Configure GHCR auth + run: | + mkdir -p /kaniko/.docker + echo "{\"auths\":{\"ghcr.io\":{\"auth\":\"$(echo -n "${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}" | base64)\"}}}" > /kaniko/.docker/config.json - - name: B&P Minimal Container - uses: docker/build-push-action@v6 - with: - context: . - platforms: ${{ matrix.arch_platform }} - push: true - cache-from: type=gha,scope=minimal-${{ matrix.target }} - cache-to: type=gha,mode=max,scope=minimal-${{ matrix.target }} - tags: | - ghcr.io/${{ github.repository_owner }}/coder:latest - ghcr.io/${{ github.repository_owner }}/coder:minimal - ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} - build-args: | - TARGET_ARCH=${{ matrix.target }} - labels: | - org.opencontainers.image.source=https://github.com/inference-gateway/coder - org.opencontainers.image.description=The AI-Powered Coder - org.opencontainers.image.licenses=MIT + - name: Build and Push + run: | + /kaniko/executor \ + --context ${{ github.workspace }} \ + --dockerfile ${{ github.workspace }}/Dockerfile \ + --destination ghcr.io/${{ github.repository_owner }}/coder:latest \ + --destination ghcr.io/${{ github.repository_owner }}/coder:minimal \ + --destination ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} \ + --build-arg TARGET_ARCH=${{ matrix.target }} \ + --label org.opencontainers.image.source=https://github.com/inference-gateway/coder \ + --label org.opencontainers.image.description="The AI-Powered Coder" \ + --label org.opencontainers.image.licenses=MIT \ + --cache=true \ + --cache-repo ghcr.io/${{ github.repository_owner }}/coder/cache \ + --target minimal # build_containers_with_tools: # name: B&P Language specific Containers From a01a790fa3152e29cfd67075bd3ac01439ebd077 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 14:12:27 +0000 Subject: [PATCH 032/174] ci: Comment out temporarily the other runner, just to see if it works as expected Signed-off-by: Eden Reich --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6032e20..95cd681 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -229,12 +229,12 @@ jobs: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl arch_platform: linux/amd64 - - os: - - self-hosted - - k8s - - ubuntu-22.04-arm64 - target: aarch64-unknown-linux-musl - arch_platform: linux/arm64 + # - os: + # - self-hosted + # - k8s + # - ubuntu-22.04-arm64 + # target: aarch64-unknown-linux-musl + # arch_platform: linux/arm64 runs-on: ${{ matrix.os }} container: image: gcr.io/kaniko-project/executor:v1.23.2 From 2c622ef8618df360e81d7091b69523d5ad447140 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 14:15:27 +0000 Subject: [PATCH 033/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.11=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.11](https://github.com/inference-gateway/coder/compare/0.1.4-rc.10...0.1.4-rc.11) (2025-02-19) ### 👷 CI * Comment out temporarily the other runner, just to see if it works as expected ([a01a790](https://github.com/inference-gateway/coder/commit/a01a790fa3152e29cfd67075bd3ac01439ebd077)) * Update release workflow to use Kaniko for building and pushing OCI images ([6a2b930](https://github.com/inference-gateway/coder/commit/6a2b930918b30b353f552e63c75c8424d5e2cef6)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ac6728..9d6f6e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.11](https://github.com/inference-gateway/coder/compare/0.1.4-rc.10...0.1.4-rc.11) (2025-02-19) + +### 👷 CI + +* Comment out temporarily the other runner, just to see if it works as expected ([a01a790](https://github.com/inference-gateway/coder/commit/a01a790fa3152e29cfd67075bd3ac01439ebd077)) +* Update release workflow to use Kaniko for building and pushing OCI images ([6a2b930](https://github.com/inference-gateway/coder/commit/6a2b930918b30b353f552e63c75c8424d5e2cef6)) + ## [0.1.4-rc.10](https://github.com/inference-gateway/coder/compare/0.1.4-rc.9...0.1.4-rc.10) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index c9cf7f9..91b4385 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.10" +version = "0.1.4-rc.11" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index b77b767..50100e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.10" +version = "0.1.4-rc.11" edition = "2021" [dependencies] From af95d592f219eae690f065723f2e56f0a8039c5b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 14:16:59 +0000 Subject: [PATCH 034/174] chore: Resort dev containers dependencies Signed-off-by: Eden Reich --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 853c27a..5825fba 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,9 +6,9 @@ ENV ZSH_CUSTOM=/home/vscode/.oh-my-zsh/custom \ RUN apt-get update && \ # Install nodejs and npm curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ + apt-get install -y nodejs && \ # Install Task curl -s https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin ${TASK_VERSION} && \ - apt-get install -y nodejs && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* From 0a9787bbdb5f1bc3ff50ee071d791a2b9bd3cd21 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 14:24:54 +0000 Subject: [PATCH 035/174] ci: Update release workflow to use Kaniko action for building and pushing images Signed-off-by: Eden Reich --- .github/workflows/release.yml | 43 +++++++++++++++-------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 95cd681..8c429d5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -228,17 +228,12 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - arch_platform: linux/amd64 # - os: # - self-hosted # - k8s # - ubuntu-22.04-arm64 # target: aarch64-unknown-linux-musl - # arch_platform: linux/arm64 runs-on: ${{ matrix.os }} - container: - image: gcr.io/kaniko-project/executor:v1.23.2 - options: --platform=${{ matrix.arch_platform }} steps: - name: Checkout repository uses: actions/checkout@v4 @@ -251,26 +246,24 @@ jobs: echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - name: Configure GHCR auth - run: | - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"ghcr.io\":{\"auth\":\"$(echo -n "${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}" | base64)\"}}}" > /kaniko/.docker/config.json - - - name: Build and Push - run: | - /kaniko/executor \ - --context ${{ github.workspace }} \ - --dockerfile ${{ github.workspace }}/Dockerfile \ - --destination ghcr.io/${{ github.repository_owner }}/coder:latest \ - --destination ghcr.io/${{ github.repository_owner }}/coder:minimal \ - --destination ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} \ - --build-arg TARGET_ARCH=${{ matrix.target }} \ - --label org.opencontainers.image.source=https://github.com/inference-gateway/coder \ - --label org.opencontainers.image.description="The AI-Powered Coder" \ - --label org.opencontainers.image.licenses=MIT \ - --cache=true \ - --cache-repo ghcr.io/${{ github.repository_owner }}/coder/cache \ - --target minimal + - name: Build and push + uses: aevea/action-kaniko@master + with: + image: coder + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + build_args: TARGET_ARCH=${{ matrix.target }} + cache: true + cache_registry: ghcr.io/${{ github.repository_owner }}/coder/cache + extra_args: | + --target=minimal + --destination=ghcr.io/${{ github.repository_owner }}/coder:latest + --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal + --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} + --label=org.opencontainers.image.source=https://github.com/inference-gateway/coder + --label=org.opencontainers.image.description="The AI-Powered Coder" + --label=org.opencontainers.image.licenses=MIT # build_containers_with_tools: # name: B&P Language specific Containers From fd78e89af6bad0607ce02e961197a26a34d36d02 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 14:27:56 +0000 Subject: [PATCH 036/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.12=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.12](https://github.com/inference-gateway/coder/compare/0.1.4-rc.11...0.1.4-rc.12) (2025-02-19) ### 👷 CI * Update release workflow to use Kaniko action for building and pushing images ([0a9787b](https://github.com/inference-gateway/coder/commit/0a9787bbdb5f1bc3ff50ee071d791a2b9bd3cd21)) ### 🔧 Miscellaneous * Resort dev containers dependencies ([af95d59](https://github.com/inference-gateway/coder/commit/af95d592f219eae690f065723f2e56f0a8039c5b)) --- CHANGELOG.md | 10 ++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d6f6e3..46f8d8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.12](https://github.com/inference-gateway/coder/compare/0.1.4-rc.11...0.1.4-rc.12) (2025-02-19) + +### 👷 CI + +* Update release workflow to use Kaniko action for building and pushing images ([0a9787b](https://github.com/inference-gateway/coder/commit/0a9787bbdb5f1bc3ff50ee071d791a2b9bd3cd21)) + +### 🔧 Miscellaneous + +* Resort dev containers dependencies ([af95d59](https://github.com/inference-gateway/coder/commit/af95d592f219eae690f065723f2e56f0a8039c5b)) + ## [0.1.4-rc.11](https://github.com/inference-gateway/coder/compare/0.1.4-rc.10...0.1.4-rc.11) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 91b4385..94b6b8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.11" +version = "0.1.4-rc.12" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 50100e0..b5937e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.11" +version = "0.1.4-rc.12" edition = "2021" [dependencies] From 68eb13bf3ca6f05128585ac4ab4285404df64d17 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 14:59:41 +0000 Subject: [PATCH 037/174] chore: Add GitHub Actions extension to devcontainer configuration Signed-off-by: Eden Reich --- .devcontainer/devcontainer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d9d60a2..3b25bf8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,8 @@ "vadimcn.vscode-lldb", "tamasfe.even-better-toml", "streetsidesoftware.code-spell-checker", - "esbenp.prettier-vscode" + "esbenp.prettier-vscode", + "github.vscode-github-actions" ], "settings": { "terminal.integrated.defaultProfile.linux": "zsh", From b236b6757f17fb368e463deb4b394c2b55b94e3d Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 15:01:54 +0000 Subject: [PATCH 038/174] ci: Fix it was targeting the wrong architecture, the option build-args doesn't seems to be available in this Github Action Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8c429d5..c9f2a78 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -253,11 +253,11 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io - build_args: TARGET_ARCH=${{ matrix.target }} cache: true cache_registry: ghcr.io/${{ github.repository_owner }}/coder/cache extra_args: | --target=minimal + --build-arg TARGET_ARCH=${{ matrix.target }} --destination=ghcr.io/${{ github.repository_owner }}/coder:latest --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} From aa9b817bae453a9445e651ba825568eb3ea4c6fa Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 15:04:32 +0000 Subject: [PATCH 039/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.13=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.13](https://github.com/inference-gateway/coder/compare/0.1.4-rc.12...0.1.4-rc.13) (2025-02-19) ### 👷 CI * Fix it was targeting the wrong architecture, the option build-args doesn't seems to be available in this Github Action ([b236b67](https://github.com/inference-gateway/coder/commit/b236b6757f17fb368e463deb4b394c2b55b94e3d)) ### 🔧 Miscellaneous * Add GitHub Actions extension to devcontainer configuration ([68eb13b](https://github.com/inference-gateway/coder/commit/68eb13bf3ca6f05128585ac4ab4285404df64d17)) --- CHANGELOG.md | 10 ++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f8d8f..9de6f8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.13](https://github.com/inference-gateway/coder/compare/0.1.4-rc.12...0.1.4-rc.13) (2025-02-19) + +### 👷 CI + +* Fix it was targeting the wrong architecture, the option build-args doesn't seems to be available in this Github Action ([b236b67](https://github.com/inference-gateway/coder/commit/b236b6757f17fb368e463deb4b394c2b55b94e3d)) + +### 🔧 Miscellaneous + +* Add GitHub Actions extension to devcontainer configuration ([68eb13b](https://github.com/inference-gateway/coder/commit/68eb13bf3ca6f05128585ac4ab4285404df64d17)) + ## [0.1.4-rc.12](https://github.com/inference-gateway/coder/compare/0.1.4-rc.11...0.1.4-rc.12) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 94b6b8b..71e030c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.12" +version = "0.1.4-rc.13" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index b5937e8..62d6b10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.12" +version = "0.1.4-rc.13" edition = "2021" [dependencies] From 0dd8dbf095386cd2da1374af0e3e2b13348965b9 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 15:11:33 +0000 Subject: [PATCH 040/174] ci: Fix syntax for build-arg in release workflow Not sure why it doesn't picking it up correctly, last attempt - if it doesn't work will just use kaniko container image directly, because I can see the flag exists on version 1.23.2. Also disable default ARG value. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c9f2a78..882ff40 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -257,7 +257,7 @@ jobs: cache_registry: ghcr.io/${{ github.repository_owner }}/coder/cache extra_args: | --target=minimal - --build-arg TARGET_ARCH=${{ matrix.target }} + --build-arg=TARGET_ARCH=${{ matrix.target }} --destination=ghcr.io/${{ github.repository_owner }}/coder:latest --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} diff --git a/Dockerfile b/Dockerfile index f2cae31..7cfd757 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Possible args: -ARG TARGET_ARCH=aarch64-unknown-linux-musl +# ARG TARGET_ARCH=aarch64-unknown-linux-musl # ARG TARGET_ARCH=x86_64-unknown-linux-musl FROM rust:alpine3.21 AS build From aadd3b27c79f4a3a027dc18647ca8eee000edad5 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 15:15:47 +0000 Subject: [PATCH 041/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.14=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.14](https://github.com/inference-gateway/coder/compare/0.1.4-rc.13...0.1.4-rc.14) (2025-02-19) ### 👷 CI * Fix syntax for build-arg in release workflow ([0dd8dbf](https://github.com/inference-gateway/coder/commit/0dd8dbf095386cd2da1374af0e3e2b13348965b9)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9de6f8a..64061c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.14](https://github.com/inference-gateway/coder/compare/0.1.4-rc.13...0.1.4-rc.14) (2025-02-19) + +### 👷 CI + +* Fix syntax for build-arg in release workflow ([0dd8dbf](https://github.com/inference-gateway/coder/commit/0dd8dbf095386cd2da1374af0e3e2b13348965b9)) + ## [0.1.4-rc.13](https://github.com/inference-gateway/coder/compare/0.1.4-rc.12...0.1.4-rc.13) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 71e030c..99c6cc1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.13" +version = "0.1.4-rc.14" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 62d6b10..89a2c69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.13" +version = "0.1.4-rc.14" edition = "2021" [dependencies] From 829616fe0619a66f13b5dbeb7db5bf48d63373b3 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 15:29:43 +0000 Subject: [PATCH 042/174] ci: Update release workflow to use a different action also for kaniko, maybe this one is better maintained Signed-off-by: Eden Reich --- .github/workflows/release.yml | 41 ++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 882ff40..19dd885 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -246,24 +246,35 @@ jobs: echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - name: Build and push - uses: aevea/action-kaniko@master + - uses: docker/metadata-action@v5 + id: metadata + with: + images: ghcr.io/${{ github.repository }} + + - uses: docker/login-action@v3 with: - image: coder - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: int128/kaniko-action@v1 + with: + context: . + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/coder:latest + ghcr.io/${{ github.repository_owner }}/coder:minimal + ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} + target: minimal + build-args: | + TARGET_ARCH=${{ matrix.target }} + labels: | + org.opencontainers.image.source=https://github.com/inference-gateway/coder + org.opencontainers.image.description=The AI-Powered Coder + org.opencontainers.image.licenses=MIT cache: true - cache_registry: ghcr.io/${{ github.repository_owner }}/coder/cache - extra_args: | - --target=minimal - --build-arg=TARGET_ARCH=${{ matrix.target }} - --destination=ghcr.io/${{ github.repository_owner }}/coder:latest - --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal - --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} - --label=org.opencontainers.image.source=https://github.com/inference-gateway/coder - --label=org.opencontainers.image.description="The AI-Powered Coder" - --label=org.opencontainers.image.licenses=MIT + cache-repository: ghcr.io/${{ github.repository_owner }}/coder/cache # build_containers_with_tools: # name: B&P Language specific Containers From 730b936623ea84b118b05f489a82b9259d4ac69e Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 15:32:40 +0000 Subject: [PATCH 043/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.15=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.15](https://github.com/inference-gateway/coder/compare/0.1.4-rc.14...0.1.4-rc.15) (2025-02-19) ### 👷 CI * Update release workflow to use a different action also for kaniko, maybe this one is better maintained ([829616f](https://github.com/inference-gateway/coder/commit/829616fe0619a66f13b5dbeb7db5bf48d63373b3)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64061c7..30253b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.15](https://github.com/inference-gateway/coder/compare/0.1.4-rc.14...0.1.4-rc.15) (2025-02-19) + +### 👷 CI + +* Update release workflow to use a different action also for kaniko, maybe this one is better maintained ([829616f](https://github.com/inference-gateway/coder/commit/829616fe0619a66f13b5dbeb7db5bf48d63373b3)) + ## [0.1.4-rc.14](https://github.com/inference-gateway/coder/compare/0.1.4-rc.13...0.1.4-rc.14) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 99c6cc1..39f6433 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.14" +version = "0.1.4-rc.15" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 89a2c69..01fef9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.14" +version = "0.1.4-rc.15" edition = "2021" [dependencies] From 1c2415fca8ce03b30b1cbf2909147839fdd0f417 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 15:39:59 +0000 Subject: [PATCH 044/174] chore(cleanup): Cleanup, those labels are redundant because they now fetched from action metadata directly from github repo Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19dd885..5afa882 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -246,12 +246,14 @@ jobs: echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - uses: docker/metadata-action@v5 + - name: Fetch metadata for container build + uses: docker/metadata-action@v5 id: metadata with: images: ghcr.io/${{ github.repository }} - - uses: docker/login-action@v3 + - name: Authenticate with GHCR + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} @@ -269,10 +271,6 @@ jobs: target: minimal build-args: | TARGET_ARCH=${{ matrix.target }} - labels: | - org.opencontainers.image.source=https://github.com/inference-gateway/coder - org.opencontainers.image.description=The AI-Powered Coder - org.opencontainers.image.licenses=MIT cache: true cache-repository: ghcr.io/${{ github.repository_owner }}/coder/cache From ac38ae3e1cfe8e903be8da82e88599cf38d86dea Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 15:45:07 +0000 Subject: [PATCH 045/174] ci: Test the same job in Kubernetes Will remove dind side-car setup and use Action Controller Runner mode kubernetes Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5afa882..b06508c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -228,11 +228,11 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - # - os: - # - self-hosted - # - k8s - # - ubuntu-22.04-arm64 - # target: aarch64-unknown-linux-musl + - os: + - self-hosted + - k8s + - ubuntu-22.04-arm64 + target: aarch64-unknown-linux-musl runs-on: ${{ matrix.os }} steps: - name: Checkout repository From 4c8d93bf151925bb1e263d4c5c125f4046430fd3 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 15:56:02 +0000 Subject: [PATCH 046/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.16=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.16](https://github.com/inference-gateway/coder/compare/0.1.4-rc.15...0.1.4-rc.16) (2025-02-19) ### 👷 CI * Test the same job in Kubernetes ([ac38ae3](https://github.com/inference-gateway/coder/commit/ac38ae3e1cfe8e903be8da82e88599cf38d86dea)) ### 🔧 Miscellaneous * **cleanup:** Cleanup, those labels are redundant because they now fetched from action metadata directly from github repo ([1c2415f](https://github.com/inference-gateway/coder/commit/1c2415fca8ce03b30b1cbf2909147839fdd0f417)) --- CHANGELOG.md | 10 ++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30253b0..e4bc8a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.16](https://github.com/inference-gateway/coder/compare/0.1.4-rc.15...0.1.4-rc.16) (2025-02-19) + +### 👷 CI + +* Test the same job in Kubernetes ([ac38ae3](https://github.com/inference-gateway/coder/commit/ac38ae3e1cfe8e903be8da82e88599cf38d86dea)) + +### 🔧 Miscellaneous + +* **cleanup:** Cleanup, those labels are redundant because they now fetched from action metadata directly from github repo ([1c2415f](https://github.com/inference-gateway/coder/commit/1c2415fca8ce03b30b1cbf2909147839fdd0f417)) + ## [0.1.4-rc.15](https://github.com/inference-gateway/coder/compare/0.1.4-rc.14...0.1.4-rc.15) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 39f6433..9b7e7cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.15" +version = "0.1.4-rc.16" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 01fef9c..ded1d3f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.15" +version = "0.1.4-rc.16" edition = "2021" [dependencies] From 20ffe2257497873935f8e685515cb0ec54f869dd Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 16:06:30 +0000 Subject: [PATCH 047/174] ci: Update release workflow to use Ubuntu 24.04 container and adjust matrix configuration Signed-off-by: Eden Reich --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b06508c..acc5419 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -226,13 +226,13 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-24.04 - target: x86_64-unknown-linux-musl + # - os: ubuntu-24.04 + # target: x86_64-unknown-linux-musl - os: - self-hosted - k8s - - ubuntu-22.04-arm64 target: aarch64-unknown-linux-musl + container: ubuntu-24.04 runs-on: ${{ matrix.os }} steps: - name: Checkout repository From 203fe0748330dad8da242787ed6db9a2b87a175c Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 16:10:22 +0000 Subject: [PATCH 048/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.17=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.17](https://github.com/inference-gateway/coder/compare/0.1.4-rc.16...0.1.4-rc.17) (2025-02-19) ### 👷 CI * Update release workflow to use Ubuntu 24.04 container and adjust matrix configuration ([20ffe22](https://github.com/inference-gateway/coder/commit/20ffe2257497873935f8e685515cb0ec54f869dd)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4bc8a0..8f4e187 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.17](https://github.com/inference-gateway/coder/compare/0.1.4-rc.16...0.1.4-rc.17) (2025-02-19) + +### 👷 CI + +* Update release workflow to use Ubuntu 24.04 container and adjust matrix configuration ([20ffe22](https://github.com/inference-gateway/coder/commit/20ffe2257497873935f8e685515cb0ec54f869dd)) + ## [0.1.4-rc.16](https://github.com/inference-gateway/coder/compare/0.1.4-rc.15...0.1.4-rc.16) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 9b7e7cf..c2f319e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.16" +version = "0.1.4-rc.17" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index ded1d3f..1224d96 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.16" +version = "0.1.4-rc.17" edition = "2021" [dependencies] From 5c448376d45b35f080345c5ac26dcafc665aa407 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 16:28:12 +0000 Subject: [PATCH 049/174] ci: Small fix - update container syntax in release workflow to use proper image format Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acc5419..4e4e6d9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -232,7 +232,7 @@ jobs: - self-hosted - k8s target: aarch64-unknown-linux-musl - container: ubuntu-24.04 + container: ubuntu:24.04 runs-on: ${{ matrix.os }} steps: - name: Checkout repository From 158c14e4bf74f1e34d53973e70addcb74a9cb6b8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 16:31:09 +0000 Subject: [PATCH 050/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.18=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.18](https://github.com/inference-gateway/coder/compare/0.1.4-rc.17...0.1.4-rc.18) (2025-02-19) ### 👷 CI * Small fix - update container syntax in release workflow to use proper image format ([5c44837](https://github.com/inference-gateway/coder/commit/5c448376d45b35f080345c5ac26dcafc665aa407)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f4e187..688b5cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.18](https://github.com/inference-gateway/coder/compare/0.1.4-rc.17...0.1.4-rc.18) (2025-02-19) + +### 👷 CI + +* Small fix - update container syntax in release workflow to use proper image format ([5c44837](https://github.com/inference-gateway/coder/commit/5c448376d45b35f080345c5ac26dcafc665aa407)) + ## [0.1.4-rc.17](https://github.com/inference-gateway/coder/compare/0.1.4-rc.16...0.1.4-rc.17) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index c2f319e..3b96669 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.17" +version = "0.1.4-rc.18" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 1224d96..ea267dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.17" +version = "0.1.4-rc.18" edition = "2021" [dependencies] From 1a1ee029516eefdda4b6d39d233483b9b4df0d56 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 17:27:48 +0000 Subject: [PATCH 051/174] ci: Reduce the reliance on docker Signed-off-by: Eden Reich --- .github/workflows/release.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4e4e6d9..b8a64e1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -232,7 +232,8 @@ jobs: - self-hosted - k8s target: aarch64-unknown-linux-musl - container: ubuntu:24.04 + container: + image: ubuntu:24.04 runs-on: ${{ matrix.os }} steps: - name: Checkout repository @@ -253,11 +254,17 @@ jobs: images: ghcr.io/${{ github.repository }} - name: Authenticate with GHCR - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + run: | + mkdir -p /kaniko/.docker + cat << EOF > /kaniko/.docker/config.json + { + "auths": { + "ghcr.io": { + "auth": "$(echo -n ${{ github.actor }}:${{ secrets.GITHUB_TOKEN }} | base64)" + } + } + } + EOF - name: Build and push uses: int128/kaniko-action@v1 From f868e16b71577e285cc7dc3e4f910fa28c989b2b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 17:30:52 +0000 Subject: [PATCH 052/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.19=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.19](https://github.com/inference-gateway/coder/compare/0.1.4-rc.18...0.1.4-rc.19) (2025-02-19) ### 👷 CI * Reduce the reliance on docker ([1a1ee02](https://github.com/inference-gateway/coder/commit/1a1ee029516eefdda4b6d39d233483b9b4df0d56)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 688b5cd..f307bf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.19](https://github.com/inference-gateway/coder/compare/0.1.4-rc.18...0.1.4-rc.19) (2025-02-19) + +### 👷 CI + +* Reduce the reliance on docker ([1a1ee02](https://github.com/inference-gateway/coder/commit/1a1ee029516eefdda4b6d39d233483b9b4df0d56)) + ## [0.1.4-rc.18](https://github.com/inference-gateway/coder/compare/0.1.4-rc.17...0.1.4-rc.18) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 3b96669..760dda9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.18" +version = "0.1.4-rc.19" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index ea267dc..4a98122 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.18" +version = "0.1.4-rc.19" edition = "2021" [dependencies] From d10ac77fb4f62e04cfcda03aa98b69bea71bbf01 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 17:33:32 +0000 Subject: [PATCH 053/174] ci: Update container image in release workflow to use Kaniko executor Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b8a64e1..0b3ee2b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: - k8s target: aarch64-unknown-linux-musl container: - image: ubuntu:24.04 + image: gcr.io/kaniko-project/executor:v1.23.2 runs-on: ${{ matrix.os }} steps: - name: Checkout repository From 68e64745475a57fa85e44699470a1ea7b1310086 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 17:44:27 +0000 Subject: [PATCH 054/174] ci: Use directly the container image kaniko and execute the kaniko binary to build an OCI and push it to the container registry Signed-off-by: Eden Reich --- .github/workflows/release.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b3ee2b..dc86207 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -234,6 +234,7 @@ jobs: target: aarch64-unknown-linux-musl container: image: gcr.io/kaniko-project/executor:v1.23.2 + options: --entrypoint="" runs-on: ${{ matrix.os }} steps: - name: Checkout repository @@ -267,19 +268,18 @@ jobs: EOF - name: Build and push - uses: int128/kaniko-action@v1 - with: - context: . - push: true - tags: | - ghcr.io/${{ github.repository_owner }}/coder:latest - ghcr.io/${{ github.repository_owner }}/coder:minimal - ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} - target: minimal - build-args: | - TARGET_ARCH=${{ matrix.target }} - cache: true - cache-repository: ghcr.io/${{ github.repository_owner }}/coder/cache + run: | + /kaniko/executor \ + --context="${{ github.workspace }}" \ + --dockerfile="${{ github.workspace }}/Dockerfile" \ + --target=minimal \ + --destination=ghcr.io/${{ github.repository_owner }}/coder:latest \ + --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal \ + --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} \ + --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --cache=true \ + --cache-repo=ghcr.io/${{ github.repository_owner }}/coder/cache \ + --verbosity=info # build_containers_with_tools: # name: B&P Language specific Containers From 79bb65124d7218ed2fd5b8e7dc8019f9cef2eba8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 17:54:21 +0000 Subject: [PATCH 055/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.20=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.20](https://github.com/inference-gateway/coder/compare/0.1.4-rc.19...0.1.4-rc.20) (2025-02-19) ### 👷 CI * Update container image in release workflow to use Kaniko executor ([d10ac77](https://github.com/inference-gateway/coder/commit/d10ac77fb4f62e04cfcda03aa98b69bea71bbf01)) * Use directly the container image kaniko and execute the kaniko binary to build an OCI and push it to the container registry ([68e6474](https://github.com/inference-gateway/coder/commit/68e64745475a57fa85e44699470a1ea7b1310086)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f307bf0..7c58f56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.20](https://github.com/inference-gateway/coder/compare/0.1.4-rc.19...0.1.4-rc.20) (2025-02-19) + +### 👷 CI + +* Update container image in release workflow to use Kaniko executor ([d10ac77](https://github.com/inference-gateway/coder/commit/d10ac77fb4f62e04cfcda03aa98b69bea71bbf01)) +* Use directly the container image kaniko and execute the kaniko binary to build an OCI and push it to the container registry ([68e6474](https://github.com/inference-gateway/coder/commit/68e64745475a57fa85e44699470a1ea7b1310086)) + ## [0.1.4-rc.19](https://github.com/inference-gateway/coder/compare/0.1.4-rc.18...0.1.4-rc.19) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 760dda9..4a65eba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.19" +version = "0.1.4-rc.20" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 4a98122..68b5e78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.19" +version = "0.1.4-rc.20" edition = "2021" [dependencies] From fee3e2db285a48f3deb87ee3a46ef36726ca2daf Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 18:02:35 +0000 Subject: [PATCH 056/174] ci: Update Kaniko executor image to use debug version for troubleshooting Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dc86207..3f14358 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: - k8s target: aarch64-unknown-linux-musl container: - image: gcr.io/kaniko-project/executor:v1.23.2 + image: gcr.io/kaniko-project/executor:v1.23.2-debug options: --entrypoint="" runs-on: ${{ matrix.os }} steps: From 5028cffb5049826ef1a873297a80c166e614ae73 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 18:05:13 +0000 Subject: [PATCH 057/174] ci: Remove explicit verbosity, use default Signed-off-by: Eden Reich --- .github/workflows/release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3f14358..b375ad7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -278,8 +278,7 @@ jobs: --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ --cache=true \ - --cache-repo=ghcr.io/${{ github.repository_owner }}/coder/cache \ - --verbosity=info + --cache-repo=ghcr.io/${{ github.repository_owner }}/coder/cache # build_containers_with_tools: # name: B&P Language specific Containers From 74ad5f830e3185fcb4ee9baf751db9a441cf8a91 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 18:07:51 +0000 Subject: [PATCH 058/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.21=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.21](https://github.com/inference-gateway/coder/compare/0.1.4-rc.20...0.1.4-rc.21) (2025-02-19) ### 👷 CI * Remove explicit verbosity, use default ([5028cff](https://github.com/inference-gateway/coder/commit/5028cffb5049826ef1a873297a80c166e614ae73)) * Update Kaniko executor image to use debug version for troubleshooting ([fee3e2d](https://github.com/inference-gateway/coder/commit/fee3e2db285a48f3deb87ee3a46ef36726ca2daf)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c58f56..9e432aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.21](https://github.com/inference-gateway/coder/compare/0.1.4-rc.20...0.1.4-rc.21) (2025-02-19) + +### 👷 CI + +* Remove explicit verbosity, use default ([5028cff](https://github.com/inference-gateway/coder/commit/5028cffb5049826ef1a873297a80c166e614ae73)) +* Update Kaniko executor image to use debug version for troubleshooting ([fee3e2d](https://github.com/inference-gateway/coder/commit/fee3e2db285a48f3deb87ee3a46ef36726ca2daf)) + ## [0.1.4-rc.20](https://github.com/inference-gateway/coder/compare/0.1.4-rc.19...0.1.4-rc.20) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 4a65eba..454a3fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.20" +version = "0.1.4-rc.21" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 68b5e78..c4d9fb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.20" +version = "0.1.4-rc.21" edition = "2021" [dependencies] From 7e653852461f7de06485efb3d28a6cb8f7fd5b86 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 19:07:38 +0000 Subject: [PATCH 059/174] ci: Test something - kaniko suppose to fetch the repo and build Signed-off-by: Eden Reich --- .github/workflows/release.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b375ad7..f429317 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -237,22 +237,22 @@ jobs: options: --entrypoint="" runs-on: ${{ matrix.os }} steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - ref: ${{ github.ref }} - persist-credentials: false - - - name: Update Cargo.toml version - run: | - echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - - name: Fetch metadata for container build - uses: docker/metadata-action@v5 - id: metadata - with: - images: ghcr.io/${{ github.repository }} + # - name: Checkout repository + # uses: actions/checkout@v4 + # with: + # ref: ${{ github.ref }} + # persist-credentials: false + + # - name: Update Cargo.toml version + # run: | + # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" + # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + + # - name: Fetch metadata for container build + # uses: docker/metadata-action@v5 + # id: metadata + # with: + # images: ghcr.io/${{ github.repository }} - name: Authenticate with GHCR run: | @@ -270,7 +270,7 @@ jobs: - name: Build and push run: | /kaniko/executor \ - --context="${{ github.workspace }}" \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}#${{ github.sha }}" \ --dockerfile="${{ github.workspace }}/Dockerfile" \ --target=minimal \ --destination=ghcr.io/${{ github.repository_owner }}/coder:latest \ From af697e03b7e8ea7d56fc827ede7d07eba79e3635 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 19:10:20 +0000 Subject: [PATCH 060/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.22=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.22](https://github.com/inference-gateway/coder/compare/0.1.4-rc.21...0.1.4-rc.22) (2025-02-19) ### 👷 CI * Test something - kaniko suppose to fetch the repo and build ([7e65385](https://github.com/inference-gateway/coder/commit/7e653852461f7de06485efb3d28a6cb8f7fd5b86)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e432aa..dc88923 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.22](https://github.com/inference-gateway/coder/compare/0.1.4-rc.21...0.1.4-rc.22) (2025-02-19) + +### 👷 CI + +* Test something - kaniko suppose to fetch the repo and build ([7e65385](https://github.com/inference-gateway/coder/commit/7e653852461f7de06485efb3d28a6cb8f7fd5b86)) + ## [0.1.4-rc.21](https://github.com/inference-gateway/coder/compare/0.1.4-rc.20...0.1.4-rc.21) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 454a3fb..fc47bf3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.21" +version = "0.1.4-rc.22" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index c4d9fb7..c7f2bcd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.21" +version = "0.1.4-rc.22" edition = "2021" [dependencies] From 9739fc2773a34e3279ff71c0cd1ea8a1247df610 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 19:13:06 +0000 Subject: [PATCH 061/174] ci: Simplify Dockerfile path in Kaniko executor configuration - it's at the root of the repo Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f429317..b00d827 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -271,7 +271,7 @@ jobs: run: | /kaniko/executor \ --context="${{ github.repositoryUrl }}#${{ github.ref }}#${{ github.sha }}" \ - --dockerfile="${{ github.workspace }}/Dockerfile" \ + --dockerfile=Dockerfile \ --target=minimal \ --destination=ghcr.io/${{ github.repository_owner }}/coder:latest \ --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal \ From 06b4b125dfdde8fa06c9f33dff4ecffc1d2e1a65 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 19:15:57 +0000 Subject: [PATCH 062/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.23=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.23](https://github.com/inference-gateway/coder/compare/0.1.4-rc.22...0.1.4-rc.23) (2025-02-19) ### 👷 CI * Simplify Dockerfile path in Kaniko executor configuration - it's at the root of the repo ([9739fc2](https://github.com/inference-gateway/coder/commit/9739fc2773a34e3279ff71c0cd1ea8a1247df610)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc88923..958f7c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.23](https://github.com/inference-gateway/coder/compare/0.1.4-rc.22...0.1.4-rc.23) (2025-02-19) + +### 👷 CI + +* Simplify Dockerfile path in Kaniko executor configuration - it's at the root of the repo ([9739fc2](https://github.com/inference-gateway/coder/commit/9739fc2773a34e3279ff71c0cd1ea8a1247df610)) + ## [0.1.4-rc.22](https://github.com/inference-gateway/coder/compare/0.1.4-rc.21...0.1.4-rc.22) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index fc47bf3..5bd8491 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.22" +version = "0.1.4-rc.23" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index c7f2bcd..93b1ddc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.22" +version = "0.1.4-rc.23" edition = "2021" [dependencies] From 9d5060645016547e9019097341e5634661c41a54 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 19:28:26 +0000 Subject: [PATCH 063/174] ci: Clean up release workflow by removing commented-out steps and simplifying context for Kaniko build - always take the latest of the ref This way the update of the Cargo.toml after the release was cut will also be considered. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b00d827..a739902 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -237,23 +237,6 @@ jobs: options: --entrypoint="" runs-on: ${{ matrix.os }} steps: - # - name: Checkout repository - # uses: actions/checkout@v4 - # with: - # ref: ${{ github.ref }} - # persist-credentials: false - - # - name: Update Cargo.toml version - # run: | - # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - - # - name: Fetch metadata for container build - # uses: docker/metadata-action@v5 - # id: metadata - # with: - # images: ghcr.io/${{ github.repository }} - - name: Authenticate with GHCR run: | mkdir -p /kaniko/.docker @@ -270,7 +253,7 @@ jobs: - name: Build and push run: | /kaniko/executor \ - --context="${{ github.repositoryUrl }}#${{ github.ref }}#${{ github.sha }}" \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile \ --target=minimal \ --destination=ghcr.io/${{ github.repository_owner }}/coder:latest \ From c3c5296cdba356ef8661fe072d34811fc0946337 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 20:34:36 +0000 Subject: [PATCH 064/174] ci: Refactor Kaniko build step and Dockerfile for improved environment variable usage and caching Signed-off-by: Eden Reich --- .github/workflows/release.yml | 13 +++++++++---- Dockerfile | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a739902..91bf88a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -251,17 +251,22 @@ jobs: EOF - name: Build and push + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} run: | /kaniko/executor \ --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile \ --target=minimal \ - --destination=ghcr.io/${{ github.repository_owner }}/coder:latest \ - --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal \ - --destination=ghcr.io/${{ github.repository_owner }}/coder:minimal-${{ needs.github_release.outputs.new_release_version }} \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:latest \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:minimal \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ --cache=true \ - --cache-repo=ghcr.io/${{ github.repository_owner }}/coder/cache + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}/cache # build_containers_with_tools: # name: B&P Language specific Containers diff --git a/Dockerfile b/Dockerfile index 7cfd757..7fefcd7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,12 +26,22 @@ RUN apk add --no-cache \ /tmp/* \ /var/tmp/* +# Setup rust target WORKDIR /app +RUN rustup target add ${TARGET_ARCH} +# Cache dependencies COPY Cargo.toml Cargo.lock ./ -COPY . . +COPY src ./src +RUN cargo build --release --no-default-features --target ${TARGET_ARCH} && \ + rm -rf target/${TARGET_ARCH}/release/.fingerprint/coder-* \ + target/${TARGET_ARCH}/release/deps/coder-* \ + target/${TARGET_ARCH}/release/coder* -RUN rustup target add ${TARGET_ARCH} && \ +# Build the actual binary +COPY . . +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ cargo build --release --no-default-features --target ${TARGET_ARCH} FROM alpine:3.21.3 AS common From 64511c7f38c45c78602e4b8d5b5f29a4417e1520 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 20:39:04 +0000 Subject: [PATCH 065/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.24=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.24](https://github.com/inference-gateway/coder/compare/0.1.4-rc.23...0.1.4-rc.24) (2025-02-19) ### 👷 CI * Clean up release workflow by removing commented-out steps and simplifying context for Kaniko build - always take the latest of the ref ([9d50606](https://github.com/inference-gateway/coder/commit/9d5060645016547e9019097341e5634661c41a54)) * Refactor Kaniko build step and Dockerfile for improved environment variable usage and caching ([c3c5296](https://github.com/inference-gateway/coder/commit/c3c5296cdba356ef8661fe072d34811fc0946337)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 958f7c7..ce5a3cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.24](https://github.com/inference-gateway/coder/compare/0.1.4-rc.23...0.1.4-rc.24) (2025-02-19) + +### 👷 CI + +* Clean up release workflow by removing commented-out steps and simplifying context for Kaniko build - always take the latest of the ref ([9d50606](https://github.com/inference-gateway/coder/commit/9d5060645016547e9019097341e5634661c41a54)) +* Refactor Kaniko build step and Dockerfile for improved environment variable usage and caching ([c3c5296](https://github.com/inference-gateway/coder/commit/c3c5296cdba356ef8661fe072d34811fc0946337)) + ## [0.1.4-rc.23](https://github.com/inference-gateway/coder/compare/0.1.4-rc.22...0.1.4-rc.23) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 5bd8491..52882b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.23" +version = "0.1.4-rc.24" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 93b1ddc..72d5568 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.23" +version = "0.1.4-rc.24" edition = "2021" [dependencies] From 420e3e4108ac73a06da79a15edc17e2630b2fabe Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 19 Feb 2025 20:42:34 +0000 Subject: [PATCH 066/174] ci: Small fix - forgot the $ sign Signed-off-by: Eden Reich --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91bf88a..eaa5a3a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -261,12 +261,12 @@ jobs: --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile \ --target=minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:latest \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/{{ env.REPOSITORY_NAME }}/cache + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache # build_containers_with_tools: # name: B&P Language specific Containers From 7ed3b5f63811c8b0647873607ee21d1ace7d294d Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 19 Feb 2025 20:45:12 +0000 Subject: [PATCH 067/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.25=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.25](https://github.com/inference-gateway/coder/compare/0.1.4-rc.24...0.1.4-rc.25) (2025-02-19) ### 👷 CI * Small fix - forgot the $ sign ([420e3e4](https://github.com/inference-gateway/coder/commit/420e3e4108ac73a06da79a15edc17e2630b2fabe)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce5a3cc..ee56380 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.25](https://github.com/inference-gateway/coder/compare/0.1.4-rc.24...0.1.4-rc.25) (2025-02-19) + +### 👷 CI + +* Small fix - forgot the $ sign ([420e3e4](https://github.com/inference-gateway/coder/commit/420e3e4108ac73a06da79a15edc17e2630b2fabe)) + ## [0.1.4-rc.24](https://github.com/inference-gateway/coder/compare/0.1.4-rc.23...0.1.4-rc.24) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 52882b0..4482755 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.24" +version = "0.1.4-rc.25" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 72d5568..adc6599 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.24" +version = "0.1.4-rc.25" edition = "2021" [dependencies] From 30f17d185266c91a0fbe44926a78c2fc37067bb2 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:44:10 +0000 Subject: [PATCH 068/174] ci: Refactor Dockerfile to optimize build process with cargo-chef and add Python based coder environment Signed-off-by: Eden Reich --- Dockerfile | 68 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7fefcd7..7a8eee2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,16 @@ # ARG TARGET_ARCH=aarch64-unknown-linux-musl # ARG TARGET_ARCH=x86_64-unknown-linux-musl -FROM rust:alpine3.21 AS build +FROM rust:alpine3.21 AS chef +RUN apk --no-cache add musl-dev && \ + cargo install cargo-chef +WORKDIR /app + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder ARG TARGET_ARCH ENV CC=clang \ AR=llvm-ar \ @@ -26,25 +35,23 @@ RUN apk add --no-cache \ /tmp/* \ /var/tmp/* -# Setup rust target -WORKDIR /app +# First build dependencies +COPY --from=planner /app/recipe.json recipe.json RUN rustup target add ${TARGET_ARCH} +RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json -# Cache dependencies -COPY Cargo.toml Cargo.lock ./ -COPY src ./src -RUN cargo build --release --no-default-features --target ${TARGET_ARCH} && \ - rm -rf target/${TARGET_ARCH}/release/.fingerprint/coder-* \ - target/${TARGET_ARCH}/release/deps/coder-* \ - target/${TARGET_ARCH}/release/coder* - -# Build the actual binary +# Then build application COPY . . -RUN --mount=type=cache,target=/root/.cargo/registry \ - --mount=type=cache,target=/root/.cargo/git \ - cargo build --release --no-default-features --target ${TARGET_ARCH} +RUN cargo build --release --target ${TARGET_ARCH} + +FROM gcr.io/distroless/static:nonroot AS minimal +ARG TARGET_ARCH +COPY --from=builder /app/target/${TARGET_ARCH}/release/coder /coder +USER nonroot:nonroot +ENTRYPOINT [ "/coder" ] -FROM alpine:3.21.3 AS common +FROM alpine:3.21.3 AS coder +ARG TARGET_ARCH RUN apk add --no-cache \ ca-certificates \ git \ @@ -56,9 +63,9 @@ RUN apk add --no-cache \ /var/cache/apk/* \ /tmp/* \ /var/tmp/* +COPY --from=builder --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder -FROM common AS rust -ARG TARGET_ARCH +FROM coder AS rust ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUSTUP_HOME="/home/coder/.rustup" \ CARGO_HOME="/home/coder/.cargo" @@ -71,13 +78,26 @@ RUN apk add --no-cache \ --target ${TARGET_ARCH} \ --component rustfmt clippy \ && chown -R coder:coder /home/coder/.cargo /home/coder/.rustup -COPY --from=build --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder USER coder WORKDIR /home/coder ENTRYPOINT [ "coder" ] -FROM gcr.io/distroless/static:nonroot AS minimal -ARG TARGET_ARCH -COPY --from=build /app/target/${TARGET_ARCH}/release/coder /coder -USER nonroot:nonroot -ENTRYPOINT [ "/coder" ] \ No newline at end of file +FROM coder AS python +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 +RUN apk add --no-cache \ + python3 \ + py3-pip \ + py3-flake8 \ + py3-pytest \ + py3-mypy \ + py3-isort \ + py3-pylint \ + py3-setuptools \ + py3-wheel \ + && pip install --no-cache-dir --break-system-packages \ + black \ + && rm -rf /var/cache/apk/* /tmp/* /var/tmp/* +USER coder +WORKDIR /home/coder +ENTRYPOINT [ "coder" ] \ No newline at end of file From 20d85bad1101577ea463347a210f81104ae89575 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:44:46 +0000 Subject: [PATCH 069/174] chore: Ensure proper newline at end of Dockerfile for consistency Signed-off-by: Eden Reich --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7a8eee2..a3c9020 100644 --- a/Dockerfile +++ b/Dockerfile @@ -100,4 +100,4 @@ RUN apk add --no-cache \ && rm -rf /var/cache/apk/* /tmp/* /var/tmp/* USER coder WORKDIR /home/coder -ENTRYPOINT [ "coder" ] \ No newline at end of file +ENTRYPOINT [ "coder" ] From aa5bf99dd500a411c0acb71de34ccd186b9c5801 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:51:14 +0000 Subject: [PATCH 070/174] chore(dockerfile): Format Dockerfile for improved readability and consistency Signed-off-by: Eden Reich --- Dockerfile | 87 +++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/Dockerfile b/Dockerfile index a3c9020..3dccaf9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,18 +22,18 @@ ENV CC=clang \ PKG_CONFIG_ALLOW_CROSS=1 RUN apk add --no-cache \ - make \ - perl \ - file \ - musl-dev \ - clang \ - llvm \ - openssl-dev \ - pkgconfig \ - && rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* + make \ + perl \ + file \ + musl-dev \ + clang \ + llvm \ + openssl-dev \ + pkgconfig && \ + rm -rf \ + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* # First build dependencies COPY --from=planner /app/recipe.json recipe.json @@ -53,16 +53,16 @@ ENTRYPOINT [ "/coder" ] FROM alpine:3.21.3 AS coder ARG TARGET_ARCH RUN apk add --no-cache \ - ca-certificates \ - git \ - curl \ - libgcc \ - && addgroup -S -g 1001 coder \ - && adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder \ - && rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* + ca-certificates \ + git \ + curl \ + libgcc && \ + addgroup -S -g 1001 coder && \ + adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder && \ + rm -rf \ + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* COPY --from=builder --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder FROM coder AS rust @@ -70,14 +70,16 @@ ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUSTUP_HOME="/home/coder/.rustup" \ CARGO_HOME="/home/coder/.cargo" RUN apk add --no-cache \ - rustup && \ + rustup && \ rustup-init -y \ - --no-modify-path \ - --profile minimal \ - --default-toolchain stable \ - --target ${TARGET_ARCH} \ - --component rustfmt clippy \ - && chown -R coder:coder /home/coder/.cargo /home/coder/.rustup + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} \ + --component rustfmt clippy && \ + chown -R coder:coder \ + /home/coder/.cargo \ + /home/coder/.rustup USER coder WORKDIR /home/coder ENTRYPOINT [ "coder" ] @@ -86,18 +88,21 @@ FROM coder AS python ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 RUN apk add --no-cache \ - python3 \ - py3-pip \ - py3-flake8 \ - py3-pytest \ - py3-mypy \ - py3-isort \ - py3-pylint \ - py3-setuptools \ - py3-wheel \ - && pip install --no-cache-dir --break-system-packages \ - black \ - && rm -rf /var/cache/apk/* /tmp/* /var/tmp/* + python3 \ + py3-pip \ + py3-flake8 \ + py3-pytest \ + py3-mypy \ + py3-isort \ + py3-pylint \ + py3-setuptools \ + py3-wheel && \ + pip install --no-cache-dir --break-system-packages \ + black && \ + rm -rf \ + /var/cache/apk/* \ + /tmp/* \ + /var/tmp/* USER coder WORKDIR /home/coder ENTRYPOINT [ "coder" ] From 206598bf22bfecf68dfb74971ab4c724e99a81a1 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:51:46 +0000 Subject: [PATCH 071/174] ci: Enable Ubuntu 24.04 with x86_64 target in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eaa5a3a..ee18a14 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -226,8 +226,8 @@ jobs: fail-fast: false matrix: include: - # - os: ubuntu-24.04 - # target: x86_64-unknown-linux-musl + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl - os: - self-hosted - k8s From ff6cb5268920bfc08bc2142cc742eb77e2dd3a44 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:55:48 +0000 Subject: [PATCH 072/174] ci: Add metadata fetching step for container build in release workflow That might still work if it's not relying on docker, otherwise will need to add the labels manually. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ee18a14..18974a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,6 +250,12 @@ jobs: } EOF + - name: Fetch metadata for container build + uses: docker/metadata-action@v5 + id: metadata + with: + images: ghcr.io/${{ github.repository }} + - name: Build and push env: REPOSITORY_NAME: coder From ada0abd2a1c6eaf3d9ba76b51f4ba57415b20ee9 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:56:39 +0000 Subject: [PATCH 073/174] ci: Increase timeout for B&P Containers job in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18974a9..f5018a1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,7 +219,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 30 + timeout-minutes: 35 permissions: packages: write strategy: From 6dc165ccdd03879c676738d7199710a88b792ba5 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 00:57:10 +0000 Subject: [PATCH 074/174] ci: Update Kaniko executor image to v1.23.2 in release workflow, remove debug Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5018a1..7e6b359 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: - k8s target: aarch64-unknown-linux-musl container: - image: gcr.io/kaniko-project/executor:v1.23.2-debug + image: gcr.io/kaniko-project/executor:v1.23.2 options: --entrypoint="" runs-on: ${{ matrix.os }} steps: From 93c1a8c0daca42a38b2a85f0def1546ffccfd64e Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 20 Feb 2025 01:00:25 +0000 Subject: [PATCH 075/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.26=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.26](https://github.com/inference-gateway/coder/compare/0.1.4-rc.25...0.1.4-rc.26) (2025-02-20) ### 👷 CI * Add metadata fetching step for container build in release workflow ([ff6cb52](https://github.com/inference-gateway/coder/commit/ff6cb5268920bfc08bc2142cc742eb77e2dd3a44)) * Enable Ubuntu 24.04 with x86_64 target in release workflow ([206598b](https://github.com/inference-gateway/coder/commit/206598bf22bfecf68dfb74971ab4c724e99a81a1)) * Increase timeout for B&P Containers job in release workflow ([ada0abd](https://github.com/inference-gateway/coder/commit/ada0abd2a1c6eaf3d9ba76b51f4ba57415b20ee9)) * Refactor Dockerfile to optimize build process with cargo-chef and add Python based coder environment ([30f17d1](https://github.com/inference-gateway/coder/commit/30f17d185266c91a0fbe44926a78c2fc37067bb2)) * Update Kaniko executor image to v1.23.2 in release workflow, remove debug ([6dc165c](https://github.com/inference-gateway/coder/commit/6dc165ccdd03879c676738d7199710a88b792ba5)) ### 🔧 Miscellaneous * **dockerfile:** Format Dockerfile for improved readability and consistency ([aa5bf99](https://github.com/inference-gateway/coder/commit/aa5bf99dd500a411c0acb71de34ccd186b9c5801)) * Ensure proper newline at end of Dockerfile for consistency ([20d85ba](https://github.com/inference-gateway/coder/commit/20d85bad1101577ea463347a210f81104ae89575)) --- CHANGELOG.md | 15 +++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee56380..8791f09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.26](https://github.com/inference-gateway/coder/compare/0.1.4-rc.25...0.1.4-rc.26) (2025-02-20) + +### 👷 CI + +* Add metadata fetching step for container build in release workflow ([ff6cb52](https://github.com/inference-gateway/coder/commit/ff6cb5268920bfc08bc2142cc742eb77e2dd3a44)) +* Enable Ubuntu 24.04 with x86_64 target in release workflow ([206598b](https://github.com/inference-gateway/coder/commit/206598bf22bfecf68dfb74971ab4c724e99a81a1)) +* Increase timeout for B&P Containers job in release workflow ([ada0abd](https://github.com/inference-gateway/coder/commit/ada0abd2a1c6eaf3d9ba76b51f4ba57415b20ee9)) +* Refactor Dockerfile to optimize build process with cargo-chef and add Python based coder environment ([30f17d1](https://github.com/inference-gateway/coder/commit/30f17d185266c91a0fbe44926a78c2fc37067bb2)) +* Update Kaniko executor image to v1.23.2 in release workflow, remove debug ([6dc165c](https://github.com/inference-gateway/coder/commit/6dc165ccdd03879c676738d7199710a88b792ba5)) + +### 🔧 Miscellaneous + +* **dockerfile:** Format Dockerfile for improved readability and consistency ([aa5bf99](https://github.com/inference-gateway/coder/commit/aa5bf99dd500a411c0acb71de34ccd186b9c5801)) +* Ensure proper newline at end of Dockerfile for consistency ([20d85ba](https://github.com/inference-gateway/coder/commit/20d85bad1101577ea463347a210f81104ae89575)) + ## [0.1.4-rc.25](https://github.com/inference-gateway/coder/compare/0.1.4-rc.24...0.1.4-rc.25) (2025-02-19) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 4482755..2ced413 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.25" +version = "0.1.4-rc.26" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index adc6599..9ed2d6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.25" +version = "0.1.4-rc.26" edition = "2021" [dependencies] From bab62548407fb69c58c3910a7de3719a9dedc360 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 01:03:02 +0000 Subject: [PATCH 076/174] ci: Ok doesn't seems to like it Would need to find a way to add those labels. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e6b359..a186920 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,11 +250,11 @@ jobs: } EOF - - name: Fetch metadata for container build - uses: docker/metadata-action@v5 - id: metadata - with: - images: ghcr.io/${{ github.repository }} + # - name: Fetch metadata for container build + # uses: docker/metadata-action@v5 + # id: metadata + # with: + # images: ghcr.io/${{ github.repository }} - name: Build and push env: From d122f7539b4bafd8bbf99a0349faddd2d4d90550 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 20 Feb 2025 01:05:21 +0000 Subject: [PATCH 077/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.27=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.27](https://github.com/inference-gateway/coder/compare/0.1.4-rc.26...0.1.4-rc.27) (2025-02-20) ### 👷 CI * Ok doesn't seems to like it ([bab6254](https://github.com/inference-gateway/coder/commit/bab62548407fb69c58c3910a7de3719a9dedc360)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8791f09..8c1826e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.27](https://github.com/inference-gateway/coder/compare/0.1.4-rc.26...0.1.4-rc.27) (2025-02-20) + +### 👷 CI + +* Ok doesn't seems to like it ([bab6254](https://github.com/inference-gateway/coder/commit/bab62548407fb69c58c3910a7de3719a9dedc360)) + ## [0.1.4-rc.26](https://github.com/inference-gateway/coder/compare/0.1.4-rc.25...0.1.4-rc.26) (2025-02-20) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 2ced413..9cf9e68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.26" +version = "0.1.4-rc.27" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 9ed2d6c..e4736fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.26" +version = "0.1.4-rc.27" edition = "2021" [dependencies] From 7eb50ad4bf5ee49fa0f1b9b859d4f75750fb41a1 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 01:12:07 +0000 Subject: [PATCH 078/174] ci: Interesting, so I guess it was the debug tag that I need, it contains the tail utility and some other basic ones, will keep it like that then Signed-off-by: Eden Reich --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a186920..f5018a1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: - k8s target: aarch64-unknown-linux-musl container: - image: gcr.io/kaniko-project/executor:v1.23.2 + image: gcr.io/kaniko-project/executor:v1.23.2-debug options: --entrypoint="" runs-on: ${{ matrix.os }} steps: @@ -250,11 +250,11 @@ jobs: } EOF - # - name: Fetch metadata for container build - # uses: docker/metadata-action@v5 - # id: metadata - # with: - # images: ghcr.io/${{ github.repository }} + - name: Fetch metadata for container build + uses: docker/metadata-action@v5 + id: metadata + with: + images: ghcr.io/${{ github.repository }} - name: Build and push env: From 1ad5adf0ce4f61adc95c39e4d433c47f869c56b1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 20 Feb 2025 01:16:30 +0000 Subject: [PATCH 079/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.28=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.28](https://github.com/inference-gateway/coder/compare/0.1.4-rc.27...0.1.4-rc.28) (2025-02-20) ### 👷 CI * Interesting, so I guess it was the debug tag that I need, it contains the tail utility and some other basic ones, will keep it like that then ([7eb50ad](https://github.com/inference-gateway/coder/commit/7eb50ad4bf5ee49fa0f1b9b859d4f75750fb41a1)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c1826e..f9a6458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.28](https://github.com/inference-gateway/coder/compare/0.1.4-rc.27...0.1.4-rc.28) (2025-02-20) + +### 👷 CI + +* Interesting, so I guess it was the debug tag that I need, it contains the tail utility and some other basic ones, will keep it like that then ([7eb50ad](https://github.com/inference-gateway/coder/commit/7eb50ad4bf5ee49fa0f1b9b859d4f75750fb41a1)) + ## [0.1.4-rc.27](https://github.com/inference-gateway/coder/compare/0.1.4-rc.26...0.1.4-rc.27) (2025-02-20) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 9cf9e68..6f190b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.27" +version = "0.1.4-rc.28" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index e4736fb..a829263 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.27" +version = "0.1.4-rc.28" edition = "2021" [dependencies] From 9ee3a7a851ce20d1acfb0a5f7d385a345029974c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 01:18:46 +0000 Subject: [PATCH 080/174] ci: Comment out metadata fetching step in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5018a1..ea7c292 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,11 +250,11 @@ jobs: } EOF - - name: Fetch metadata for container build - uses: docker/metadata-action@v5 - id: metadata - with: - images: ghcr.io/${{ github.repository }} + # - name: Fetch metadata for container build + # uses: docker/metadata-action@v5 + # id: metadata + # with: + # images: ghcr.io/${{ github.repository }} - name: Build and push env: From 67d44a7ba25c922f71df96e818a92c75096631db Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 20 Feb 2025 01:21:02 +0000 Subject: [PATCH 081/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.29=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.29](https://github.com/inference-gateway/coder/compare/0.1.4-rc.28...0.1.4-rc.29) (2025-02-20) ### 👷 CI * Comment out metadata fetching step in release workflow ([9ee3a7a](https://github.com/inference-gateway/coder/commit/9ee3a7a851ce20d1acfb0a5f7d385a345029974c)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9a6458..940b724 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.29](https://github.com/inference-gateway/coder/compare/0.1.4-rc.28...0.1.4-rc.29) (2025-02-20) + +### 👷 CI + +* Comment out metadata fetching step in release workflow ([9ee3a7a](https://github.com/inference-gateway/coder/commit/9ee3a7a851ce20d1acfb0a5f7d385a345029974c)) + ## [0.1.4-rc.28](https://github.com/inference-gateway/coder/compare/0.1.4-rc.27...0.1.4-rc.28) (2025-02-20) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 6f190b0..a197599 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.28" +version = "0.1.4-rc.29" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index a829263..17150b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.28" +version = "0.1.4-rc.29" edition = "2021" [dependencies] From 7a3aeea25dafcc2712374438b4e8bcad65fc66d9 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 01:37:44 +0000 Subject: [PATCH 082/174] ci: Remove metadata fetching step and add image labels manually Signed-off-by: Eden Reich --- .github/workflows/release.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ea7c292..e0348ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,12 +250,6 @@ jobs: } EOF - # - name: Fetch metadata for container build - # uses: docker/metadata-action@v5 - # id: metadata - # with: - # images: ghcr.io/${{ github.repository }} - - name: Build and push env: REPOSITORY_NAME: coder @@ -271,6 +265,16 @@ jobs: --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --label="org.opencontainers.image.created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ + --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + --label="org.opencontainers.image.revision=${{ github.sha }}" \ + --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache From 6dd043f7e0702b40969601a1ff4fb93c8af86089 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 20 Feb 2025 01:38:15 +0000 Subject: [PATCH 083/174] ci: Remove commented out old workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 71 ----------------------------------- 1 file changed, 71 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0348ba..345cf80 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -277,74 +277,3 @@ jobs: --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache - - # build_containers_with_tools: - # name: B&P Language specific Containers - # needs: github_release - # if: needs.github_release.outputs.new_release_published == 'true' - # timeout-minutes: 15 - # permissions: - # packages: write - # strategy: - # fail-fast: false - # matrix: - # include: - # - os: ubuntu-24.04 - # target: x86_64-unknown-linux-musl - # arch_platform: linux/amd64 - # language: rust - # - os: - # - self-hosted - # - k8s - # - ubuntu-22.04-arm64 - # target: aarch64-unknown-linux-musl - # arch_platform: linux/arm64 - # language: rust - # runs-on: ${{ matrix.os }} - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 - # with: - # ref: ${{ github.ref }} - # persist-credentials: false - - # - name: Update Cargo.toml version - # run: | - # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - # if [[ "$RUNNER_OS" == "macOS" ]]; then - # sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - # else - # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - # fi - - # - name: Set up QEMU - # uses: docker/setup-qemu-action@v3 - - # - name: Set up Docker Buildx - # uses: docker/setup-buildx-action@v3 - - # - name: Login to GitHub Container Registry - # uses: docker/login-action@v3 - # with: - # registry: ghcr.io - # username: ${{ github.repository_owner }} - # password: ${{ secrets.GITHUB_TOKEN }} - - # - name: B&P ${{ matrix.language }} Container - # uses: docker/build-push-action@v6 - # with: - # context: . - # platforms: ${{ matrix.arch_platform }} - # push: true - # cache-from: type=gha,scope=rust-${{ matrix.target }} - # cache-to: type=gha,mode=max,scope=rust-${{ matrix.target }} - # tags: | - # ghcr.io/${{ github.repository_owner }}/coder:${{ matrix.language }} - # ghcr.io/${{ github.repository_owner }}/coder:${{ matrix.language }}-${{ needs.github_release.outputs.new_release_version }} - # build-args: | - # TARGET_ARCH=${{ matrix.target }} - # labels: | - # org.opencontainers.image.source=https://github.com/inference-gateway/coder - # org.opencontainers.image.description=The AI-Powered Coder - # org.opencontainers.image.licenses=MIT - # target: ${{ matrix.language }} From 13a56b8456ece9de4ea3af3a079ed76e21597e78 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 16:01:03 +0000 Subject: [PATCH 084/174] chore: update dependencies to latest versions Also provide 4 cores for the job and 8 threads to compile. Signed-off-by: Eden Reich --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 18 +++++++++++------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a197599..a510117 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,9 +282,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.29" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -292,9 +292,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.29" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", @@ -304,9 +304,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.44" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6" +checksum = "1e3040c8291884ddf39445dc033c70abc2bc44a42f0a3a00571a0f483a83f0cd" dependencies = [ "clap", ] @@ -1132,9 +1132,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "memchr" @@ -1736,18 +1736,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -1756,9 +1756,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" dependencies = [ "itoa", "memchr", @@ -1968,9 +1968,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", @@ -2243,9 +2243,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "93d59ca99a559661b96bf898d8fce28ed87935fd2bea9f05983c1464dd6c71b1" dependencies = [ "getrandom 0.3.1", ] diff --git a/Cargo.toml b/Cargo.toml index 17150b4..ee1c8b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,29 +4,33 @@ version = "0.1.4-rc.29" edition = "2021" [dependencies] -clap = { version = "4.5.29", features = ["derive"] } -clap_complete = "4.5.44" +clap = { version = "4.5.30", features = ["derive"] } +clap_complete = "4.5.45" env_logger = "0.11.6" futures-util = "0.3.31" ignore = "0.4.23" inference-gateway-sdk = "0.9.0" -log = "0.4.25" +log = "0.4.26" octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } openssl = { version = "0.10.71", features = ["vendored"] } -serde = "1.0.217" -serde_json = "1.0.138" +serde = "1.0.218" +serde_json = "1.0.139" serde_yaml = "0.9.34" thiserror = "2.0.11" tiktoken-rs = "0.6.0" tokio = { version = "1.43.0", features = ["rt-multi-thread", "tokio-macros"] } -uuid = { version = "1.12.1", features = ["v4"] } +uuid = { version = "1.14.0", features = ["v4"] } [dev-dependencies] assert_cmd = "2.0.16" assert_fs = "1.1.2" predicates = "3.1.3" serial_test = "3.2.0" -tempfile = "3.16.0" +tempfile = "3.17.1" + +[build] +rustflags = ["-Z", "threads=8"] +jobs = 4 [profile.release] lto = true From 39954db6720f98774a0c66dfabb47b862dcfed79 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 23 Feb 2025 16:03:41 +0000 Subject: [PATCH 085/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.30=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.30](https://github.com/inference-gateway/coder/compare/0.1.4-rc.29...0.1.4-rc.30) (2025-02-23) ### 👷 CI * Remove commented out old workflow ([6dd043f](https://github.com/inference-gateway/coder/commit/6dd043f7e0702b40969601a1ff4fb93c8af86089)) * Remove metadata fetching step and add image labels manually ([7a3aeea](https://github.com/inference-gateway/coder/commit/7a3aeea25dafcc2712374438b4e8bcad65fc66d9)) ### 🔧 Miscellaneous * update dependencies to latest versions ([13a56b8](https://github.com/inference-gateway/coder/commit/13a56b8456ece9de4ea3af3a079ed76e21597e78)) --- CHANGELOG.md | 11 +++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 940b724..c5cdcbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.30](https://github.com/inference-gateway/coder/compare/0.1.4-rc.29...0.1.4-rc.30) (2025-02-23) + +### 👷 CI + +* Remove commented out old workflow ([6dd043f](https://github.com/inference-gateway/coder/commit/6dd043f7e0702b40969601a1ff4fb93c8af86089)) +* Remove metadata fetching step and add image labels manually ([7a3aeea](https://github.com/inference-gateway/coder/commit/7a3aeea25dafcc2712374438b4e8bcad65fc66d9)) + +### 🔧 Miscellaneous + +* update dependencies to latest versions ([13a56b8](https://github.com/inference-gateway/coder/commit/13a56b8456ece9de4ea3af3a079ed76e21597e78)) + ## [0.1.4-rc.29](https://github.com/inference-gateway/coder/compare/0.1.4-rc.28...0.1.4-rc.29) (2025-02-20) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index a510117..9dfee22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.29" +version = "0.1.4-rc.30" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index ee1c8b1..6f04ae1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.29" +version = "0.1.4-rc.30" edition = "2021" [dependencies] From 2878a6dba5643ba71163aeab39cf08293c3feb56 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 16:43:16 +0000 Subject: [PATCH 086/174] ci: Update Kaniko executor options for resource allocation and adjust Rust codegen units Increase codegen-units to see if it compiles faster. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- Cargo.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 345cf80..acf9be6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -234,7 +234,7 @@ jobs: target: aarch64-unknown-linux-musl container: image: gcr.io/kaniko-project/executor:v1.23.2-debug - options: --entrypoint="" + options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 runs-on: ${{ matrix.os }} steps: - name: Authenticate with GHCR diff --git a/Cargo.toml b/Cargo.toml index 6f04ae1..33a7301 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,13 +29,12 @@ serial_test = "3.2.0" tempfile = "3.17.1" [build] -rustflags = ["-Z", "threads=8"] jobs = 4 [profile.release] lto = true opt-level = "z" -codegen-units = 1 +codegen-units = 4 panic = "abort" [profile.dev] From 165ea13371f7952bcd3e6ec7aa07c96bb76f14d8 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 16:43:49 +0000 Subject: [PATCH 087/174] ci: Increase timeout for B&P Containers job to 45 minutes - temporarily Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acf9be6..fb66dbd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,7 +219,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 35 + timeout-minutes: 45 permissions: packages: write strategy: From 6683d00f441dc17570d6f292ff3daa0a6485d5e1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 23 Feb 2025 16:46:27 +0000 Subject: [PATCH 088/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.31=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.31](https://github.com/inference-gateway/coder/compare/0.1.4-rc.30...0.1.4-rc.31) (2025-02-23) ### 👷 CI * Increase timeout for B&P Containers job to 45 minutes - temporarily ([165ea13](https://github.com/inference-gateway/coder/commit/165ea13371f7952bcd3e6ec7aa07c96bb76f14d8)) * Update Kaniko executor options for resource allocation and adjust Rust codegen units ([2878a6d](https://github.com/inference-gateway/coder/commit/2878a6dba5643ba71163aeab39cf08293c3feb56)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5cdcbc..d5048bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.31](https://github.com/inference-gateway/coder/compare/0.1.4-rc.30...0.1.4-rc.31) (2025-02-23) + +### 👷 CI + +* Increase timeout for B&P Containers job to 45 minutes - temporarily ([165ea13](https://github.com/inference-gateway/coder/commit/165ea13371f7952bcd3e6ec7aa07c96bb76f14d8)) +* Update Kaniko executor options for resource allocation and adjust Rust codegen units ([2878a6d](https://github.com/inference-gateway/coder/commit/2878a6dba5643ba71163aeab39cf08293c3feb56)) + ## [0.1.4-rc.30](https://github.com/inference-gateway/coder/compare/0.1.4-rc.29...0.1.4-rc.30) (2025-02-23) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 9dfee22..49f1295 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.30" +version = "0.1.4-rc.31" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 33a7301..9d4d666 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.30" +version = "0.1.4-rc.31" edition = "2021" [dependencies] From 393aa751727f2d628a525887c38adac9ad9692b7 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 17:32:30 +0000 Subject: [PATCH 089/174] ci: Update cache repository path and TTL in release workflow and reduce build jobs to 3 cores Also revert codegen-units - not sure it even has any impact on the build speed, so better keep it optimized. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 3 ++- Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fb66dbd..43475e3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -276,4 +276,5 @@ jobs: --label="org.opencontainers.image.licenses=MIT" \ --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-ttl=336h diff --git a/Cargo.toml b/Cargo.toml index 9d4d666..6720904 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,12 +29,12 @@ serial_test = "3.2.0" tempfile = "3.17.1" [build] -jobs = 4 +jobs = 3 [profile.release] lto = true opt-level = "z" -codegen-units = 4 +codegen-units = 0 panic = "abort" [profile.dev] From 44bce8a7baed7e2c6ec1da1644a06887d1023822 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 23 Feb 2025 17:39:59 +0000 Subject: [PATCH 090/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.32=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.32](https://github.com/inference-gateway/coder/compare/0.1.4-rc.31...0.1.4-rc.32) (2025-02-23) ### 👷 CI * Update cache repository path and TTL in release workflow and reduce build jobs to 3 cores ([393aa75](https://github.com/inference-gateway/coder/commit/393aa751727f2d628a525887c38adac9ad9692b7)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5048bc..ae5d5f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.32](https://github.com/inference-gateway/coder/compare/0.1.4-rc.31...0.1.4-rc.32) (2025-02-23) + +### 👷 CI + +* Update cache repository path and TTL in release workflow and reduce build jobs to 3 cores ([393aa75](https://github.com/inference-gateway/coder/commit/393aa751727f2d628a525887c38adac9ad9692b7)) + ## [0.1.4-rc.31](https://github.com/inference-gateway/coder/compare/0.1.4-rc.30...0.1.4-rc.31) (2025-02-23) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 49f1295..881cd65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.31" +version = "0.1.4-rc.32" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 6720904..cc3a52f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.31" +version = "0.1.4-rc.32" edition = "2021" [dependencies] From 9c5a5d01b511b2d73cb3b417239290d445e89911 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 17:45:33 +0000 Subject: [PATCH 091/174] ci: Update codegen units in Cargo.toml for improved optimization Small fix it has to start with 1 Signed-off-by: Eden Reich --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index cc3a52f..6fd28e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ jobs = 3 [profile.release] lto = true opt-level = "z" -codegen-units = 0 +codegen-units = 1 panic = "abort" [profile.dev] From c180c2acacc2032a56925811425d2999164aee2f Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sun, 23 Feb 2025 17:48:28 +0000 Subject: [PATCH 092/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.33=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.33](https://github.com/inference-gateway/coder/compare/0.1.4-rc.32...0.1.4-rc.33) (2025-02-23) ### 👷 CI * Update codegen units in Cargo.toml for improved optimization ([9c5a5d0](https://github.com/inference-gateway/coder/commit/9c5a5d01b511b2d73cb3b417239290d445e89911)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae5d5f4..4f2e0c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.33](https://github.com/inference-gateway/coder/compare/0.1.4-rc.32...0.1.4-rc.33) (2025-02-23) + +### 👷 CI + +* Update codegen units in Cargo.toml for improved optimization ([9c5a5d0](https://github.com/inference-gateway/coder/commit/9c5a5d01b511b2d73cb3b417239290d445e89911)) + ## [0.1.4-rc.32](https://github.com/inference-gateway/coder/compare/0.1.4-rc.31...0.1.4-rc.32) (2025-02-23) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index 881cd65..c5dc059 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.32" +version = "0.1.4-rc.33" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 6fd28e2..a73ac0c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.32" +version = "0.1.4-rc.33" edition = "2021" [dependencies] From 04f3efbb40040cf1faca92f8f1102bd1d4dc135d Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Sun, 23 Feb 2025 18:52:50 +0000 Subject: [PATCH 093/174] refactor: Ensure caching in a separate layer Signed-off-by: Eden Reich --- Cargo.toml | 3 --- Dockerfile | 12 ++++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a73ac0c..e397ca8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,9 +28,6 @@ predicates = "3.1.3" serial_test = "3.2.0" tempfile = "3.17.1" -[build] -jobs = 3 - [profile.release] lto = true opt-level = "z" diff --git a/Dockerfile b/Dockerfile index 3dccaf9..024c634 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,14 +12,13 @@ FROM chef AS planner COPY . . RUN cargo chef prepare --recipe-path recipe.json -FROM chef AS builder +FROM chef AS cacher ARG TARGET_ARCH ENV CC=clang \ AR=llvm-ar \ - RUSTFLAGS="-C target-feature=+crt-static -C linker=clang" \ + RUSTFLAGS="-C target-feature=+crt-static -C linker=clang -C target-cpu=native" \ CARGO_HOME=/root/.cargo \ - PATH="/root/.cargo/bin:${PATH}" \ - PKG_CONFIG_ALLOW_CROSS=1 + PATH="/root/.cargo/bin:${PATH}" RUN apk add --no-cache \ make \ @@ -35,13 +34,14 @@ RUN apk add --no-cache \ /tmp/* \ /var/tmp/* -# First build dependencies COPY --from=planner /app/recipe.json recipe.json RUN rustup target add ${TARGET_ARCH} RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json -# Then build application +FROM cacher AS builder +ARG TARGET_ARCH COPY . . +COPY --from=cacher /app/target /app/target RUN cargo build --release --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal From 66748df260ba9d68bf5ea2c0048e79bcc69ea7f8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 24 Feb 2025 16:05:19 +0000 Subject: [PATCH 094/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.34=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.34](https://github.com/inference-gateway/coder/compare/0.1.4-rc.33...0.1.4-rc.34) (2025-02-24) ### ♻️ Improvements * Ensure caching in a separate layer ([04f3efb](https://github.com/inference-gateway/coder/commit/04f3efbb40040cf1faca92f8f1102bd1d4dc135d)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f2e0c5..25d5f36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.34](https://github.com/inference-gateway/coder/compare/0.1.4-rc.33...0.1.4-rc.34) (2025-02-24) + +### ♻️ Improvements + +* Ensure caching in a separate layer ([04f3efb](https://github.com/inference-gateway/coder/commit/04f3efbb40040cf1faca92f8f1102bd1d4dc135d)) + ## [0.1.4-rc.33](https://github.com/inference-gateway/coder/compare/0.1.4-rc.32...0.1.4-rc.33) (2025-02-23) ### 👷 CI diff --git a/Cargo.lock b/Cargo.lock index c5dc059..55ae1ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.33" +version = "0.1.4-rc.34" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index e397ca8..fae72ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.33" +version = "0.1.4-rc.34" edition = "2021" [dependencies] From 8a00250416affd07daf5380970a09df3617b5138 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 24 Feb 2025 19:53:20 +0000 Subject: [PATCH 095/174] perf: Add release task for local Docker container execution so I can test the release Signed-off-by: Eden Reich --- .gitignore | 1 + Taskfile.yaml | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/.gitignore b/.gitignore index 97ab1b7..85e9238 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .vscode .env .coder +cache \ No newline at end of file diff --git a/Taskfile.yaml b/Taskfile.yaml index e451315..9015e80 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -30,3 +30,22 @@ tasks: desc: Install the project cmds: - cargo install --path . + + release: + desc: Run the release container command locally + cmds: + - | + docker run --rm \ + --cpu-shares=4096 \ + --memory=6g \ + --cpus=4 \ + -v $(pwd):/workspace \ + -v $(pwd)/cache:/kaniko/cache \ + -w /workspace \ + gcr.io/kaniko-project/executor:v1.23.2-debug \ + --dockerfile=./Dockerfile \ + --target=minimal \ + --build-arg=TARGET_ARCH=aarch64-unknown-linux-musl \ + --no-push \ + --no-push-cache \ + --tar-path=/app From dcd030c6857f947125081b209c26cafcbf417e19 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 24 Feb 2025 19:59:16 +0000 Subject: [PATCH 096/174] build: Increase verbosity of cargo build command in Dockerfile Signed-off-by: Eden Reich --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 024c634..f5e2ce8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ FROM cacher AS builder ARG TARGET_ARCH COPY . . COPY --from=cacher /app/target /app/target -RUN cargo build --release --target ${TARGET_ARCH} +RUN cargo build -vv --release --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal ARG TARGET_ARCH From 97b700900a38c8589118e44524c39b4223749aa0 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 24 Feb 2025 19:59:25 +0000 Subject: [PATCH 097/174] chore: Update dependencies to latest versions and optimize release profile settings Signed-off-by: Eden Reich --- Cargo.lock | 12 ++++++------ Cargo.toml | 40 ++++++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55ae1ce..491e1b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,9 +282,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.30" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" +checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" dependencies = [ "clap_builder", "clap_derive", @@ -292,9 +292,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.30" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" +checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" dependencies = [ "anstream", "anstyle", @@ -304,9 +304,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.45" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e3040c8291884ddf39445dc033c70abc2bc44a42f0a3a00571a0f483a83f0cd" +checksum = "f5c5508ea23c5366f77e53f5a0070e5a84e51687ec3ef9e0464c86dc8d13ce98" dependencies = [ "clap", ] diff --git a/Cargo.toml b/Cargo.toml index fae72ef..05b2ca9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,22 +4,22 @@ version = "0.1.4-rc.34" edition = "2021" [dependencies] -clap = { version = "4.5.30", features = ["derive"] } -clap_complete = "4.5.45" -env_logger = "0.11.6" -futures-util = "0.3.31" -ignore = "0.4.23" -inference-gateway-sdk = "0.9.0" -log = "0.4.26" +clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } +clap_complete = { version = "4.5.46", default-features = false, features = ["default"] } +env_logger = { version = "0.11.6", default-features = false, features = ["default"] } +futures-util = { version = "0.3.31", default-features = false, features = ["default"] } +ignore = { version = "0.4.23", default-features = false } +inference-gateway-sdk = { version = "0.9.0", default-features = false } +log = { version = "0.4.26", default-features = false } octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } -openssl = { version = "0.10.71", features = ["vendored"] } -serde = "1.0.218" -serde_json = "1.0.139" -serde_yaml = "0.9.34" -thiserror = "2.0.11" -tiktoken-rs = "0.6.0" -tokio = { version = "1.43.0", features = ["rt-multi-thread", "tokio-macros"] } -uuid = { version = "1.14.0", features = ["v4"] } +openssl = { version = "0.10.71", default-features = false, features = ["vendored"] } +serde = { version = "1.0.218", default-features = false, features = ["derive"] } +serde_json = { version = "1.0.139", default-features = false } +serde_yaml = { version = "0.9.34", default-features = false } +thiserror = { version = "2.0.11", default-features = false } +tiktoken-rs = { version = "0.6.0", default-features = false } +tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } +uuid = { version = "1.14.0", default-features = false, features = ["v4"] } [dev-dependencies] assert_cmd = "2.0.16" @@ -28,11 +28,19 @@ predicates = "3.1.3" serial_test = "3.2.0" tempfile = "3.17.1" +[target.aarch64-unknown-linux-gnu] +rustflags = [ + "-C", "target-cpu=cortex-a72", +] + [profile.release] lto = true -opt-level = "z" +opt-level = 3 codegen-units = 1 panic = "abort" +strip = true +debug = false +incremental = false [profile.dev] opt-level = 0 From cca01e22eefa535785962d63325eb751e8637ff6 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Mon, 24 Feb 2025 20:18:12 +0000 Subject: [PATCH 098/174] build: Add missing flags, not sure yet why kaniko is not saving into the local cache Have to figure out why it's not saving to the local cache directory. Signed-off-by: Eden Reich --- Taskfile.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Taskfile.yaml b/Taskfile.yaml index 9015e80..a69a701 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -34,18 +34,20 @@ tasks: release: desc: Run the release container command locally cmds: + - mkdir -p $(pwd)/cache - | docker run --rm \ --cpu-shares=4096 \ --memory=6g \ --cpus=4 \ -v $(pwd):/workspace \ - -v $(pwd)/cache:/kaniko/cache \ + -v $(pwd)/cache:/cache \ -w /workspace \ gcr.io/kaniko-project/executor:v1.23.2-debug \ --dockerfile=./Dockerfile \ --target=minimal \ --build-arg=TARGET_ARCH=aarch64-unknown-linux-musl \ --no-push \ - --no-push-cache \ - --tar-path=/app + --tar-path=/workspace/my-image.tar \ + --cache-dir=/cache \ + --cache-ttl=336h From bceb4b48314d54c7b888bd43fb999edf40e70530 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 12:45:57 +0000 Subject: [PATCH 099/174] build: Update Zsh configuration to include additional right prompt elements like execution time etc Signed-off-by: Eden Reich --- .devcontainer/.zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.devcontainer/.zshrc b/.devcontainer/.zshrc index 6de6120..5e092ec 100644 --- a/.devcontainer/.zshrc +++ b/.devcontainer/.zshrc @@ -10,6 +10,8 @@ export ZSH=$HOME/.oh-my-zsh # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="powerlevel10k/powerlevel10k" +POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status command_execution_time time) + # Set list of themes to pick from when loading at random # Setting this variable when ZSH_THEME="powerlevel10k/powerlevel10k" # a theme from this variable instead of looking in $ZSH/themes/ From fd4f9f48740a05e0094511847814d8c080b66ff3 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 12:47:24 +0000 Subject: [PATCH 100/174] build: Optimize cargo build command to utilize all available jobs for improved performance, I think it's default behaviour but I'm not entirely sure Just for safety specify the number of cores available for the build. Signed-off-by: Eden Reich --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f5e2ce8..ba7c2f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ FROM cacher AS builder ARG TARGET_ARCH COPY . . COPY --from=cacher /app/target /app/target -RUN cargo build -vv --release --target ${TARGET_ARCH} +RUN cargo build -vv --release --jobs $(nproc) --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal ARG TARGET_ARCH From 59857fdd133597b8b86e9aefbe0006da62c39f66 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 12:48:10 +0000 Subject: [PATCH 101/174] build: Enhance caching strategy in release workflow and Taskfile with compressed caching and snapshot mode Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 +++- Taskfile.yaml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43475e3..f48aa59 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -277,4 +277,6 @@ jobs: --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - --cache-ttl=336h + --cache-ttl=336h \ + --compressed-caching=true \ + --snapshot-mode=redo diff --git a/Taskfile.yaml b/Taskfile.yaml index a69a701..9b9bb57 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -50,4 +50,6 @@ tasks: --no-push \ --tar-path=/workspace/my-image.tar \ --cache-dir=/cache \ - --cache-ttl=336h + --cache-ttl=336h \ + --compressed-caching=true \ + --snapshot-mode=redo From a19249ca0aa98755dd0b31cd0db73a88be0e04d6 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 15:44:29 +0000 Subject: [PATCH 102/174] build: Install Dive to better analyse caching layers Signed-off-by: Eden Reich --- .devcontainer/Dockerfile | 17 ++++++++++++----- .gitignore | 2 +- Taskfile.yaml | 35 ++++++++++++++++++++++++++++------- 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5825fba..7b5c4ea 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,16 +1,23 @@ FROM mcr.microsoft.com/devcontainers/rust:1.0.20-bookworm ENV ZSH_CUSTOM=/home/vscode/.oh-my-zsh/custom \ - TASK_VERSION=v3.41.0 + TASK_VERSION=v3.41.0 \ + DIVE_VERSION=0.12.0 RUN apt-get update && \ # Install nodejs and npm curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ apt-get install -y nodejs && \ - # Install Task + # Install Task curl -s https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin ${TASK_VERSION} && \ + # Install Dive + curl -fsSL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_arm64.tar.gz -o /tmp/dive_${DIVE_VERSION}_linux_arm64.tar.gz && \ + tar -xzf /tmp/dive_${DIVE_VERSION}_linux_arm64.tar.gz -C /usr/local/bin && \ + chmod +x /usr/local/bin/dive && \ + # Cleanup apt-get clean && \ - rm -rf /var/lib/apt/lists/* + rm -rf /var/lib/apt/lists/* && \ + rm -rf /tmp/* RUN npm install -g semantic-release @semantic-release/changelog @semantic-release/exec @semantic-release/git @semantic-release/github conventional-changelog-conventionalcommits @@ -22,8 +29,8 @@ RUN apt-get update && \ pkg-config \ musl-tools && \ rustup target add \ - aarch64-unknown-linux-musl \ - x86_64-unknown-linux-musl && \ + aarch64-unknown-linux-musl \ + x86_64-unknown-linux-musl && \ cd /tmp && \ wget https://musl.cc/aarch64-linux-musl-cross.tgz && \ tar -xzf aarch64-linux-musl-cross.tgz && \ diff --git a/.gitignore b/.gitignore index 85e9238..8462d18 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ .vscode .env .coder -cache \ No newline at end of file +kaniko diff --git a/Taskfile.yaml b/Taskfile.yaml index 9b9bb57..044f5f3 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -31,25 +31,46 @@ tasks: cmds: - cargo install --path . - release: + build-container: desc: Run the release container command locally + vars: + GITHUB_USER: + sh: echo edenreich + GITHUB_TOKEN: + sh: echo ${GITHUB_TOKEN} + ORG_NAME: + sh: echo inference-gateway cmds: - - mkdir -p $(pwd)/cache + - mkdir -p $(pwd)/kaniko/cache + - mkdir -p $(pwd)/kaniko/.docker + - | + cat << EOF > $(pwd)/kaniko/.docker/config.json + { + "auths": { + "ghcr.io": { + "auth": "$(echo -n {{.GITHUB_USER}}:{{.GITHUB_TOKEN}} | base64 -w0)" + } + } + } + EOF - | docker run --rm \ --cpu-shares=4096 \ --memory=6g \ --cpus=4 \ - -v $(pwd):/workspace \ - -v $(pwd)/cache:/cache \ + -v $(pwd)/kaniko/artifacts:/workspace/artifacts \ + -v $(pwd)/kaniko/cache:/cache \ + -v $(pwd)/kaniko/.docker:/kaniko/.docker \ -w /workspace \ gcr.io/kaniko-project/executor:v1.23.2-debug \ - --dockerfile=./Dockerfile \ + --context=git://github.com/inference-gateway/coder.git#refs/heads/rc/optimize-build \ + --dockerfile=Dockerfile \ --target=minimal \ --build-arg=TARGET_ARCH=aarch64-unknown-linux-musl \ --no-push \ - --tar-path=/workspace/my-image.tar \ - --cache-dir=/cache \ + --tar-path=/workspace/artifacts/my-image.tar \ + --cache=true \ + --cache-repo=ghcr.io/{{.ORG_NAME}}/coder-cache \ --cache-ttl=336h \ --compressed-caching=true \ --snapshot-mode=redo From dd3bc44fd00d06430feb047577bb99ffbd65fa5e Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 15:47:00 +0000 Subject: [PATCH 103/174] build: Remove unnecessary target-specific rustflags for aarch64 Signed-off-by: Eden Reich --- Cargo.toml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 05b2ca9..3074cc4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,11 +28,6 @@ predicates = "3.1.3" serial_test = "3.2.0" tempfile = "3.17.1" -[target.aarch64-unknown-linux-gnu] -rustflags = [ - "-C", "target-cpu=cortex-a72", -] - [profile.release] lto = true opt-level = 3 From 572d0f9237e037445ef511fc8d118c1c38275ce7 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 16:53:00 +0000 Subject: [PATCH 104/174] build: Attempt to fix caching Signed-off-by: Eden Reich --- Dockerfile | 28 +++++++++++----------------- Taskfile.yaml | 3 ++- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba7c2f2..1a28270 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,8 +4,17 @@ # ARG TARGET_ARCH=x86_64-unknown-linux-musl FROM rust:alpine3.21 AS chef -RUN apk --no-cache add musl-dev && \ - cargo install cargo-chef +RUN apk add \ + make \ + perl \ + file \ + musl-dev \ + clang \ + llvm \ + openssl-dev \ + pkgconfig +RUN cargo install cargo-chef --locked && \ + rustup target add ${TARGET_ARCH} WORKDIR /app FROM chef AS planner @@ -20,22 +29,7 @@ ENV CC=clang \ CARGO_HOME=/root/.cargo \ PATH="/root/.cargo/bin:${PATH}" -RUN apk add --no-cache \ - make \ - perl \ - file \ - musl-dev \ - clang \ - llvm \ - openssl-dev \ - pkgconfig && \ - rm -rf \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* - COPY --from=planner /app/recipe.json recipe.json -RUN rustup target add ${TARGET_ARCH} RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json FROM cacher AS builder diff --git a/Taskfile.yaml b/Taskfile.yaml index 044f5f3..466dd37 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -73,4 +73,5 @@ tasks: --cache-repo=ghcr.io/{{.ORG_NAME}}/coder-cache \ --cache-ttl=336h \ --compressed-caching=true \ - --snapshot-mode=redo + --snapshot-mode=redo \ + --use-new-run From 24463ec09d37fd5341b9b8edda0fb8c63e616a26 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 16:55:24 +0000 Subject: [PATCH 105/174] build: Import TARGET_ARCH argument to the chef layer in the Dockerfile Signed-off-by: Eden Reich --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 1a28270..d7d1a30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ # ARG TARGET_ARCH=x86_64-unknown-linux-musl FROM rust:alpine3.21 AS chef +ARG TARGET_ARCH RUN apk add \ make \ perl \ From f05cd511a514cfe21686e6ab8637979d551f00c9 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 16:59:07 +0000 Subject: [PATCH 106/174] build: Remove redundant cache cleanup commands from Dockerfile because --no-cache is already in use Signed-off-by: Eden Reich --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d7d1a30..1a2dba5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,6 @@ RUN apk add --no-cache \ addgroup -S -g 1001 coder && \ adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder && \ rm -rf \ - /var/cache/apk/* \ /tmp/* \ /var/tmp/* COPY --from=builder --chown=coder:coder /app/target/${TARGET_ARCH}/release/coder /usr/local/bin/coder @@ -95,7 +94,6 @@ RUN apk add --no-cache \ pip install --no-cache-dir --break-system-packages \ black && \ rm -rf \ - /var/cache/apk/* \ /tmp/* \ /var/tmp/* USER coder From e447ca3b70717a3d5854b57841b15cfbfb6ef699 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 23:15:37 +0000 Subject: [PATCH 107/174] build: Update Kaniko context to local directory for improved build process Signed-off-by: Eden Reich --- Taskfile.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Taskfile.yaml b/Taskfile.yaml index 466dd37..5fea7b8 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -58,12 +58,13 @@ tasks: --cpu-shares=4096 \ --memory=6g \ --cpus=4 \ + -v $(pwd):/workspace \ -v $(pwd)/kaniko/artifacts:/workspace/artifacts \ -v $(pwd)/kaniko/cache:/cache \ -v $(pwd)/kaniko/.docker:/kaniko/.docker \ -w /workspace \ gcr.io/kaniko-project/executor:v1.23.2-debug \ - --context=git://github.com/inference-gateway/coder.git#refs/heads/rc/optimize-build \ + --context=. \ --dockerfile=Dockerfile \ --target=minimal \ --build-arg=TARGET_ARCH=aarch64-unknown-linux-musl \ From 22d81962209fe3008ec91f55512cd2e6c2b557c8 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Tue, 25 Feb 2025 23:16:00 +0000 Subject: [PATCH 108/174] build: Optimize Dockerfile by adding cache mounts for improved build performance Also copy only the directories that are needed. Signed-off-by: Eden Reich --- Dockerfile | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1a2dba5..f73b09e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,8 @@ RUN cargo install cargo-chef --locked && \ WORKDIR /app FROM chef AS planner -COPY . . +COPY Cargo.* ./ +COPY src ./src RUN cargo chef prepare --recipe-path recipe.json FROM chef AS cacher @@ -31,13 +32,19 @@ ENV CC=clang \ PATH="/root/.cargo/bin:${PATH}" COPY --from=planner /app/recipe.json recipe.json -RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + --mount=type=cache,target=/app/target \ + cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json FROM cacher AS builder ARG TARGET_ARCH -COPY . . +COPY src ./src COPY --from=cacher /app/target /app/target -RUN cargo build -vv --release --jobs $(nproc) --target ${TARGET_ARCH} +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + --mount=type=cache,target=/app/target \ + cargo build --release --jobs $(nproc) --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal ARG TARGET_ARCH From 82d64497755b2afd478c0498e04e31ed4adf7e15 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 13:44:07 +0000 Subject: [PATCH 109/174] build: Create /app directory in Dockerfile for application workspace OMG, this is so unexpected, but that RUN mkdir /app before WORKDIR is the issue with kaniko why the cache is being hit. Super strange!!! Signed-off-by: Eden Reich --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index f73b09e..f347c9a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ RUN apk add \ pkgconfig RUN cargo install cargo-chef --locked && \ rustup target add ${TARGET_ARCH} +RUN mkdir /app WORKDIR /app FROM chef AS planner From f717a40d5cb06c76fc2ed20fab31f68fd3c9163a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 26 Feb 2025 13:53:43 +0000 Subject: [PATCH 110/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.35=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.35](https://github.com/inference-gateway/coder/compare/0.1.4-rc.34...0.1.4-rc.35) (2025-02-26) ### ⚡️ Improvements * Add release task for local Docker container execution so I can test the release ([8a00250](https://github.com/inference-gateway/coder/commit/8a00250416affd07daf5380970a09df3617b5138)) ### 🔧 Miscellaneous * Update dependencies to latest versions and optimize release profile settings ([97b7009](https://github.com/inference-gateway/coder/commit/97b700900a38c8589118e44524c39b4223749aa0)) ### 📦 Miscellaneous * Add missing flags, not sure yet why kaniko is not saving into the local cache ([cca01e2](https://github.com/inference-gateway/coder/commit/cca01e22eefa535785962d63325eb751e8637ff6)) * Attempt to fix caching ([572d0f9](https://github.com/inference-gateway/coder/commit/572d0f9237e037445ef511fc8d118c1c38275ce7)) * Create /app directory in Dockerfile for application workspace ([82d6449](https://github.com/inference-gateway/coder/commit/82d64497755b2afd478c0498e04e31ed4adf7e15)) * Enhance caching strategy in release workflow and Taskfile with compressed caching and snapshot mode ([59857fd](https://github.com/inference-gateway/coder/commit/59857fdd133597b8b86e9aefbe0006da62c39f66)) * Import TARGET_ARCH argument to the chef layer in the Dockerfile ([24463ec](https://github.com/inference-gateway/coder/commit/24463ec09d37fd5341b9b8edda0fb8c63e616a26)) * Increase verbosity of cargo build command in Dockerfile ([dcd030c](https://github.com/inference-gateway/coder/commit/dcd030c6857f947125081b209c26cafcbf417e19)) * Install Dive to better analyse caching layers ([a19249c](https://github.com/inference-gateway/coder/commit/a19249ca0aa98755dd0b31cd0db73a88be0e04d6)) * Optimize cargo build command to utilize all available jobs for improved performance, I think it's default behaviour but I'm not entirely sure ([fd4f9f4](https://github.com/inference-gateway/coder/commit/fd4f9f48740a05e0094511847814d8c080b66ff3)) * Optimize Dockerfile by adding cache mounts for improved build performance ([22d8196](https://github.com/inference-gateway/coder/commit/22d81962209fe3008ec91f55512cd2e6c2b557c8)) * Remove redundant cache cleanup commands from Dockerfile because --no-cache is already in use ([f05cd51](https://github.com/inference-gateway/coder/commit/f05cd511a514cfe21686e6ab8637979d551f00c9)) * Remove unnecessary target-specific rustflags for aarch64 ([dd3bc44](https://github.com/inference-gateway/coder/commit/dd3bc44fd00d06430feb047577bb99ffbd65fa5e)) * Update Kaniko context to local directory for improved build process ([e447ca3](https://github.com/inference-gateway/coder/commit/e447ca3b70717a3d5854b57841b15cfbfb6ef699)) * Update Zsh configuration to include additional right prompt elements like execution time etc ([bceb4b4](https://github.com/inference-gateway/coder/commit/bceb4b48314d54c7b888bd43fb999edf40e70530)) --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25d5f36..e484458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,32 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.35](https://github.com/inference-gateway/coder/compare/0.1.4-rc.34...0.1.4-rc.35) (2025-02-26) + +### ⚡️ Improvements + +* Add release task for local Docker container execution so I can test the release ([8a00250](https://github.com/inference-gateway/coder/commit/8a00250416affd07daf5380970a09df3617b5138)) + +### 🔧 Miscellaneous + +* Update dependencies to latest versions and optimize release profile settings ([97b7009](https://github.com/inference-gateway/coder/commit/97b700900a38c8589118e44524c39b4223749aa0)) + +### 📦 Miscellaneous + +* Add missing flags, not sure yet why kaniko is not saving into the local cache ([cca01e2](https://github.com/inference-gateway/coder/commit/cca01e22eefa535785962d63325eb751e8637ff6)) +* Attempt to fix caching ([572d0f9](https://github.com/inference-gateway/coder/commit/572d0f9237e037445ef511fc8d118c1c38275ce7)) +* Create /app directory in Dockerfile for application workspace ([82d6449](https://github.com/inference-gateway/coder/commit/82d64497755b2afd478c0498e04e31ed4adf7e15)) +* Enhance caching strategy in release workflow and Taskfile with compressed caching and snapshot mode ([59857fd](https://github.com/inference-gateway/coder/commit/59857fdd133597b8b86e9aefbe0006da62c39f66)) +* Import TARGET_ARCH argument to the chef layer in the Dockerfile ([24463ec](https://github.com/inference-gateway/coder/commit/24463ec09d37fd5341b9b8edda0fb8c63e616a26)) +* Increase verbosity of cargo build command in Dockerfile ([dcd030c](https://github.com/inference-gateway/coder/commit/dcd030c6857f947125081b209c26cafcbf417e19)) +* Install Dive to better analyse caching layers ([a19249c](https://github.com/inference-gateway/coder/commit/a19249ca0aa98755dd0b31cd0db73a88be0e04d6)) +* Optimize cargo build command to utilize all available jobs for improved performance, I think it's default behaviour but I'm not entirely sure ([fd4f9f4](https://github.com/inference-gateway/coder/commit/fd4f9f48740a05e0094511847814d8c080b66ff3)) +* Optimize Dockerfile by adding cache mounts for improved build performance ([22d8196](https://github.com/inference-gateway/coder/commit/22d81962209fe3008ec91f55512cd2e6c2b557c8)) +* Remove redundant cache cleanup commands from Dockerfile because --no-cache is already in use ([f05cd51](https://github.com/inference-gateway/coder/commit/f05cd511a514cfe21686e6ab8637979d551f00c9)) +* Remove unnecessary target-specific rustflags for aarch64 ([dd3bc44](https://github.com/inference-gateway/coder/commit/dd3bc44fd00d06430feb047577bb99ffbd65fa5e)) +* Update Kaniko context to local directory for improved build process ([e447ca3](https://github.com/inference-gateway/coder/commit/e447ca3b70717a3d5854b57841b15cfbfb6ef699)) +* Update Zsh configuration to include additional right prompt elements like execution time etc ([bceb4b4](https://github.com/inference-gateway/coder/commit/bceb4b48314d54c7b888bd43fb999edf40e70530)) + ## [0.1.4-rc.34](https://github.com/inference-gateway/coder/compare/0.1.4-rc.33...0.1.4-rc.34) (2025-02-24) ### ♻️ Improvements diff --git a/Cargo.lock b/Cargo.lock index 491e1b3..13bd8d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.34" +version = "0.1.4-rc.35" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 3074cc4..959b4e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.34" +version = "0.1.4-rc.35" edition = "2021" [dependencies] From 0fcaca0d92a1c76f0416645546ddcbfeba34d423 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 15:37:27 +0000 Subject: [PATCH 111/174] build: Add optional shell completions feature using clap_complete This package is very slow, so it's better to make it for now optional feature. Perhaps I can improve the speed of compilation with a pre-generated completion only for zsh and bash stored in text format on the SCM and then pull it once the user executes the completion they need. But for now I'll just make this as an optional feature to speed things up, because completion is not a critical feature. After investigating the issue it seems like it takes really long to compile due to intensive macros and codegen in this repo and they do not make it as an optional feature to choose from what completion is needed for what shell, i.e you have to include everything - which is bad. Signed-off-by: Eden Reich --- Cargo.toml | 5 ++++- src/cli.rs | 1 + src/main.rs | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 959b4e6..6a9830d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,9 +3,12 @@ name = "coder" version = "0.1.4-rc.35" edition = "2021" +[features] +completions = ["clap_complete"] + [dependencies] clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } -clap_complete = { version = "4.5.46", default-features = false, features = ["default"] } +clap_complete = { version = "4.5.46", default-features = false, features = ["default"], optional = true } env_logger = { version = "0.11.6", default-features = false, features = ["default"] } futures-util = { version = "0.3.31", default-features = false, features = ["default"] } ignore = { version = "0.4.23", default-features = false } diff --git a/src/cli.rs b/src/cli.rs index f129a57..bf3a885 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -12,6 +12,7 @@ pub struct Cli { #[derive(Subcommand)] pub enum Commands { /// Generate shell completions + #[cfg(feature = "completions")] Completions { /// The shell to generate completions for #[arg(value_enum)] diff --git a/src/main.rs b/src/main.rs index 0bc8bca..f05c727 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use crate::cli::{Cli, Commands}; use crate::errors::CoderError; -use clap::{CommandFactory, Parser}; +use clap::Parser; +#[cfg(feature = "completions")] use clap_complete::generate; use conversation::Conversation; use inference_gateway_sdk::{ @@ -82,6 +83,7 @@ async fn main() -> Result<(), CoderError> { let provider = Provider::try_from(config.agent.provider.as_str())?; match cli.command { + #[cfg(feature = "completions")] Commands::Completions { shell } => { generate(shell, &mut Cli::command(), "coder", &mut std::io::stdout()); return Ok(()); From 5d6114772a32f70b6058915be72dc70be3e4607c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 15:38:24 +0000 Subject: [PATCH 112/174] build: Update uuid dependency to version 1.15.0 Signed-off-by: Eden Reich --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 13bd8d8..b05efd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2243,9 +2243,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d59ca99a559661b96bf898d8fce28ed87935fd2bea9f05983c1464dd6c71b1" +checksum = "bd8dcafa1ca14750d8d7a05aa05988c17aab20886e1f3ae33a40223c58d92ef7" dependencies = [ "getrandom 0.3.1", ] diff --git a/Cargo.toml b/Cargo.toml index 6a9830d..9cb3aa1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ serde_yaml = { version = "0.9.34", default-features = false } thiserror = { version = "2.0.11", default-features = false } tiktoken-rs = { version = "0.6.0", default-features = false } tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } -uuid = { version = "1.14.0", default-features = false, features = ["v4"] } +uuid = { version = "1.15.0", default-features = false, features = ["v4"] } [dev-dependencies] assert_cmd = "2.0.16" From 9782c2e3d0b4c4c218540be29e3f0a66d25c8e17 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 26 Feb 2025 15:46:10 +0000 Subject: [PATCH 113/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.36=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.36](https://github.com/inference-gateway/coder/compare/0.1.4-rc.35...0.1.4-rc.36) (2025-02-26) ### 📦 Miscellaneous * Add optional shell completions feature using clap_complete ([0fcaca0](https://github.com/inference-gateway/coder/commit/0fcaca0d92a1c76f0416645546ddcbfeba34d423)) * Update uuid dependency to version 1.15.0 ([5d61147](https://github.com/inference-gateway/coder/commit/5d6114772a32f70b6058915be72dc70be3e4607c)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e484458..5ee388f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.36](https://github.com/inference-gateway/coder/compare/0.1.4-rc.35...0.1.4-rc.36) (2025-02-26) + +### 📦 Miscellaneous + +* Add optional shell completions feature using clap_complete ([0fcaca0](https://github.com/inference-gateway/coder/commit/0fcaca0d92a1c76f0416645546ddcbfeba34d423)) +* Update uuid dependency to version 1.15.0 ([5d61147](https://github.com/inference-gateway/coder/commit/5d6114772a32f70b6058915be72dc70be3e4607c)) + ## [0.1.4-rc.35](https://github.com/inference-gateway/coder/compare/0.1.4-rc.34...0.1.4-rc.35) (2025-02-26) ### ⚡️ Improvements diff --git a/Cargo.lock b/Cargo.lock index b05efd9..156f838 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.35" +version = "0.1.4-rc.36" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 9cb3aa1..db786fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.35" +version = "0.1.4-rc.36" edition = "2021" [features] From 05ce42ae118873bd8ff47d470c145595cbb58ca1 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 16:31:59 +0000 Subject: [PATCH 114/174] build: Import CommandFactory for optional completions feature Signed-off-by: Eden Reich --- src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.rs b/src/main.rs index f05c727..0a3e761 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ use crate::cli::{Cli, Commands}; use crate::errors::CoderError; +#[cfg(feature = "completions")] +use clap::CommandFactory; use clap::Parser; #[cfg(feature = "completions")] use clap_complete::generate; From 3abdba05e967435573662996bf7c7c6ff7601703 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:17:56 +0000 Subject: [PATCH 115/174] build: Remove unnecessary image creation label from release workflow - it revalidating the cache on each run Signed-off-by: Eden Reich --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f48aa59..83889d3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -265,7 +265,6 @@ jobs: --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ - --label="org.opencontainers.image.created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ --label="org.opencontainers.image.version=${{ env.VERSION }}" \ --label="org.opencontainers.image.revision=${{ github.sha }}" \ --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ From 72a5c91dc2b47de06f48d1b469a6e4b39082d7aa Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:35:04 +0000 Subject: [PATCH 116/174] build: Simplify Dockerfile by removing cache mounts from cargo commands Those are only valid for buildx, not needed for kaniko. Signed-off-by: Eden Reich --- Dockerfile | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index f347c9a..7ced803 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,19 +33,13 @@ ENV CC=clang \ PATH="/root/.cargo/bin:${PATH}" COPY --from=planner /app/recipe.json recipe.json -RUN --mount=type=cache,target=/root/.cargo/registry \ - --mount=type=cache,target=/root/.cargo/git \ - --mount=type=cache,target=/app/target \ - cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json +RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json FROM cacher AS builder ARG TARGET_ARCH COPY src ./src COPY --from=cacher /app/target /app/target -RUN --mount=type=cache,target=/root/.cargo/registry \ - --mount=type=cache,target=/root/.cargo/git \ - --mount=type=cache,target=/app/target \ - cargo build --release --jobs $(nproc) --target ${TARGET_ARCH} +RUN cargo build --release --jobs $(nproc) --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal ARG TARGET_ARCH From c78b91c1053e9de07fa6d334c7b30384d9ba7b3b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:36:30 +0000 Subject: [PATCH 117/174] build: Update release workflow and Taskfile for improved cached container build process Signed-off-by: Eden Reich --- .github/workflows/release.yml | 3 +-- Taskfile.yaml | 50 ++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83889d3..d7caec7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -277,5 +277,4 @@ jobs: --cache=true \ --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ --cache-ttl=336h \ - --compressed-caching=true \ - --snapshot-mode=redo + --compressed-caching=true diff --git a/Taskfile.yaml b/Taskfile.yaml index 5fea7b8..eaf21a4 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -34,12 +34,14 @@ tasks: build-container: desc: Run the release container command locally vars: - GITHUB_USER: - sh: echo edenreich - GITHUB_TOKEN: - sh: echo ${GITHUB_TOKEN} - ORG_NAME: - sh: echo inference-gateway + GITHUB_USER: edenreich + GITHUB_TOKEN: ${GITHUB_TOKEN} + REPOSITORY_OWNER: inference-gateway + REPOSITORY_NAME: coder + ORG_NAME: inference-gateway + TARGET: aarch64-unknown-linux-musl + VERSION: local + CONTAINER_REGISTRY: ghcr.io cmds: - mkdir -p $(pwd)/kaniko/cache - mkdir -p $(pwd)/kaniko/.docker @@ -63,16 +65,28 @@ tasks: -v $(pwd)/kaniko/cache:/cache \ -v $(pwd)/kaniko/.docker:/kaniko/.docker \ -w /workspace \ + --entrypoint="" \ gcr.io/kaniko-project/executor:v1.23.2-debug \ - --context=. \ - --dockerfile=Dockerfile \ - --target=minimal \ - --build-arg=TARGET_ARCH=aarch64-unknown-linux-musl \ - --no-push \ - --tar-path=/workspace/artifacts/my-image.tar \ - --cache=true \ - --cache-repo=ghcr.io/{{.ORG_NAME}}/coder-cache \ - --cache-ttl=336h \ - --compressed-caching=true \ - --snapshot-mode=redo \ - --use-new-run + /kaniko/executor \ + --context=. \ + --dockerfile=Dockerfile \ + --target=minimal \ + --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:latest \ + --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:minimal \ + --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:minimal-{{.VERSION}} \ + --build-arg=TARGET_ARCH={{.TARGET}} \ + --label="org.opencontainers.image.version={{.VERSION}}" \ + --label="org.opencontainers.image.revision=" \ + --label="org.opencontainers.image.source=" \ + --label="org.opencontainers.image.url=" \ + --label="org.opencontainers.image.documentation=" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=" \ + --no-push \ + --tar-path=/workspace/artifacts/my-image.tar \ + --cache=true \ + --cache-repo={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}/cache-{{.TARGET}}-local \ + --cache-ttl=336h \ + --compressed-caching=true From a8f629609bbec47e645db0ac47a6acde1483ebc6 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:44:27 +0000 Subject: [PATCH 118/174] build: Add workflow step to sign container images with GitHub OIDC Signed-off-by: Eden Reich --- .github/workflows/release.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d7caec7..a034b31 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -278,3 +278,37 @@ jobs: --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ --cache-ttl=336h \ --compressed-caching=true + + sign_containers: + name: Sign Container Images + needs: [github_release, build_containers] + if: needs.github_release.outputs.new_release_published == 'true' + runs-on: ubuntu-24.04 + permissions: + packages: write + id-token: write # needed for signing the images with GitHub OIDC Token + contents: read + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + steps: + - name: Install cosign + uses: sigstore/cosign-installer@v3.8.1 + with: + cosign-release: "v2.4.3" + + - name: Sign container images with GitHub OIDC + run: | + # Sign minimal image + cosign sign --yes \ + ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} + + # Sign latest tag + cosign sign --yes \ + ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest + + # Sign minimal tag + cosign sign --yes \ + ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal From bbee100d993d2aab9353f16ce1b063cf2e26210c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:45:54 +0000 Subject: [PATCH 119/174] build: Increase timeout for B&P Containers job in release workflow Until I buy raspberry pi 5 the cores for compiling of the A72 cortex is pretty much limited in speed. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a034b31..a61dc8d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,7 +219,7 @@ jobs: name: B&P Containers needs: github_release if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 45 + timeout-minutes: 65 permissions: packages: write strategy: From f0aa8e8f8c75949503715b9017786242a075b0cc Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 19:49:06 +0000 Subject: [PATCH 120/174] build: Use consistent style Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a61dc8d..71625c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -101,7 +101,8 @@ jobs: # build_binaries: # name: Build static binaries - # needs: github_release + # needs: + # - github_release # if: needs.github_release.outputs.new_release_published == 'true' # timeout-minutes: 15 # permissions: @@ -217,7 +218,8 @@ jobs: build_containers: name: B&P Containers - needs: github_release + needs: + - github_release if: needs.github_release.outputs.new_release_published == 'true' timeout-minutes: 65 permissions: @@ -281,7 +283,9 @@ jobs: sign_containers: name: Sign Container Images - needs: [github_release, build_containers] + needs: + - github_release + - build_containers if: needs.github_release.outputs.new_release_published == 'true' runs-on: ubuntu-24.04 permissions: From b28e28a4c4ab8d3e8928d93c047ef3846b0bf681 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 26 Feb 2025 19:53:26 +0000 Subject: [PATCH 121/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.37=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.37](https://github.com/inference-gateway/coder/compare/0.1.4-rc.36...0.1.4-rc.37) (2025-02-26) ### 📦 Miscellaneous * Add workflow step to sign container images with GitHub OIDC ([a8f6296](https://github.com/inference-gateway/coder/commit/a8f629609bbec47e645db0ac47a6acde1483ebc6)) * Import CommandFactory for optional completions feature ([05ce42a](https://github.com/inference-gateway/coder/commit/05ce42ae118873bd8ff47d470c145595cbb58ca1)) * Increase timeout for B&P Containers job in release workflow ([bbee100](https://github.com/inference-gateway/coder/commit/bbee100d993d2aab9353f16ce1b063cf2e26210c)) * Remove unnecessary image creation label from release workflow - it revalidating the cache on each run ([3abdba0](https://github.com/inference-gateway/coder/commit/3abdba05e967435573662996bf7c7c6ff7601703)) * Simplify Dockerfile by removing cache mounts from cargo commands ([72a5c91](https://github.com/inference-gateway/coder/commit/72a5c91dc2b47de06f48d1b469a6e4b39082d7aa)) * Update release workflow and Taskfile for improved cached container build process ([c78b91c](https://github.com/inference-gateway/coder/commit/c78b91c1053e9de07fa6d334c7b30384d9ba7b3b)) * Use consistent style ([f0aa8e8](https://github.com/inference-gateway/coder/commit/f0aa8e8f8c75949503715b9017786242a075b0cc)) --- CHANGELOG.md | 12 ++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ee388f..f47cbb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.37](https://github.com/inference-gateway/coder/compare/0.1.4-rc.36...0.1.4-rc.37) (2025-02-26) + +### 📦 Miscellaneous + +* Add workflow step to sign container images with GitHub OIDC ([a8f6296](https://github.com/inference-gateway/coder/commit/a8f629609bbec47e645db0ac47a6acde1483ebc6)) +* Import CommandFactory for optional completions feature ([05ce42a](https://github.com/inference-gateway/coder/commit/05ce42ae118873bd8ff47d470c145595cbb58ca1)) +* Increase timeout for B&P Containers job in release workflow ([bbee100](https://github.com/inference-gateway/coder/commit/bbee100d993d2aab9353f16ce1b063cf2e26210c)) +* Remove unnecessary image creation label from release workflow - it revalidating the cache on each run ([3abdba0](https://github.com/inference-gateway/coder/commit/3abdba05e967435573662996bf7c7c6ff7601703)) +* Simplify Dockerfile by removing cache mounts from cargo commands ([72a5c91](https://github.com/inference-gateway/coder/commit/72a5c91dc2b47de06f48d1b469a6e4b39082d7aa)) +* Update release workflow and Taskfile for improved cached container build process ([c78b91c](https://github.com/inference-gateway/coder/commit/c78b91c1053e9de07fa6d334c7b30384d9ba7b3b)) +* Use consistent style ([f0aa8e8](https://github.com/inference-gateway/coder/commit/f0aa8e8f8c75949503715b9017786242a075b0cc)) + ## [0.1.4-rc.36](https://github.com/inference-gateway/coder/compare/0.1.4-rc.35...0.1.4-rc.36) (2025-02-26) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index 156f838..f9a8fd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.36" +version = "0.1.4-rc.37" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index db786fc..c1bfde7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.36" +version = "0.1.4-rc.37" edition = "2021" [features] From 0aa9428edbf477024e042919abe2fee4ceb7d130 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Wed, 26 Feb 2025 23:01:57 +0000 Subject: [PATCH 122/174] build: Enhance GitHub Actions workflow for container signing and caching Signed-off-by: Eden Reich --- .github/workflows/release.yml | 36 ++++++++++++++++++++++++----------- Taskfile.yaml | 6 +++++- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71625c4..16ca5c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -239,7 +239,7 @@ jobs: options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 runs-on: ${{ matrix.os }} steps: - - name: Authenticate with GHCR + - name: Login to GitHub Container Registry run: | mkdir -p /kaniko/.docker cat << EOF > /kaniko/.docker/config.json @@ -259,6 +259,7 @@ jobs: CONTAINER_REGISTRY: ghcr.io VERSION: ${{ needs.github_release.outputs.new_release_version }} run: | + echo "Available cores: $(nproc)" /kaniko/executor \ --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile \ @@ -279,7 +280,11 @@ jobs: --cache=true \ --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ --cache-ttl=336h \ - --compressed-caching=true + --compressed-caching=true \ + --snapshot-mode=redo \ + --use-new-run \ + --ignore-path=".git" \ + --skip-unused-stages \ sign_containers: name: Sign Container Images @@ -303,16 +308,25 @@ jobs: with: cosign-release: "v2.4.3" + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Sign container images with GitHub OIDC run: | - # Sign minimal image - cosign sign --yes \ - ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} + # Get digests for the images + VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) + LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) + MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) - # Sign latest tag - cosign sign --yes \ - ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest + echo "Signing image digest: $VERSION_DIGEST" + echo "Signing image digest: $LATEST_DIGEST" + echo "Signing image digest: $MINIMAL_DIGEST" - # Sign minimal tag - cosign sign --yes \ - ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal + # Sign using digests instead of tags + cosign sign --yes $VERSION_DIGEST + cosign sign --yes $LATEST_DIGEST + cosign sign --yes $MINIMAL_DIGEST diff --git a/Taskfile.yaml b/Taskfile.yaml index eaf21a4..d6af569 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -89,4 +89,8 @@ tasks: --cache=true \ --cache-repo={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}/cache-{{.TARGET}}-local \ --cache-ttl=336h \ - --compressed-caching=true + --compressed-caching=true \ + --snapshot-mode=redo \ + --use-new-run \ + --ignore-path=".git" \ + --skip-unused-stages \ From 7615d061283f1f1e50e8788ccb9371a0d9af68ce Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 10:44:31 +0000 Subject: [PATCH 123/174] build: Iterate faster on the release workflow - temporarily Signed-off-by: Eden Reich --- .github/workflows/release.yml | 8 +- src/main.rs | 441 +--------------------------------- src/main2.rs | 440 +++++++++++++++++++++++++++++++++ 3 files changed, 446 insertions(+), 443 deletions(-) create mode 100644 src/main2.rs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 16ca5c9..53b33e3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -230,10 +230,10 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - os: - - self-hosted - - k8s - target: aarch64-unknown-linux-musl + # - os: + # - self-hosted + # - k8s + # target: aarch64-unknown-linux-musl container: image: gcr.io/kaniko-project/executor:v1.23.2-debug options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 diff --git a/src/main.rs b/src/main.rs index 0a3e761..e7a11a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,440 +1,3 @@ -use crate::cli::{Cli, Commands}; -use crate::errors::CoderError; -#[cfg(feature = "completions")] -use clap::CommandFactory; -use clap::Parser; -#[cfg(feature = "completions")] -use clap_complete::generate; -use conversation::Conversation; -use inference_gateway_sdk::{ - InferenceGatewayAPI, InferenceGatewayClient, Message, MessageRole, Provider, -}; -use log::{debug, info, warn}; -use std::{env, fs, panic, path::Path, str::FromStr, thread::sleep, time::Duration}; - -mod cli; -mod config; -mod conversation; -mod errors; -mod index; -mod tools; -mod utils; - -fn setup_panic_handler(conversation: Conversation) { - let default_hook = panic::take_hook(); - panic::set_hook(Box::new(move |panic_info| { - info!("{:?}", conversation); - - default_hook(panic_info); - })); -} - -fn init() -> Result<(), CoderError> { - info!("Initializing AI Coder agent..."); - let coder_dir = Path::new(".coder"); - fs::create_dir_all(coder_dir)?; - info!("Created .coder directory"); - fs::write(coder_dir.join("config.yaml"), config::default_config())?; - - let gitignore_path = Path::new(".gitignore"); - let gitignore_content = if gitignore_path.exists() { - let mut content = fs::read_to_string(gitignore_path)?; - if !content.contains(".coder") { - if !content.ends_with('\n') { - content.push('\n'); - } - content.push_str(".coder\n"); - } - content - } else { - ".coder\n".to_string() - }; - fs::write(gitignore_path, gitignore_content)?; - - Ok(()) -} - -#[tokio::main] -async fn main() -> Result<(), CoderError> { - if env::var("RUST_LOG").is_err() { - env::set_var("RUST_LOG", "info"); - } - env_logger::init(); - - let tools = tools::get_tools(); - let cli = Cli::parse(); - - if let Commands::Init {} = cli.command { - return init(); - } - - let coder_dir = Path::new(".coder"); - let config_path = coder_dir.join("config.yaml"); - if !coder_dir.exists() { - return Err(CoderError::ConfigError( - "'.coder' directory not found. Run 'coder init' first to initialize the project" - .to_string(), - )); - } - - let config = config::load(&config_path)?; - - debug!("Config: {:#?}", config); - - let model = &config.agent.model; - let provider = Provider::try_from(config.agent.provider.as_str())?; - - match cli.command { - #[cfg(feature = "completions")] - Commands::Completions { shell } => { - generate(shell, &mut Cli::command(), "coder", &mut std::io::stdout()); - return Ok(()); - } - Commands::Init {} => { - return init(); - } - Commands::Index {} => { - info!("Indexing files..."); - let coder_dir = Path::new(".coder"); - fs::create_dir_all(coder_dir)?; - - let tree = index::build_tree()?; - let content = index::build_content()?; - - let index_content = format!( - "---\n# AI Coder Index Configuration\n\ntree: |\n{}\n{}", - tree.lines() - .map(|line| format!(" {}", line)) - .collect::>() - .join("\n"), - content - ); - - fs::write(coder_dir.join("index.yaml"), index_content)?; - info!("Created index at .coder/index.yaml"); - } - Commands::Fix { - issue, - further_instruction, - } => { - info!("Fixing issue #{}...", issue); - info!("Further instructions: {:?}", further_instruction); - - let client = InferenceGatewayClient::new(&config.api.endpoint) - .with_max_tokens(Some(900)) - .with_tools(Some(tools)); - - let mut convo = - Conversation::new(model.to_string(), provider.clone(), config.agent.max_tokens); - - setup_panic_handler(convo.clone()); - - let system_prompt = format!( - r#"You are a senior software engineer specializing in {language} development working to fix an issue reported in {scm}. - -When you need to call a tool, don't answer in XML. - -WORKSPACE: -{tree} - -CHANGES SCOPE: -The changes you are allowed to make are limited to playground/bug1 directory. - -PROCESS: -1. Validate issue #{issue} [tool: issue_validate] -2. Pull issue details [tool: issue_pull] -3. Analyze code and documentation [tool: code_read] -4. Implement a fix [tool: code_write] -5. Validate changes, only if you made changes to the code: - - Lint code [tool: code_lint] - - Run analysis [tool: code_analyse] - - Run tests [tool: code_test] -6. Create {scm} pull request [pull_request] -7. Call "done" when complete [done] - -When you execute a tool, the following output would be provided in JSON format: - -```json -{{ - "status": "ok", - "message": "tool_message", - "result": "tool_result" - "retry": false -}} -``` - -When retry is set to true, that means you need to re-run the tool with the provided arguments, ensure you send valid JSON. -When the tool result is empty, it means the tool did not find any issues. -If it's not empty, review the issue and fix it accordingly. - -Focus on producing working solutions with minimal discussion. Do not ask questions. Provide a complete solution."#, - language = config.language.name, - scm = config.scm.name, - tree = index::build_tree()?, - issue = issue, - ); - - convo.add_message(Message { - role: MessageRole::System, - content: system_prompt, - ..Default::default() - }); - - convo.add_message(Message { - role: MessageRole::User, - content: format!("Please fix the issue #{} - first pull it before jumping to conclusions. Just fix it, do not explain.", issue), - ..Default::default() - }); - - let timeout = Duration::from_secs(300); - info!("Starting AI Coder agent..."); - info!("Press Ctrl+C to stop the agent."); - 'outer: loop { - if timeout.as_secs() == 0 { - warn!("Timeout reached. Exiting..."); - break; - } - - let resp: inference_gateway_sdk::GenerateResponse = client - .generate_content(provider.clone(), model, convo.clone().try_into()?) - .await?; - - let response = resp.response; - - let assistant_message = utils::strip_thinking(&response.content); - if assistant_message.is_none() { - warn!("Assistant message is empty. Exiting..."); - break; - } - - let assistant_message = assistant_message.unwrap().trim().to_string(); - - convo.add_message(Message { - role: MessageRole::Assistant, - content: assistant_message.clone(), - ..Default::default() - }); - - info!("Assistant: {}", assistant_message); - info!("Current tokens usage: {}", convo.get_current_tokens()?); - - if response.tool_calls.is_some() { - for tool_call in response.tool_calls.unwrap() { - let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; - let args = tool_call.function.arguments.as_str(); - let tool_result = tools::handle_tool_calls(&tool, args, &config).await; - if tool_result.is_err() { - warn!("Tool failed to execute. Exiting..."); - let tool_message = Message { - role: MessageRole::Tool, - content: tool_result.unwrap_err().to_string(), - tool_call_id: Some(tool_call.id), - }; - let user_message = Message { - role: MessageRole::User, - content: - "Something went wrong can you retry it? maybe take a step back." - .to_string(), - ..Default::default() - }; - debug!("Tool message(faliure): {:?}", tool_message); - debug!("User message(faliure): {:?}", user_message); - convo.add_message(tool_message); - convo.add_message(user_message); - continue; - } - - let result = tool_result?; - - debug!("Tool result: {}", result); - - let tool_message = Message { - role: MessageRole::Tool, - content: result.to_string(), - tool_call_id: Some(tool_call.id), - }; - - let tool_result_struct: tools::StatusResponse = - serde_json::from_value(result)?; - - if tool_result_struct.message == Some("Task completed".to_string()) { - info!("Task completed. Exiting..."); - break 'outer; - } - - let mut user_message = Message { - role: MessageRole::User, - content: "Let's proceed to the next step.".to_string(), - ..Default::default() - }; - if tool_result_struct.retry { - warn!("Tool requires retry. Exiting..."); - user_message = Message { - role: MessageRole::User, - content: "Something went wrong can you retry it?".to_string(), - ..Default::default() - }; - } - - debug!("Tool message: {:?}", tool_message); - debug!("User message: {:?}", user_message); - convo.add_message(tool_message); - convo.add_message(user_message); - } - } - - info!("Iteration completed. Developer is taking a coffee break due to rate-limiting.."); - - sleep(Duration::from_secs(60)); - } - } - Commands::Refactor { file } => { - match file { - Some(path) => info!("Refactoring file: {}", path), - None => info!("Refactoring entire project..."), - } - - let client = InferenceGatewayClient::new(&config.api.endpoint) - .with_max_tokens(Some(900)) - .with_tools(Some(tools)); - - let mut convo = Conversation::new( - config.agent.model.to_string(), - provider.clone(), - config.agent.max_tokens, - ); - - setup_panic_handler(convo.clone()); - - let system_prompt = format!( - r#"You are a senior software engineer specializing in Rust development. Your task is to refactor the code based on the provided code snippet. Keep your answers short and consice. Do not ask questions back. - -WORKSPACE INFO: - -{} - -WORKFLOW: -1. Read the provided file content -2. Analyse the code -3. Lint the code -4. Test the code -5. Refactor the code -6. Test the code again -7. Finally, create a GitHub Pull Request - -"#, - index::build_tree()?, - ); - - convo.add_message(Message { - role: MessageRole::System, - content: system_prompt, - ..Default::default() - }); - - convo.add_message(Message { - role: MessageRole::User, - content: "I need help refactoring this code snippet".to_string(), - ..Default::default() - }); - - let timeout = Duration::from_secs(300); - info!("Starting AI Coder agent..."); - info!("Press Ctrl+C to stop the agent."); - loop { - if timeout.as_secs() == 0 { - warn!("Timeout reached. Exiting..."); - break; - } - - let resp: inference_gateway_sdk::GenerateResponse = client - .generate_content( - provider.clone(), - config.agent.model.as_str(), - convo.clone().try_into()?, - ) - .await?; - - let response = resp.response; - - let assistant_message = utils::strip_thinking(&response.content); - if assistant_message.is_none() { - warn!("Assistant message is empty. Exiting..."); - break; - } - - let assistant_message = assistant_message.unwrap().trim().to_string(); - - convo.add_message(Message { - role: MessageRole::Assistant, - content: assistant_message.clone(), - ..Default::default() - }); - - info!("Assistant: {}", assistant_message); - - if response.tool_calls.is_some() { - for tool_call in response.tool_calls.unwrap() { - let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; - let args = tool_call.function.arguments.as_str(); - let tool_result = tools::handle_tool_calls(&tool, args, &config).await?; - - convo.add_message(Message { - role: MessageRole::Tool, - content: tool_result.to_string(), - tool_call_id: Some(tool_call.id), - }); - } - } - } - } - } - - Ok(()) -} - -#[cfg(test)] -mod tests { - use assert_cmd::Command; - use assert_fs::prelude::*; - use log::LevelFilter; - use predicates::prelude::*; - use std::fs; - - use crate::config; - - #[test] - fn test_init_command() { - let _ = env_logger::builder() - .filter_level(LevelFilter::Info) - .is_test(true) - .try_init(); - - let temp_dir = assert_fs::TempDir::new().unwrap(); - - let mut cmd = Command::cargo_bin("coder").unwrap(); - let assert = cmd.current_dir(&temp_dir).arg("init").assert(); - - assert - .success() - .stderr(predicate::str::contains("Initializing AI Coder agent")) - .stderr(predicate::str::contains("Created .coder directory")); - - let config_file = temp_dir.child(".coder/config.yaml"); - config_file.assert(predicate::path::exists()); - config_file.assert(predicate::str::contains(config::default_config())); - - let gitignore_path = temp_dir.join(".gitignore"); - assert!(fs::write(&gitignore_path, ".coder\n").is_ok()); - - let gitignore = temp_dir.child(".gitignore"); - gitignore.assert(predicate::path::exists()); - gitignore.assert(predicate::str::contains(".coder")); - - let content = fs::read_to_string(&gitignore_path).unwrap(); - assert!( - content.contains(".coder"), - "'.coder' entry missing from .gitignore" - ); - } +fn main() { + println!("Hello, world!"); } diff --git a/src/main2.rs b/src/main2.rs new file mode 100644 index 0000000..0a3e761 --- /dev/null +++ b/src/main2.rs @@ -0,0 +1,440 @@ +use crate::cli::{Cli, Commands}; +use crate::errors::CoderError; +#[cfg(feature = "completions")] +use clap::CommandFactory; +use clap::Parser; +#[cfg(feature = "completions")] +use clap_complete::generate; +use conversation::Conversation; +use inference_gateway_sdk::{ + InferenceGatewayAPI, InferenceGatewayClient, Message, MessageRole, Provider, +}; +use log::{debug, info, warn}; +use std::{env, fs, panic, path::Path, str::FromStr, thread::sleep, time::Duration}; + +mod cli; +mod config; +mod conversation; +mod errors; +mod index; +mod tools; +mod utils; + +fn setup_panic_handler(conversation: Conversation) { + let default_hook = panic::take_hook(); + panic::set_hook(Box::new(move |panic_info| { + info!("{:?}", conversation); + + default_hook(panic_info); + })); +} + +fn init() -> Result<(), CoderError> { + info!("Initializing AI Coder agent..."); + let coder_dir = Path::new(".coder"); + fs::create_dir_all(coder_dir)?; + info!("Created .coder directory"); + fs::write(coder_dir.join("config.yaml"), config::default_config())?; + + let gitignore_path = Path::new(".gitignore"); + let gitignore_content = if gitignore_path.exists() { + let mut content = fs::read_to_string(gitignore_path)?; + if !content.contains(".coder") { + if !content.ends_with('\n') { + content.push('\n'); + } + content.push_str(".coder\n"); + } + content + } else { + ".coder\n".to_string() + }; + fs::write(gitignore_path, gitignore_content)?; + + Ok(()) +} + +#[tokio::main] +async fn main() -> Result<(), CoderError> { + if env::var("RUST_LOG").is_err() { + env::set_var("RUST_LOG", "info"); + } + env_logger::init(); + + let tools = tools::get_tools(); + let cli = Cli::parse(); + + if let Commands::Init {} = cli.command { + return init(); + } + + let coder_dir = Path::new(".coder"); + let config_path = coder_dir.join("config.yaml"); + if !coder_dir.exists() { + return Err(CoderError::ConfigError( + "'.coder' directory not found. Run 'coder init' first to initialize the project" + .to_string(), + )); + } + + let config = config::load(&config_path)?; + + debug!("Config: {:#?}", config); + + let model = &config.agent.model; + let provider = Provider::try_from(config.agent.provider.as_str())?; + + match cli.command { + #[cfg(feature = "completions")] + Commands::Completions { shell } => { + generate(shell, &mut Cli::command(), "coder", &mut std::io::stdout()); + return Ok(()); + } + Commands::Init {} => { + return init(); + } + Commands::Index {} => { + info!("Indexing files..."); + let coder_dir = Path::new(".coder"); + fs::create_dir_all(coder_dir)?; + + let tree = index::build_tree()?; + let content = index::build_content()?; + + let index_content = format!( + "---\n# AI Coder Index Configuration\n\ntree: |\n{}\n{}", + tree.lines() + .map(|line| format!(" {}", line)) + .collect::>() + .join("\n"), + content + ); + + fs::write(coder_dir.join("index.yaml"), index_content)?; + info!("Created index at .coder/index.yaml"); + } + Commands::Fix { + issue, + further_instruction, + } => { + info!("Fixing issue #{}...", issue); + info!("Further instructions: {:?}", further_instruction); + + let client = InferenceGatewayClient::new(&config.api.endpoint) + .with_max_tokens(Some(900)) + .with_tools(Some(tools)); + + let mut convo = + Conversation::new(model.to_string(), provider.clone(), config.agent.max_tokens); + + setup_panic_handler(convo.clone()); + + let system_prompt = format!( + r#"You are a senior software engineer specializing in {language} development working to fix an issue reported in {scm}. + +When you need to call a tool, don't answer in XML. + +WORKSPACE: +{tree} + +CHANGES SCOPE: +The changes you are allowed to make are limited to playground/bug1 directory. + +PROCESS: +1. Validate issue #{issue} [tool: issue_validate] +2. Pull issue details [tool: issue_pull] +3. Analyze code and documentation [tool: code_read] +4. Implement a fix [tool: code_write] +5. Validate changes, only if you made changes to the code: + - Lint code [tool: code_lint] + - Run analysis [tool: code_analyse] + - Run tests [tool: code_test] +6. Create {scm} pull request [pull_request] +7. Call "done" when complete [done] + +When you execute a tool, the following output would be provided in JSON format: + +```json +{{ + "status": "ok", + "message": "tool_message", + "result": "tool_result" + "retry": false +}} +``` + +When retry is set to true, that means you need to re-run the tool with the provided arguments, ensure you send valid JSON. +When the tool result is empty, it means the tool did not find any issues. +If it's not empty, review the issue and fix it accordingly. + +Focus on producing working solutions with minimal discussion. Do not ask questions. Provide a complete solution."#, + language = config.language.name, + scm = config.scm.name, + tree = index::build_tree()?, + issue = issue, + ); + + convo.add_message(Message { + role: MessageRole::System, + content: system_prompt, + ..Default::default() + }); + + convo.add_message(Message { + role: MessageRole::User, + content: format!("Please fix the issue #{} - first pull it before jumping to conclusions. Just fix it, do not explain.", issue), + ..Default::default() + }); + + let timeout = Duration::from_secs(300); + info!("Starting AI Coder agent..."); + info!("Press Ctrl+C to stop the agent."); + 'outer: loop { + if timeout.as_secs() == 0 { + warn!("Timeout reached. Exiting..."); + break; + } + + let resp: inference_gateway_sdk::GenerateResponse = client + .generate_content(provider.clone(), model, convo.clone().try_into()?) + .await?; + + let response = resp.response; + + let assistant_message = utils::strip_thinking(&response.content); + if assistant_message.is_none() { + warn!("Assistant message is empty. Exiting..."); + break; + } + + let assistant_message = assistant_message.unwrap().trim().to_string(); + + convo.add_message(Message { + role: MessageRole::Assistant, + content: assistant_message.clone(), + ..Default::default() + }); + + info!("Assistant: {}", assistant_message); + info!("Current tokens usage: {}", convo.get_current_tokens()?); + + if response.tool_calls.is_some() { + for tool_call in response.tool_calls.unwrap() { + let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; + let args = tool_call.function.arguments.as_str(); + let tool_result = tools::handle_tool_calls(&tool, args, &config).await; + if tool_result.is_err() { + warn!("Tool failed to execute. Exiting..."); + let tool_message = Message { + role: MessageRole::Tool, + content: tool_result.unwrap_err().to_string(), + tool_call_id: Some(tool_call.id), + }; + let user_message = Message { + role: MessageRole::User, + content: + "Something went wrong can you retry it? maybe take a step back." + .to_string(), + ..Default::default() + }; + debug!("Tool message(faliure): {:?}", tool_message); + debug!("User message(faliure): {:?}", user_message); + convo.add_message(tool_message); + convo.add_message(user_message); + continue; + } + + let result = tool_result?; + + debug!("Tool result: {}", result); + + let tool_message = Message { + role: MessageRole::Tool, + content: result.to_string(), + tool_call_id: Some(tool_call.id), + }; + + let tool_result_struct: tools::StatusResponse = + serde_json::from_value(result)?; + + if tool_result_struct.message == Some("Task completed".to_string()) { + info!("Task completed. Exiting..."); + break 'outer; + } + + let mut user_message = Message { + role: MessageRole::User, + content: "Let's proceed to the next step.".to_string(), + ..Default::default() + }; + if tool_result_struct.retry { + warn!("Tool requires retry. Exiting..."); + user_message = Message { + role: MessageRole::User, + content: "Something went wrong can you retry it?".to_string(), + ..Default::default() + }; + } + + debug!("Tool message: {:?}", tool_message); + debug!("User message: {:?}", user_message); + convo.add_message(tool_message); + convo.add_message(user_message); + } + } + + info!("Iteration completed. Developer is taking a coffee break due to rate-limiting.."); + + sleep(Duration::from_secs(60)); + } + } + Commands::Refactor { file } => { + match file { + Some(path) => info!("Refactoring file: {}", path), + None => info!("Refactoring entire project..."), + } + + let client = InferenceGatewayClient::new(&config.api.endpoint) + .with_max_tokens(Some(900)) + .with_tools(Some(tools)); + + let mut convo = Conversation::new( + config.agent.model.to_string(), + provider.clone(), + config.agent.max_tokens, + ); + + setup_panic_handler(convo.clone()); + + let system_prompt = format!( + r#"You are a senior software engineer specializing in Rust development. Your task is to refactor the code based on the provided code snippet. Keep your answers short and consice. Do not ask questions back. + +WORKSPACE INFO: + +{} + +WORKFLOW: +1. Read the provided file content +2. Analyse the code +3. Lint the code +4. Test the code +5. Refactor the code +6. Test the code again +7. Finally, create a GitHub Pull Request + +"#, + index::build_tree()?, + ); + + convo.add_message(Message { + role: MessageRole::System, + content: system_prompt, + ..Default::default() + }); + + convo.add_message(Message { + role: MessageRole::User, + content: "I need help refactoring this code snippet".to_string(), + ..Default::default() + }); + + let timeout = Duration::from_secs(300); + info!("Starting AI Coder agent..."); + info!("Press Ctrl+C to stop the agent."); + loop { + if timeout.as_secs() == 0 { + warn!("Timeout reached. Exiting..."); + break; + } + + let resp: inference_gateway_sdk::GenerateResponse = client + .generate_content( + provider.clone(), + config.agent.model.as_str(), + convo.clone().try_into()?, + ) + .await?; + + let response = resp.response; + + let assistant_message = utils::strip_thinking(&response.content); + if assistant_message.is_none() { + warn!("Assistant message is empty. Exiting..."); + break; + } + + let assistant_message = assistant_message.unwrap().trim().to_string(); + + convo.add_message(Message { + role: MessageRole::Assistant, + content: assistant_message.clone(), + ..Default::default() + }); + + info!("Assistant: {}", assistant_message); + + if response.tool_calls.is_some() { + for tool_call in response.tool_calls.unwrap() { + let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; + let args = tool_call.function.arguments.as_str(); + let tool_result = tools::handle_tool_calls(&tool, args, &config).await?; + + convo.add_message(Message { + role: MessageRole::Tool, + content: tool_result.to_string(), + tool_call_id: Some(tool_call.id), + }); + } + } + } + } + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use assert_cmd::Command; + use assert_fs::prelude::*; + use log::LevelFilter; + use predicates::prelude::*; + use std::fs; + + use crate::config; + + #[test] + fn test_init_command() { + let _ = env_logger::builder() + .filter_level(LevelFilter::Info) + .is_test(true) + .try_init(); + + let temp_dir = assert_fs::TempDir::new().unwrap(); + + let mut cmd = Command::cargo_bin("coder").unwrap(); + let assert = cmd.current_dir(&temp_dir).arg("init").assert(); + + assert + .success() + .stderr(predicate::str::contains("Initializing AI Coder agent")) + .stderr(predicate::str::contains("Created .coder directory")); + + let config_file = temp_dir.child(".coder/config.yaml"); + config_file.assert(predicate::path::exists()); + config_file.assert(predicate::str::contains(config::default_config())); + + let gitignore_path = temp_dir.join(".gitignore"); + assert!(fs::write(&gitignore_path, ".coder\n").is_ok()); + + let gitignore = temp_dir.child(".gitignore"); + gitignore.assert(predicate::path::exists()); + gitignore.assert(predicate::str::contains(".coder")); + + let content = fs::read_to_string(&gitignore_path).unwrap(); + assert!( + content.contains(".coder"), + "'.coder' entry missing from .gitignore" + ); + } +} From 15e406ed3a925fcea1ebd41159bc380cf60481ed Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 10:55:51 +0000 Subject: [PATCH 124/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.38=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.38](https://github.com/inference-gateway/coder/compare/0.1.4-rc.37...0.1.4-rc.38) (2025-02-27) ### 📦 Miscellaneous * Enhance GitHub Actions workflow for container signing and caching ([0aa9428](https://github.com/inference-gateway/coder/commit/0aa9428edbf477024e042919abe2fee4ceb7d130)) * Iterate faster on the release workflow - temporarily ([7615d06](https://github.com/inference-gateway/coder/commit/7615d061283f1f1e50e8788ccb9371a0d9af68ce)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f47cbb4..6557cc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.38](https://github.com/inference-gateway/coder/compare/0.1.4-rc.37...0.1.4-rc.38) (2025-02-27) + +### 📦 Miscellaneous + +* Enhance GitHub Actions workflow for container signing and caching ([0aa9428](https://github.com/inference-gateway/coder/commit/0aa9428edbf477024e042919abe2fee4ceb7d130)) +* Iterate faster on the release workflow - temporarily ([7615d06](https://github.com/inference-gateway/coder/commit/7615d061283f1f1e50e8788ccb9371a0d9af68ce)) + ## [0.1.4-rc.37](https://github.com/inference-gateway/coder/compare/0.1.4-rc.36...0.1.4-rc.37) (2025-02-26) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index f9a8fd6..7d64c50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.37" +version = "0.1.4-rc.38" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index c1bfde7..a866b19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.37" +version = "0.1.4-rc.38" edition = "2021" [features] From 8698c7faec6b8f4d147e9ea1c7ef77ebd454b726 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:00:42 +0000 Subject: [PATCH 125/174] build: Add Rust toolchain setup and update checkout step in CI workflow Signed-off-by: Eden Reich --- .github/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d81af1d..47bfd6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,15 @@ jobs: name: Build steps: - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + persist-credentials: false + + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1.11.0 + with: + toolchain: stable + components: rustfmt, clippy - name: Cache Rust dependencies uses: actions/cache@v4 From 3b5cc33f2a02cedb6e0dd2836bbb49b9be148307 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:07:14 +0000 Subject: [PATCH 126/174] build: Update uuid dependency to version 1.15.1 Signed-off-by: Eden Reich --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7d64c50..ed8edf1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2243,9 +2243,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8dcafa1ca14750d8d7a05aa05988c17aab20886e1f3ae33a40223c58d92ef7" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1", ] diff --git a/Cargo.toml b/Cargo.toml index a866b19..18b76ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ serde_yaml = { version = "0.9.34", default-features = false } thiserror = { version = "2.0.11", default-features = false } tiktoken-rs = { version = "0.6.0", default-features = false } tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } -uuid = { version = "1.15.0", default-features = false, features = ["v4"] } +uuid = { version = "1.15.1", default-features = false, features = ["v4"] } [dev-dependencies] assert_cmd = "2.0.16" From d3068ecd8b119bc734f1a61127bfbe8fd637f72c Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:10:54 +0000 Subject: [PATCH 127/174] build: Add image pulling step before signing container images in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 53b33e3..86d9ebc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -317,6 +317,11 @@ jobs: - name: Sign container images with GitHub OIDC run: | + # Pull the images to sign + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal + # Get digests for the images VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) From a8d501d085d1ed017e72eefa998eb6b99ea5450f Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 11:14:08 +0000 Subject: [PATCH 128/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.39=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.39](https://github.com/inference-gateway/coder/compare/0.1.4-rc.38...0.1.4-rc.39) (2025-02-27) ### 📦 Miscellaneous * Add image pulling step before signing container images in release workflow ([d3068ec](https://github.com/inference-gateway/coder/commit/d3068ecd8b119bc734f1a61127bfbe8fd637f72c)) * Add Rust toolchain setup and update checkout step in CI workflow ([8698c7f](https://github.com/inference-gateway/coder/commit/8698c7faec6b8f4d147e9ea1c7ef77ebd454b726)) * Update uuid dependency to version 1.15.1 ([3b5cc33](https://github.com/inference-gateway/coder/commit/3b5cc33f2a02cedb6e0dd2836bbb49b9be148307)) --- CHANGELOG.md | 8 ++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6557cc6..3a507a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.39](https://github.com/inference-gateway/coder/compare/0.1.4-rc.38...0.1.4-rc.39) (2025-02-27) + +### 📦 Miscellaneous + +* Add image pulling step before signing container images in release workflow ([d3068ec](https://github.com/inference-gateway/coder/commit/d3068ecd8b119bc734f1a61127bfbe8fd637f72c)) +* Add Rust toolchain setup and update checkout step in CI workflow ([8698c7f](https://github.com/inference-gateway/coder/commit/8698c7faec6b8f4d147e9ea1c7ef77ebd454b726)) +* Update uuid dependency to version 1.15.1 ([3b5cc33](https://github.com/inference-gateway/coder/commit/3b5cc33f2a02cedb6e0dd2836bbb49b9be148307)) + ## [0.1.4-rc.38](https://github.com/inference-gateway/coder/compare/0.1.4-rc.37...0.1.4-rc.38) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index ed8edf1..80608ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.38" +version = "0.1.4-rc.39" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 18b76ea..5bbb783 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.38" +version = "0.1.4-rc.39" edition = "2021" [features] From b53889fa8267fd3a79da4690969553715c8618fa Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:34:39 +0000 Subject: [PATCH 129/174] build: Uncomment and enable static binary build steps in CI workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 214 +-- Cargo.lock | 2622 --------------------------------- Cargo.toml | 44 +- 3 files changed, 129 insertions(+), 2751 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86d9ebc..9df7171 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,122 +99,122 @@ jobs: exit 1 fi - # build_binaries: - # name: Build static binaries - # needs: - # - github_release - # if: needs.github_release.outputs.new_release_published == 'true' - # timeout-minutes: 15 - # permissions: - # contents: write - # strategy: - # fail-fast: false - # matrix: - # include: - # - os: ubuntu-24.04 - # target: x86_64-unknown-linux-musl - # - os: - # - self-hosted - # - k8s - # - ubuntu-22.04-arm64 - # target: aarch64-unknown-linux-musl - # - os: macos-latest - # target: x86_64-apple-darwin - # - os: macos-latest - # target: aarch64-apple-darwin - # runs-on: ${{ matrix.os }} - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 - # with: - # ref: ${{ github.ref }} - # persist-credentials: false + build_binaries: + name: Build static binaries + needs: + - github_release + if: needs.github_release.outputs.new_release_published == 'true' + timeout-minutes: 15 + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl + - os: + - self-hosted + - k8s + - ubuntu-22.04-arm64 + target: aarch64-unknown-linux-musl + - os: macos-latest + target: x86_64-apple-darwin + - os: macos-latest + target: aarch64-apple-darwin + runs-on: ${{ matrix.os }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + persist-credentials: false - # - name: Update Cargo.toml version - # run: | - # echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" - # if [[ "$RUNNER_OS" == "macOS" ]]; then - # sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - # else - # sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml - # fi + - name: Update Cargo.toml version + run: | + echo "Updating to version ${{ needs.github_release.outputs.new_release_version }}" + if [[ "$RUNNER_OS" == "macOS" ]]; then + sed -i '' "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + else + sed -i "s/^version = .*/version = \"${{ needs.github_release.outputs.new_release_version }}\"/" Cargo.toml + fi - # - name: Install Rust - # uses: actions-rust-lang/setup-rust-toolchain@v1.10.1 - # with: - # toolchain: stable - # override: true + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1.10.1 + with: + toolchain: stable + override: true - # - name: Cache Rust dependencies - # uses: actions/cache@v4 - # with: - # path: | - # ~/.cargo/bin/ - # ~/.cargo/registry/index/ - # ~/.cargo/registry/cache/ - # ~/.cargo/git/db/ - # target/ - # key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} - # restore-keys: | - # ${{ runner.os }}-${{ matrix.target }}-cargo + - name: Cache Rust dependencies + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.target }}-cargo - # - name: Add target ${{ matrix.target }} - # run: rustup target add ${{ matrix.target }} + - name: Add target ${{ matrix.target }} + run: rustup target add ${{ matrix.target }} - # - name: Add build tools for musl target instead of glibc - # if: ${{ !startsWith(matrix.os, 'macos') }} - # run: | - # sudo apt-get update && sudo apt-get install --no-install-recommends -y \ - # curl \ - # ca-certificates \ - # build-essential \ - # clang \ - # llvm \ - # pkg-config \ - # wget \ - # musl-tools \ - # libssl-dev \ - # && sudo rm -rf /var/lib/apt/lists/* \ - # && cd /tmp \ - # && wget https://musl.cc/x86_64-linux-musl-cross.tgz \ - # && wget https://musl.cc/aarch64-linux-musl-cross.tgz \ - # && tar -xzf x86_64-linux-musl-cross.tgz \ - # && tar -xzf aarch64-linux-musl-cross.tgz \ - # && sudo mv x86_64-linux-musl-cross aarch64-linux-musl-cross /opt/ \ - # && rm -rf *.tgz + - name: Add build tools for musl target instead of glibc + if: ${{ !startsWith(matrix.os, 'macos') }} + run: | + sudo apt-get update && sudo apt-get install --no-install-recommends -y \ + curl \ + ca-certificates \ + build-essential \ + clang \ + llvm \ + pkg-config \ + wget \ + musl-tools \ + libssl-dev \ + && sudo rm -rf /var/lib/apt/lists/* \ + && cd /tmp \ + && wget https://musl.cc/x86_64-linux-musl-cross.tgz \ + && wget https://musl.cc/aarch64-linux-musl-cross.tgz \ + && tar -xzf x86_64-linux-musl-cross.tgz \ + && tar -xzf aarch64-linux-musl-cross.tgz \ + && sudo mv x86_64-linux-musl-cross aarch64-linux-musl-cross /opt/ \ + && rm -rf *.tgz - # - name: Build binary for ${{ matrix.target }} - # if: ${{ !startsWith(matrix.os, 'macos') }} - # env: - # PKG_CONFIG_ALLOW_CROSS: 1 - # RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" - # CC: clang - # AR: llvm-ar - # OPENSSL_DIR: /usr - # OPENSSL_LIB_DIR: /usr/lib - # OPENSSL_INCLUDE_DIR: /usr/include - # OPENSSL_STATIC: 1 - # run: | - # cargo build --release --no-default-features --target ${{ matrix.target }} + - name: Build binary for ${{ matrix.target }} + if: ${{ !startsWith(matrix.os, 'macos') }} + env: + PKG_CONFIG_ALLOW_CROSS: 1 + RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" + CC: clang + AR: llvm-ar + OPENSSL_DIR: /usr + OPENSSL_LIB_DIR: /usr/lib + OPENSSL_INCLUDE_DIR: /usr/include + OPENSSL_STATIC: 1 + run: | + cargo build --release --no-default-features --target ${{ matrix.target }} - # - name: Build binary for ${{ matrix.target }} - # if: ${{ startsWith(matrix.os, 'macos') }} - # env: - # RUSTFLAGS: "-C target-feature=+crt-static" - # run: | - # cargo build --release --no-default-features --target ${{ matrix.target }} + - name: Build binary for ${{ matrix.target }} + if: ${{ startsWith(matrix.os, 'macos') }} + env: + RUSTFLAGS: "-C target-feature=+crt-static" + run: | + cargo build --release --no-default-features --target ${{ matrix.target }} - # - name: Rename binary to the published name - # run: | - # mv target/${{ matrix.target }}/release/coder target/${{ matrix.target }}/release/coder_${{ matrix.target }} + - name: Rename binary to the published name + run: | + mv target/${{ matrix.target }}/release/coder target/${{ matrix.target }}/release/coder_${{ matrix.target }} - # - name: Upload to GitHub Release - # uses: softprops/action-gh-release@v2 - # with: - # files: target/${{ matrix.target }}/release/coder_${{ matrix.target }} - # tag_name: ${{ needs.github_release.outputs.new_release_version }} - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload to GitHub Release + uses: softprops/action-gh-release@v2 + with: + files: target/${{ matrix.target }}/release/coder_${{ matrix.target }} + tag_name: ${{ needs.github_release.outputs.new_release_version }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_containers: name: B&P Containers diff --git a/Cargo.lock b/Cargo.lock index 80608ab..feca84c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,2628 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" -dependencies = [ - "anstyle", - "once_cell", - "windows-sys 0.59.0", -] - -[[package]] -name = "anyhow" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" - -[[package]] -name = "arc-swap" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" - -[[package]] -name = "assert_cmd" -version = "2.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" -dependencies = [ - "anstyle", - "bstr", - "doc-comment", - "libc", - "predicates", - "predicates-core", - "predicates-tree", - "wait-timeout", -] - -[[package]] -name = "assert_fs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674" -dependencies = [ - "anstyle", - "doc-comment", - "globwalk", - "predicates", - "predicates-core", - "predicates-tree", - "tempfile", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "bstr" -version = "1.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" -dependencies = [ - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" - -[[package]] -name = "bytes" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" - -[[package]] -name = "cc" -version = "1.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets", -] - -[[package]] -name = "clap" -version = "4.5.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_complete" -version = "4.5.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5c5508ea23c5366f77e53f5a0070e5a84e51687ec3ef9e0464c86dc8d13ce98" -dependencies = [ - "clap", -] - -[[package]] -name = "clap_derive" -version = "4.5.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" - [[package]] name = "coder" version = "0.1.4-rc.39" -dependencies = [ - "assert_cmd", - "assert_fs", - "clap", - "clap_complete", - "env_logger", - "futures-util", - "ignore", - "inference-gateway-sdk", - "log", - "octocrab", - "openssl", - "predicates", - "serde", - "serde_json", - "serde_yaml", - "serial_test", - "tempfile", - "thiserror", - "tiktoken-rs", - "tokio", - "uuid", -] - -[[package]] -name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "doc-comment" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "env_filter" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "fancy-regex" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" -dependencies = [ - "bit-set", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "float-cmp" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "globset" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "globwalk" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" -dependencies = [ - "bitflags", - "ignore", - "walkdir", -] - -[[package]] -name = "h2" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "http" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" -dependencies = [ - "futures-util", - "http", - "hyper", - "hyper-util", - "log", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "ignore" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata", - "same-file", - "walkdir", - "winapi-util", -] - -[[package]] -name = "indexmap" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "inference-gateway-sdk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c71eb236f39d649a058052a2baecc9bb7d7494f349ebb4e31a6237bb3496881" -dependencies = [ - "async-stream", - "futures-util", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonwebtoken" -version = "9.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" -dependencies = [ - "base64 0.22.1", - "js-sys", - "pem", - "ring", - "serde", - "serde_json", - "simple_asn1", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.169" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "native-tls" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "octocrab" -version = "0.43.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27527d68322f4c603319f7958973db8f9fa4be62c0e3fafe084f5562cf6353df" -dependencies = [ - "arc-swap", - "async-trait", - "base64 0.22.1", - "bytes", - "cfg-if", - "chrono", - "either", - "futures", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonwebtoken", - "once_cell", - "percent-encoding", - "pin-project", - "secrecy", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "snafu", - "tower", - "tower-http", - "url", - "web-time", -] - -[[package]] -name = "once_cell" -version = "1.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" - -[[package]] -name = "openssl" -version = "0.10.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.4.2+3.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - -[[package]] -name = "pem" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" -dependencies = [ - "base64 0.22.1", - "serde", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "predicates" -version = "3.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" -dependencies = [ - "anstyle", - "difflib", - "float-cmp", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" - -[[package]] -name = "predicates-tree" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "reqwest" -version = "0.12.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-tls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tokio-util", - "tower", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "windows-registry", -] - -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.15", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.23.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework 3.2.0", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" - -[[package]] -name = "ryu" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scc" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" -dependencies = [ - "sdd", -] - -[[package]] -name = "schannel" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sdd" -version = "3.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" - -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" -dependencies = [ - "bitflags", - "core-foundation 0.10.0", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "serial_test" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" -dependencies = [ - "futures", - "log", - "once_cell", - "parking_lot", - "scc", - "serial_test_derive", -] - -[[package]] -name = "serial_test_derive" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "simple_asn1" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror", - "time", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "snafu" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" -dependencies = [ - "snafu-derive", -] - -[[package]] -name = "snafu-derive" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "socket2" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" -dependencies = [ - "cfg-if", - "fastrand", - "getrandom 0.3.1", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "termtree" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" - -[[package]] -name = "thiserror" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tiktoken-rs" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44075987ee2486402f0808505dd65692163d243a337fc54363d49afac41087f6" -dependencies = [ - "anyhow", - "base64 0.21.7", - "bstr", - "fancy-regex", - "lazy_static", - "parking_lot", - "regex", - "rustc-hash", -] - -[[package]] -name = "time" -version = "0.3.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tokio" -version = "1.43.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" -dependencies = [ - "bitflags", - "bytes", - "http", - "http-body", - "pin-project-lite", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "unicode-ident" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" - -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" -dependencies = [ - "getrandom 0.3.1", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "wait-timeout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-streams" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/Cargo.toml b/Cargo.toml index 5bbb783..4273181 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,32 +4,32 @@ version = "0.1.4-rc.39" edition = "2021" [features] -completions = ["clap_complete"] +# completions = ["clap_complete"] [dependencies] -clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } -clap_complete = { version = "4.5.46", default-features = false, features = ["default"], optional = true } -env_logger = { version = "0.11.6", default-features = false, features = ["default"] } -futures-util = { version = "0.3.31", default-features = false, features = ["default"] } -ignore = { version = "0.4.23", default-features = false } -inference-gateway-sdk = { version = "0.9.0", default-features = false } -log = { version = "0.4.26", default-features = false } -octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } -openssl = { version = "0.10.71", default-features = false, features = ["vendored"] } -serde = { version = "1.0.218", default-features = false, features = ["derive"] } -serde_json = { version = "1.0.139", default-features = false } -serde_yaml = { version = "0.9.34", default-features = false } -thiserror = { version = "2.0.11", default-features = false } -tiktoken-rs = { version = "0.6.0", default-features = false } -tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } -uuid = { version = "1.15.1", default-features = false, features = ["v4"] } +# clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } +# clap_complete = { version = "4.5.46", default-features = false, features = ["default"], optional = true } +# env_logger = { version = "0.11.6", default-features = false, features = ["default"] } +# futures-util = { version = "0.3.31", default-features = false, features = ["default"] } +# ignore = { version = "0.4.23", default-features = false } +# inference-gateway-sdk = { version = "0.9.0", default-features = false } +# log = { version = "0.4.26", default-features = false } +# octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } +# openssl = { version = "0.10.71", default-features = false, features = ["vendored"] } +# serde = { version = "1.0.218", default-features = false, features = ["derive"] } +# serde_json = { version = "1.0.139", default-features = false } +# serde_yaml = { version = "0.9.34", default-features = false } +# thiserror = { version = "2.0.11", default-features = false } +# tiktoken-rs = { version = "0.6.0", default-features = false } +# tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } +# uuid = { version = "1.15.1", default-features = false, features = ["v4"] } [dev-dependencies] -assert_cmd = "2.0.16" -assert_fs = "1.1.2" -predicates = "3.1.3" -serial_test = "3.2.0" -tempfile = "3.17.1" +# assert_cmd = "2.0.16" +# assert_fs = "1.1.2" +# predicates = "3.1.3" +# serial_test = "3.2.0" +# tempfile = "3.17.1" [profile.release] lto = true From ddb31d6fa88f1329cf90bb9b44fb319a86fd7305 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:56:23 +0000 Subject: [PATCH 130/174] build: Comment out self-hosted runners for now - I want to make sure it works on the regular github ones first Signed-off-by: Eden Reich --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9df7171..6037f73 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -113,11 +113,11 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - os: - - self-hosted - - k8s - - ubuntu-22.04-arm64 - target: aarch64-unknown-linux-musl + # - os: + # - self-hosted + # - k8s + # - ubuntu-22.04-arm64 + # target: aarch64-unknown-linux-musl - os: macos-latest target: x86_64-apple-darwin - os: macos-latest From 79d3237c78dc82abb07196b9c6cdf5fd2b5acdaa Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:57:49 +0000 Subject: [PATCH 131/174] build: Update Rust toolchain setup action to version 1.11.0 Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6037f73..a70d98d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -140,7 +140,7 @@ jobs: fi - name: Install Rust - uses: actions-rust-lang/setup-rust-toolchain@v1.10.1 + uses: actions-rust-lang/setup-rust-toolchain@v1.11.0 with: toolchain: stable override: true From c226efd0f85e3a6d7045778496a32a37f7f6899a Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 11:58:22 +0000 Subject: [PATCH 132/174] build: This is default for the sake of consistency with release workflow add it explicitly Signed-off-by: Eden Reich --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47bfd6a..8179fae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,7 @@ jobs: with: toolchain: stable components: rustfmt, clippy + override: true - name: Cache Rust dependencies uses: actions/cache@v4 From 3ce07edc3a9834e302df2df2abcb30e0aaa19a28 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 11:59:58 +0000 Subject: [PATCH 133/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.40=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.40](https://github.com/inference-gateway/coder/compare/0.1.4-rc.39...0.1.4-rc.40) (2025-02-27) ### 📦 Miscellaneous * Comment out self-hosted runners for now - I want to make sure it works on the regular github ones first ([ddb31d6](https://github.com/inference-gateway/coder/commit/ddb31d6fa88f1329cf90bb9b44fb319a86fd7305)) * This is default for the sake of consistency with release workflow add it explicitly ([c226efd](https://github.com/inference-gateway/coder/commit/c226efd0f85e3a6d7045778496a32a37f7f6899a)) * Uncomment and enable static binary build steps in CI workflow ([b53889f](https://github.com/inference-gateway/coder/commit/b53889fa8267fd3a79da4690969553715c8618fa)) * Update Rust toolchain setup action to version 1.11.0 ([79d3237](https://github.com/inference-gateway/coder/commit/79d3237c78dc82abb07196b9c6cdf5fd2b5acdaa)) --- CHANGELOG.md | 9 +++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a507a5..8f5b2ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.40](https://github.com/inference-gateway/coder/compare/0.1.4-rc.39...0.1.4-rc.40) (2025-02-27) + +### 📦 Miscellaneous + +* Comment out self-hosted runners for now - I want to make sure it works on the regular github ones first ([ddb31d6](https://github.com/inference-gateway/coder/commit/ddb31d6fa88f1329cf90bb9b44fb319a86fd7305)) +* This is default for the sake of consistency with release workflow add it explicitly ([c226efd](https://github.com/inference-gateway/coder/commit/c226efd0f85e3a6d7045778496a32a37f7f6899a)) +* Uncomment and enable static binary build steps in CI workflow ([b53889f](https://github.com/inference-gateway/coder/commit/b53889fa8267fd3a79da4690969553715c8618fa)) +* Update Rust toolchain setup action to version 1.11.0 ([79d3237](https://github.com/inference-gateway/coder/commit/79d3237c78dc82abb07196b9c6cdf5fd2b5acdaa)) + ## [0.1.4-rc.39](https://github.com/inference-gateway/coder/compare/0.1.4-rc.38...0.1.4-rc.39) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index feca84c..675e3d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "coder" -version = "0.1.4-rc.39" +version = "0.1.4-rc.40" diff --git a/Cargo.toml b/Cargo.toml index 4273181..25cd689 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.39" +version = "0.1.4-rc.40" edition = "2021" [features] From 2b8be7302ab7c5a5682e55db8d2a1c4e6f0cd331 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:08:30 +0000 Subject: [PATCH 134/174] build: Adjust cache key format in release workflow for improved consistency Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a70d98d..bbd05d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -154,9 +154,9 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-${{ matrix.target }}-cargo + ${{ runner.os }}-cargo-${{ matrix.target }}- - name: Add target ${{ matrix.target }} run: rustup target add ${{ matrix.target }} From 578530647a0aaf3ade3991f6c332dba875c9a8a9 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 12:10:17 +0000 Subject: [PATCH 135/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.41=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.41](https://github.com/inference-gateway/coder/compare/0.1.4-rc.40...0.1.4-rc.41) (2025-02-27) ### 📦 Miscellaneous * Adjust cache key format in release workflow for improved consistency ([2b8be73](https://github.com/inference-gateway/coder/commit/2b8be7302ab7c5a5682e55db8d2a1c4e6f0cd331)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f5b2ef..11d03a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.41](https://github.com/inference-gateway/coder/compare/0.1.4-rc.40...0.1.4-rc.41) (2025-02-27) + +### 📦 Miscellaneous + +* Adjust cache key format in release workflow for improved consistency ([2b8be73](https://github.com/inference-gateway/coder/commit/2b8be7302ab7c5a5682e55db8d2a1c4e6f0cd331)) + ## [0.1.4-rc.40](https://github.com/inference-gateway/coder/compare/0.1.4-rc.39...0.1.4-rc.40) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index 675e3d2..b940ec7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "coder" -version = "0.1.4-rc.40" +version = "0.1.4-rc.41" diff --git a/Cargo.toml b/Cargo.toml index 25cd689..61f62d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.40" +version = "0.1.4-rc.41" edition = "2021" [features] From 4583568de71b0e767a53f5ca0b96786a72df83e0 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:15:37 +0000 Subject: [PATCH 136/174] build: Attempt to fix cache conflict Signed-off-by: Eden Reich --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8179fae..da62839 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,9 +38,9 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-ci-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-cargo- + ${{ runner.os }}-cargo-ci- - name: Lint run: cargo fmt --all -- --check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bbd05d0..333762c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -154,9 +154,9 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-release-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-cargo-${{ matrix.target }}- + ${{ runner.os }}-cargo-release-${{ matrix.target }}- - name: Add target ${{ matrix.target }} run: rustup target add ${{ matrix.target }} From 57a55ccf07b5cd8dd3b07f174b8c425c0a7f40f1 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:19:47 +0000 Subject: [PATCH 137/174] build: Update cache key format in release workflow for consistency Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 333762c..7341dc5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -154,9 +154,9 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-release-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-${{ matrix.target }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-cargo-release-${{ matrix.target }}- + ${{ runner.os }}-${{ matrix.target }}-cargo-release- - name: Add target ${{ matrix.target }} run: rustup target add ${{ matrix.target }} From 083c2dbfe7d093f4b76c8532f24665ec2c845b9b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 12:21:20 +0000 Subject: [PATCH 138/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.42=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.42](https://github.com/inference-gateway/coder/compare/0.1.4-rc.41...0.1.4-rc.42) (2025-02-27) ### 📦 Miscellaneous * Attempt to fix cache conflict ([4583568](https://github.com/inference-gateway/coder/commit/4583568de71b0e767a53f5ca0b96786a72df83e0)) * Update cache key format in release workflow for consistency ([57a55cc](https://github.com/inference-gateway/coder/commit/57a55ccf07b5cd8dd3b07f174b8c425c0a7f40f1)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11d03a8..3351870 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.42](https://github.com/inference-gateway/coder/compare/0.1.4-rc.41...0.1.4-rc.42) (2025-02-27) + +### 📦 Miscellaneous + +* Attempt to fix cache conflict ([4583568](https://github.com/inference-gateway/coder/commit/4583568de71b0e767a53f5ca0b96786a72df83e0)) +* Update cache key format in release workflow for consistency ([57a55cc](https://github.com/inference-gateway/coder/commit/57a55ccf07b5cd8dd3b07f174b8c425c0a7f40f1)) + ## [0.1.4-rc.41](https://github.com/inference-gateway/coder/compare/0.1.4-rc.40...0.1.4-rc.41) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index b940ec7..b57ee48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "coder" -version = "0.1.4-rc.41" +version = "0.1.4-rc.42" diff --git a/Cargo.toml b/Cargo.toml index 61f62d2..0d9d6e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.41" +version = "0.1.4-rc.42" edition = "2021" [features] From 8ff0605eca4668dc04416117ad9cf35d0fbb03ff Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:26:52 +0000 Subject: [PATCH 139/174] build: Ensure using the latest version of the this action Maybe they have a fix for it, not sure why I still get this conflict, cache prefix looks correct. Signed-off-by: Eden Reich --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da62839..dd9d8aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: override: true - name: Cache Rust dependencies - uses: actions/cache@v4 + uses: actions/cache@v4.2.1 with: path: | ~/.cargo/bin/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7341dc5..544b9b0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -146,7 +146,7 @@ jobs: override: true - name: Cache Rust dependencies - uses: actions/cache@v4 + uses: actions/cache@v4.2.1 with: path: | ~/.cargo/bin/ From a2d2bb22f0a6465752456254bb0b81d026f82f08 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 12:28:28 +0000 Subject: [PATCH 140/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.43=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.43](https://github.com/inference-gateway/coder/compare/0.1.4-rc.42...0.1.4-rc.43) (2025-02-27) ### 📦 Miscellaneous * Ensure using the latest version of the this action ([8ff0605](https://github.com/inference-gateway/coder/commit/8ff0605eca4668dc04416117ad9cf35d0fbb03ff)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3351870..e755ed4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.43](https://github.com/inference-gateway/coder/compare/0.1.4-rc.42...0.1.4-rc.43) (2025-02-27) + +### 📦 Miscellaneous + +* Ensure using the latest version of the this action ([8ff0605](https://github.com/inference-gateway/coder/commit/8ff0605eca4668dc04416117ad9cf35d0fbb03ff)) + ## [0.1.4-rc.42](https://github.com/inference-gateway/coder/compare/0.1.4-rc.41...0.1.4-rc.42) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index b57ee48..de30468 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "coder" -version = "0.1.4-rc.42" +version = "0.1.4-rc.43" diff --git a/Cargo.toml b/Cargo.toml index 0d9d6e1..f59cd4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.42" +version = "0.1.4-rc.43" edition = "2021" [features] From e55c37f5379a8f344ad996c1e69ac413b98d7493 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:39:04 +0000 Subject: [PATCH 141/174] build: I think I found the issue, those cache entries came from this action Signed-off-by: Eden Reich --- .github/workflows/ci.yml | 2 ++ .github/workflows/release.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd9d8aa..acce085 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,8 @@ jobs: toolchain: stable components: rustfmt, clippy override: true + cache: true + cache-key: ${{ runner.os }}-cargo-ci-${{ hashFiles('**/Cargo.lock') }} - name: Cache Rust dependencies uses: actions/cache@v4.2.1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 544b9b0..01fc0f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -144,6 +144,8 @@ jobs: with: toolchain: stable override: true + cache: true + cache-key: ${{ runner.os }}-${{ matrix.target }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} - name: Cache Rust dependencies uses: actions/cache@v4.2.1 From 591142dc4e8145d7e4e1cc05bd74ffd450477a66 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 12:44:13 +0000 Subject: [PATCH 142/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.44=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.44](https://github.com/inference-gateway/coder/compare/0.1.4-rc.43...0.1.4-rc.44) (2025-02-27) ### 📦 Miscellaneous * I think I found the issue, those cache entries came from this action ([e55c37f](https://github.com/inference-gateway/coder/commit/e55c37f5379a8f344ad996c1e69ac413b98d7493)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e755ed4..21171fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.44](https://github.com/inference-gateway/coder/compare/0.1.4-rc.43...0.1.4-rc.44) (2025-02-27) + +### 📦 Miscellaneous + +* I think I found the issue, those cache entries came from this action ([e55c37f](https://github.com/inference-gateway/coder/commit/e55c37f5379a8f344ad996c1e69ac413b98d7493)) + ## [0.1.4-rc.43](https://github.com/inference-gateway/coder/compare/0.1.4-rc.42...0.1.4-rc.43) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index de30468..6cc6d68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 4 [[package]] name = "coder" -version = "0.1.4-rc.43" +version = "0.1.4-rc.44" diff --git a/Cargo.toml b/Cargo.toml index f59cd4a..19cad2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.43" +version = "0.1.4-rc.44" edition = "2021" [features] From 822c8b2b1584ea3edc43ecdfb49498dddd11ee95 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:47:36 +0000 Subject: [PATCH 143/174] build: Rename job from 'B&P Containers' to 'Build Containers' for clarity Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 01fc0f4..5a0b0c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,7 +219,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_containers: - name: B&P Containers + name: Build Containers needs: - github_release if: needs.github_release.outputs.new_release_published == 'true' From e92195461950e5bef6376e8e969c611a2489bc0b Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 12:50:45 +0000 Subject: [PATCH 144/174] build: Bring back dependencies Signed-off-by: Eden Reich --- Cargo.lock | 2621 ++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 44 +- src/main.rs | 441 ++++++++- src/main2.rs | 440 --------- 4 files changed, 3082 insertions(+), 464 deletions(-) delete mode 100644 src/main2.rs diff --git a/Cargo.lock b/Cargo.lock index 6cc6d68..075789b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,2627 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4" + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "assert_cmd" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "libc", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + +[[package]] +name = "assert_fs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674" +dependencies = [ + "anstyle", + "doc-comment", + "globwalk", + "predicates", + "predicates-core", + "predicates-tree", + "tempfile", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-trait" +version = "0.1.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" + +[[package]] +name = "bstr" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytes" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" + +[[package]] +name = "cc" +version = "1.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "clap" +version = "4.5.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_complete" +version = "4.5.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5c5508ea23c5366f77e53f5a0070e5a84e51687ec3ef9e0464c86dc8d13ce98" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_derive" +version = "4.5.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + [[package]] name = "coder" version = "0.1.4-rc.44" +dependencies = [ + "assert_cmd", + "assert_fs", + "clap", + "clap_complete", + "env_logger", + "futures-util", + "ignore", + "inference-gateway-sdk", + "log", + "octocrab", + "openssl", + "predicates", + "serde", + "serde_json", + "serde_yaml", + "serial_test", + "tempfile", + "thiserror", + "tiktoken-rs", + "tokio", + "uuid", +] + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "either" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fancy-regex" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "float-cmp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "globwalk" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +dependencies = [ + "bitflags", + "ignore", + "walkdir", +] + +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "log", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inference-gateway-sdk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c71eb236f39d649a058052a2baecc9bb7d7494f349ebb4e31a6237bb3496881" +dependencies = [ + "async-stream", + "futures-util", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "9.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64 0.22.1", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.170" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "octocrab" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27527d68322f4c603319f7958973db8f9fa4be62c0e3fafe084f5562cf6353df" +dependencies = [ + "arc-swap", + "async-trait", + "base64 0.22.1", + "bytes", + "cfg-if", + "chrono", + "either", + "futures", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "jsonwebtoken", + "once_cell", + "percent-encoding", + "pin-project", + "secrecy", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "snafu", + "tower", + "tower-http", + "url", + "web-time", +] + +[[package]] +name = "once_cell" +version = "1.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" + +[[package]] +name = "openssl" +version = "0.10.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.4.2+3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "pem" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +dependencies = [ + "base64 0.22.1", + "serde", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "difflib", + "float-cmp", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry", +] + +[[package]] +name = "ring" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.2.0", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scc" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sdd" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags", + "core-foundation 0.10.0", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.218" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.218" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" + +[[package]] +name = "snafu" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +dependencies = [ + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" +dependencies = [ + "cfg-if", + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termtree" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiktoken-rs" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44075987ee2486402f0808505dd65692163d243a337fc54363d49afac41087f6" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bstr", + "fancy-regex", + "lazy_static", + "parking_lot", + "regex", + "rustc-hash", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +dependencies = [ + "bitflags", + "bytes", + "http", + "http-body", + "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" +dependencies = [ + "getrandom 0.3.1", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 19cad2d..ea4e191 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,32 +4,32 @@ version = "0.1.4-rc.44" edition = "2021" [features] -# completions = ["clap_complete"] +completions = ["clap_complete"] [dependencies] -# clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } -# clap_complete = { version = "4.5.46", default-features = false, features = ["default"], optional = true } -# env_logger = { version = "0.11.6", default-features = false, features = ["default"] } -# futures-util = { version = "0.3.31", default-features = false, features = ["default"] } -# ignore = { version = "0.4.23", default-features = false } -# inference-gateway-sdk = { version = "0.9.0", default-features = false } -# log = { version = "0.4.26", default-features = false } -# octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } -# openssl = { version = "0.10.71", default-features = false, features = ["vendored"] } -# serde = { version = "1.0.218", default-features = false, features = ["derive"] } -# serde_json = { version = "1.0.139", default-features = false } -# serde_yaml = { version = "0.9.34", default-features = false } -# thiserror = { version = "2.0.11", default-features = false } -# tiktoken-rs = { version = "0.6.0", default-features = false } -# tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } -# uuid = { version = "1.15.1", default-features = false, features = ["v4"] } +clap = { version = "4.5.31", default-features = false, features = ["default", "derive"] } +clap_complete = { version = "4.5.46", default-features = false, features = ["default"], optional = true } +env_logger = { version = "0.11.6", default-features = false, features = ["default"] } +futures-util = { version = "0.3.31", default-features = false, features = ["default"] } +ignore = { version = "0.4.23", default-features = false } +inference-gateway-sdk = { version = "0.9.0", default-features = false } +log = { version = "0.4.26", default-features = false } +octocrab = { version = "0.43.0", default-features = false, features = ["default-client", "rustls", "rustls-ring"] } +openssl = { version = "0.10.71", default-features = false, features = ["vendored"] } +serde = { version = "1.0.218", default-features = false, features = ["derive"] } +serde_json = { version = "1.0.139", default-features = false } +serde_yaml = { version = "0.9.34", default-features = false } +thiserror = { version = "2.0.11", default-features = false } +tiktoken-rs = { version = "0.6.0", default-features = false } +tokio = { version = "1.43.0", default-features = false, features = ["rt-multi-thread", "tokio-macros"] } +uuid = { version = "1.15.1", default-features = false, features = ["v4"] } [dev-dependencies] -# assert_cmd = "2.0.16" -# assert_fs = "1.1.2" -# predicates = "3.1.3" -# serial_test = "3.2.0" -# tempfile = "3.17.1" +assert_cmd = "2.0.16" +assert_fs = "1.1.2" +predicates = "3.1.3" +serial_test = "3.2.0" +tempfile = "3.17.1" [profile.release] lto = true diff --git a/src/main.rs b/src/main.rs index e7a11a9..0a3e761 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,440 @@ -fn main() { - println!("Hello, world!"); +use crate::cli::{Cli, Commands}; +use crate::errors::CoderError; +#[cfg(feature = "completions")] +use clap::CommandFactory; +use clap::Parser; +#[cfg(feature = "completions")] +use clap_complete::generate; +use conversation::Conversation; +use inference_gateway_sdk::{ + InferenceGatewayAPI, InferenceGatewayClient, Message, MessageRole, Provider, +}; +use log::{debug, info, warn}; +use std::{env, fs, panic, path::Path, str::FromStr, thread::sleep, time::Duration}; + +mod cli; +mod config; +mod conversation; +mod errors; +mod index; +mod tools; +mod utils; + +fn setup_panic_handler(conversation: Conversation) { + let default_hook = panic::take_hook(); + panic::set_hook(Box::new(move |panic_info| { + info!("{:?}", conversation); + + default_hook(panic_info); + })); +} + +fn init() -> Result<(), CoderError> { + info!("Initializing AI Coder agent..."); + let coder_dir = Path::new(".coder"); + fs::create_dir_all(coder_dir)?; + info!("Created .coder directory"); + fs::write(coder_dir.join("config.yaml"), config::default_config())?; + + let gitignore_path = Path::new(".gitignore"); + let gitignore_content = if gitignore_path.exists() { + let mut content = fs::read_to_string(gitignore_path)?; + if !content.contains(".coder") { + if !content.ends_with('\n') { + content.push('\n'); + } + content.push_str(".coder\n"); + } + content + } else { + ".coder\n".to_string() + }; + fs::write(gitignore_path, gitignore_content)?; + + Ok(()) +} + +#[tokio::main] +async fn main() -> Result<(), CoderError> { + if env::var("RUST_LOG").is_err() { + env::set_var("RUST_LOG", "info"); + } + env_logger::init(); + + let tools = tools::get_tools(); + let cli = Cli::parse(); + + if let Commands::Init {} = cli.command { + return init(); + } + + let coder_dir = Path::new(".coder"); + let config_path = coder_dir.join("config.yaml"); + if !coder_dir.exists() { + return Err(CoderError::ConfigError( + "'.coder' directory not found. Run 'coder init' first to initialize the project" + .to_string(), + )); + } + + let config = config::load(&config_path)?; + + debug!("Config: {:#?}", config); + + let model = &config.agent.model; + let provider = Provider::try_from(config.agent.provider.as_str())?; + + match cli.command { + #[cfg(feature = "completions")] + Commands::Completions { shell } => { + generate(shell, &mut Cli::command(), "coder", &mut std::io::stdout()); + return Ok(()); + } + Commands::Init {} => { + return init(); + } + Commands::Index {} => { + info!("Indexing files..."); + let coder_dir = Path::new(".coder"); + fs::create_dir_all(coder_dir)?; + + let tree = index::build_tree()?; + let content = index::build_content()?; + + let index_content = format!( + "---\n# AI Coder Index Configuration\n\ntree: |\n{}\n{}", + tree.lines() + .map(|line| format!(" {}", line)) + .collect::>() + .join("\n"), + content + ); + + fs::write(coder_dir.join("index.yaml"), index_content)?; + info!("Created index at .coder/index.yaml"); + } + Commands::Fix { + issue, + further_instruction, + } => { + info!("Fixing issue #{}...", issue); + info!("Further instructions: {:?}", further_instruction); + + let client = InferenceGatewayClient::new(&config.api.endpoint) + .with_max_tokens(Some(900)) + .with_tools(Some(tools)); + + let mut convo = + Conversation::new(model.to_string(), provider.clone(), config.agent.max_tokens); + + setup_panic_handler(convo.clone()); + + let system_prompt = format!( + r#"You are a senior software engineer specializing in {language} development working to fix an issue reported in {scm}. + +When you need to call a tool, don't answer in XML. + +WORKSPACE: +{tree} + +CHANGES SCOPE: +The changes you are allowed to make are limited to playground/bug1 directory. + +PROCESS: +1. Validate issue #{issue} [tool: issue_validate] +2. Pull issue details [tool: issue_pull] +3. Analyze code and documentation [tool: code_read] +4. Implement a fix [tool: code_write] +5. Validate changes, only if you made changes to the code: + - Lint code [tool: code_lint] + - Run analysis [tool: code_analyse] + - Run tests [tool: code_test] +6. Create {scm} pull request [pull_request] +7. Call "done" when complete [done] + +When you execute a tool, the following output would be provided in JSON format: + +```json +{{ + "status": "ok", + "message": "tool_message", + "result": "tool_result" + "retry": false +}} +``` + +When retry is set to true, that means you need to re-run the tool with the provided arguments, ensure you send valid JSON. +When the tool result is empty, it means the tool did not find any issues. +If it's not empty, review the issue and fix it accordingly. + +Focus on producing working solutions with minimal discussion. Do not ask questions. Provide a complete solution."#, + language = config.language.name, + scm = config.scm.name, + tree = index::build_tree()?, + issue = issue, + ); + + convo.add_message(Message { + role: MessageRole::System, + content: system_prompt, + ..Default::default() + }); + + convo.add_message(Message { + role: MessageRole::User, + content: format!("Please fix the issue #{} - first pull it before jumping to conclusions. Just fix it, do not explain.", issue), + ..Default::default() + }); + + let timeout = Duration::from_secs(300); + info!("Starting AI Coder agent..."); + info!("Press Ctrl+C to stop the agent."); + 'outer: loop { + if timeout.as_secs() == 0 { + warn!("Timeout reached. Exiting..."); + break; + } + + let resp: inference_gateway_sdk::GenerateResponse = client + .generate_content(provider.clone(), model, convo.clone().try_into()?) + .await?; + + let response = resp.response; + + let assistant_message = utils::strip_thinking(&response.content); + if assistant_message.is_none() { + warn!("Assistant message is empty. Exiting..."); + break; + } + + let assistant_message = assistant_message.unwrap().trim().to_string(); + + convo.add_message(Message { + role: MessageRole::Assistant, + content: assistant_message.clone(), + ..Default::default() + }); + + info!("Assistant: {}", assistant_message); + info!("Current tokens usage: {}", convo.get_current_tokens()?); + + if response.tool_calls.is_some() { + for tool_call in response.tool_calls.unwrap() { + let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; + let args = tool_call.function.arguments.as_str(); + let tool_result = tools::handle_tool_calls(&tool, args, &config).await; + if tool_result.is_err() { + warn!("Tool failed to execute. Exiting..."); + let tool_message = Message { + role: MessageRole::Tool, + content: tool_result.unwrap_err().to_string(), + tool_call_id: Some(tool_call.id), + }; + let user_message = Message { + role: MessageRole::User, + content: + "Something went wrong can you retry it? maybe take a step back." + .to_string(), + ..Default::default() + }; + debug!("Tool message(faliure): {:?}", tool_message); + debug!("User message(faliure): {:?}", user_message); + convo.add_message(tool_message); + convo.add_message(user_message); + continue; + } + + let result = tool_result?; + + debug!("Tool result: {}", result); + + let tool_message = Message { + role: MessageRole::Tool, + content: result.to_string(), + tool_call_id: Some(tool_call.id), + }; + + let tool_result_struct: tools::StatusResponse = + serde_json::from_value(result)?; + + if tool_result_struct.message == Some("Task completed".to_string()) { + info!("Task completed. Exiting..."); + break 'outer; + } + + let mut user_message = Message { + role: MessageRole::User, + content: "Let's proceed to the next step.".to_string(), + ..Default::default() + }; + if tool_result_struct.retry { + warn!("Tool requires retry. Exiting..."); + user_message = Message { + role: MessageRole::User, + content: "Something went wrong can you retry it?".to_string(), + ..Default::default() + }; + } + + debug!("Tool message: {:?}", tool_message); + debug!("User message: {:?}", user_message); + convo.add_message(tool_message); + convo.add_message(user_message); + } + } + + info!("Iteration completed. Developer is taking a coffee break due to rate-limiting.."); + + sleep(Duration::from_secs(60)); + } + } + Commands::Refactor { file } => { + match file { + Some(path) => info!("Refactoring file: {}", path), + None => info!("Refactoring entire project..."), + } + + let client = InferenceGatewayClient::new(&config.api.endpoint) + .with_max_tokens(Some(900)) + .with_tools(Some(tools)); + + let mut convo = Conversation::new( + config.agent.model.to_string(), + provider.clone(), + config.agent.max_tokens, + ); + + setup_panic_handler(convo.clone()); + + let system_prompt = format!( + r#"You are a senior software engineer specializing in Rust development. Your task is to refactor the code based on the provided code snippet. Keep your answers short and consice. Do not ask questions back. + +WORKSPACE INFO: + +{} + +WORKFLOW: +1. Read the provided file content +2. Analyse the code +3. Lint the code +4. Test the code +5. Refactor the code +6. Test the code again +7. Finally, create a GitHub Pull Request + +"#, + index::build_tree()?, + ); + + convo.add_message(Message { + role: MessageRole::System, + content: system_prompt, + ..Default::default() + }); + + convo.add_message(Message { + role: MessageRole::User, + content: "I need help refactoring this code snippet".to_string(), + ..Default::default() + }); + + let timeout = Duration::from_secs(300); + info!("Starting AI Coder agent..."); + info!("Press Ctrl+C to stop the agent."); + loop { + if timeout.as_secs() == 0 { + warn!("Timeout reached. Exiting..."); + break; + } + + let resp: inference_gateway_sdk::GenerateResponse = client + .generate_content( + provider.clone(), + config.agent.model.as_str(), + convo.clone().try_into()?, + ) + .await?; + + let response = resp.response; + + let assistant_message = utils::strip_thinking(&response.content); + if assistant_message.is_none() { + warn!("Assistant message is empty. Exiting..."); + break; + } + + let assistant_message = assistant_message.unwrap().trim().to_string(); + + convo.add_message(Message { + role: MessageRole::Assistant, + content: assistant_message.clone(), + ..Default::default() + }); + + info!("Assistant: {}", assistant_message); + + if response.tool_calls.is_some() { + for tool_call in response.tool_calls.unwrap() { + let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; + let args = tool_call.function.arguments.as_str(); + let tool_result = tools::handle_tool_calls(&tool, args, &config).await?; + + convo.add_message(Message { + role: MessageRole::Tool, + content: tool_result.to_string(), + tool_call_id: Some(tool_call.id), + }); + } + } + } + } + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use assert_cmd::Command; + use assert_fs::prelude::*; + use log::LevelFilter; + use predicates::prelude::*; + use std::fs; + + use crate::config; + + #[test] + fn test_init_command() { + let _ = env_logger::builder() + .filter_level(LevelFilter::Info) + .is_test(true) + .try_init(); + + let temp_dir = assert_fs::TempDir::new().unwrap(); + + let mut cmd = Command::cargo_bin("coder").unwrap(); + let assert = cmd.current_dir(&temp_dir).arg("init").assert(); + + assert + .success() + .stderr(predicate::str::contains("Initializing AI Coder agent")) + .stderr(predicate::str::contains("Created .coder directory")); + + let config_file = temp_dir.child(".coder/config.yaml"); + config_file.assert(predicate::path::exists()); + config_file.assert(predicate::str::contains(config::default_config())); + + let gitignore_path = temp_dir.join(".gitignore"); + assert!(fs::write(&gitignore_path, ".coder\n").is_ok()); + + let gitignore = temp_dir.child(".gitignore"); + gitignore.assert(predicate::path::exists()); + gitignore.assert(predicate::str::contains(".coder")); + + let content = fs::read_to_string(&gitignore_path).unwrap(); + assert!( + content.contains(".coder"), + "'.coder' entry missing from .gitignore" + ); + } } diff --git a/src/main2.rs b/src/main2.rs deleted file mode 100644 index 0a3e761..0000000 --- a/src/main2.rs +++ /dev/null @@ -1,440 +0,0 @@ -use crate::cli::{Cli, Commands}; -use crate::errors::CoderError; -#[cfg(feature = "completions")] -use clap::CommandFactory; -use clap::Parser; -#[cfg(feature = "completions")] -use clap_complete::generate; -use conversation::Conversation; -use inference_gateway_sdk::{ - InferenceGatewayAPI, InferenceGatewayClient, Message, MessageRole, Provider, -}; -use log::{debug, info, warn}; -use std::{env, fs, panic, path::Path, str::FromStr, thread::sleep, time::Duration}; - -mod cli; -mod config; -mod conversation; -mod errors; -mod index; -mod tools; -mod utils; - -fn setup_panic_handler(conversation: Conversation) { - let default_hook = panic::take_hook(); - panic::set_hook(Box::new(move |panic_info| { - info!("{:?}", conversation); - - default_hook(panic_info); - })); -} - -fn init() -> Result<(), CoderError> { - info!("Initializing AI Coder agent..."); - let coder_dir = Path::new(".coder"); - fs::create_dir_all(coder_dir)?; - info!("Created .coder directory"); - fs::write(coder_dir.join("config.yaml"), config::default_config())?; - - let gitignore_path = Path::new(".gitignore"); - let gitignore_content = if gitignore_path.exists() { - let mut content = fs::read_to_string(gitignore_path)?; - if !content.contains(".coder") { - if !content.ends_with('\n') { - content.push('\n'); - } - content.push_str(".coder\n"); - } - content - } else { - ".coder\n".to_string() - }; - fs::write(gitignore_path, gitignore_content)?; - - Ok(()) -} - -#[tokio::main] -async fn main() -> Result<(), CoderError> { - if env::var("RUST_LOG").is_err() { - env::set_var("RUST_LOG", "info"); - } - env_logger::init(); - - let tools = tools::get_tools(); - let cli = Cli::parse(); - - if let Commands::Init {} = cli.command { - return init(); - } - - let coder_dir = Path::new(".coder"); - let config_path = coder_dir.join("config.yaml"); - if !coder_dir.exists() { - return Err(CoderError::ConfigError( - "'.coder' directory not found. Run 'coder init' first to initialize the project" - .to_string(), - )); - } - - let config = config::load(&config_path)?; - - debug!("Config: {:#?}", config); - - let model = &config.agent.model; - let provider = Provider::try_from(config.agent.provider.as_str())?; - - match cli.command { - #[cfg(feature = "completions")] - Commands::Completions { shell } => { - generate(shell, &mut Cli::command(), "coder", &mut std::io::stdout()); - return Ok(()); - } - Commands::Init {} => { - return init(); - } - Commands::Index {} => { - info!("Indexing files..."); - let coder_dir = Path::new(".coder"); - fs::create_dir_all(coder_dir)?; - - let tree = index::build_tree()?; - let content = index::build_content()?; - - let index_content = format!( - "---\n# AI Coder Index Configuration\n\ntree: |\n{}\n{}", - tree.lines() - .map(|line| format!(" {}", line)) - .collect::>() - .join("\n"), - content - ); - - fs::write(coder_dir.join("index.yaml"), index_content)?; - info!("Created index at .coder/index.yaml"); - } - Commands::Fix { - issue, - further_instruction, - } => { - info!("Fixing issue #{}...", issue); - info!("Further instructions: {:?}", further_instruction); - - let client = InferenceGatewayClient::new(&config.api.endpoint) - .with_max_tokens(Some(900)) - .with_tools(Some(tools)); - - let mut convo = - Conversation::new(model.to_string(), provider.clone(), config.agent.max_tokens); - - setup_panic_handler(convo.clone()); - - let system_prompt = format!( - r#"You are a senior software engineer specializing in {language} development working to fix an issue reported in {scm}. - -When you need to call a tool, don't answer in XML. - -WORKSPACE: -{tree} - -CHANGES SCOPE: -The changes you are allowed to make are limited to playground/bug1 directory. - -PROCESS: -1. Validate issue #{issue} [tool: issue_validate] -2. Pull issue details [tool: issue_pull] -3. Analyze code and documentation [tool: code_read] -4. Implement a fix [tool: code_write] -5. Validate changes, only if you made changes to the code: - - Lint code [tool: code_lint] - - Run analysis [tool: code_analyse] - - Run tests [tool: code_test] -6. Create {scm} pull request [pull_request] -7. Call "done" when complete [done] - -When you execute a tool, the following output would be provided in JSON format: - -```json -{{ - "status": "ok", - "message": "tool_message", - "result": "tool_result" - "retry": false -}} -``` - -When retry is set to true, that means you need to re-run the tool with the provided arguments, ensure you send valid JSON. -When the tool result is empty, it means the tool did not find any issues. -If it's not empty, review the issue and fix it accordingly. - -Focus on producing working solutions with minimal discussion. Do not ask questions. Provide a complete solution."#, - language = config.language.name, - scm = config.scm.name, - tree = index::build_tree()?, - issue = issue, - ); - - convo.add_message(Message { - role: MessageRole::System, - content: system_prompt, - ..Default::default() - }); - - convo.add_message(Message { - role: MessageRole::User, - content: format!("Please fix the issue #{} - first pull it before jumping to conclusions. Just fix it, do not explain.", issue), - ..Default::default() - }); - - let timeout = Duration::from_secs(300); - info!("Starting AI Coder agent..."); - info!("Press Ctrl+C to stop the agent."); - 'outer: loop { - if timeout.as_secs() == 0 { - warn!("Timeout reached. Exiting..."); - break; - } - - let resp: inference_gateway_sdk::GenerateResponse = client - .generate_content(provider.clone(), model, convo.clone().try_into()?) - .await?; - - let response = resp.response; - - let assistant_message = utils::strip_thinking(&response.content); - if assistant_message.is_none() { - warn!("Assistant message is empty. Exiting..."); - break; - } - - let assistant_message = assistant_message.unwrap().trim().to_string(); - - convo.add_message(Message { - role: MessageRole::Assistant, - content: assistant_message.clone(), - ..Default::default() - }); - - info!("Assistant: {}", assistant_message); - info!("Current tokens usage: {}", convo.get_current_tokens()?); - - if response.tool_calls.is_some() { - for tool_call in response.tool_calls.unwrap() { - let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; - let args = tool_call.function.arguments.as_str(); - let tool_result = tools::handle_tool_calls(&tool, args, &config).await; - if tool_result.is_err() { - warn!("Tool failed to execute. Exiting..."); - let tool_message = Message { - role: MessageRole::Tool, - content: tool_result.unwrap_err().to_string(), - tool_call_id: Some(tool_call.id), - }; - let user_message = Message { - role: MessageRole::User, - content: - "Something went wrong can you retry it? maybe take a step back." - .to_string(), - ..Default::default() - }; - debug!("Tool message(faliure): {:?}", tool_message); - debug!("User message(faliure): {:?}", user_message); - convo.add_message(tool_message); - convo.add_message(user_message); - continue; - } - - let result = tool_result?; - - debug!("Tool result: {}", result); - - let tool_message = Message { - role: MessageRole::Tool, - content: result.to_string(), - tool_call_id: Some(tool_call.id), - }; - - let tool_result_struct: tools::StatusResponse = - serde_json::from_value(result)?; - - if tool_result_struct.message == Some("Task completed".to_string()) { - info!("Task completed. Exiting..."); - break 'outer; - } - - let mut user_message = Message { - role: MessageRole::User, - content: "Let's proceed to the next step.".to_string(), - ..Default::default() - }; - if tool_result_struct.retry { - warn!("Tool requires retry. Exiting..."); - user_message = Message { - role: MessageRole::User, - content: "Something went wrong can you retry it?".to_string(), - ..Default::default() - }; - } - - debug!("Tool message: {:?}", tool_message); - debug!("User message: {:?}", user_message); - convo.add_message(tool_message); - convo.add_message(user_message); - } - } - - info!("Iteration completed. Developer is taking a coffee break due to rate-limiting.."); - - sleep(Duration::from_secs(60)); - } - } - Commands::Refactor { file } => { - match file { - Some(path) => info!("Refactoring file: {}", path), - None => info!("Refactoring entire project..."), - } - - let client = InferenceGatewayClient::new(&config.api.endpoint) - .with_max_tokens(Some(900)) - .with_tools(Some(tools)); - - let mut convo = Conversation::new( - config.agent.model.to_string(), - provider.clone(), - config.agent.max_tokens, - ); - - setup_panic_handler(convo.clone()); - - let system_prompt = format!( - r#"You are a senior software engineer specializing in Rust development. Your task is to refactor the code based on the provided code snippet. Keep your answers short and consice. Do not ask questions back. - -WORKSPACE INFO: - -{} - -WORKFLOW: -1. Read the provided file content -2. Analyse the code -3. Lint the code -4. Test the code -5. Refactor the code -6. Test the code again -7. Finally, create a GitHub Pull Request - -"#, - index::build_tree()?, - ); - - convo.add_message(Message { - role: MessageRole::System, - content: system_prompt, - ..Default::default() - }); - - convo.add_message(Message { - role: MessageRole::User, - content: "I need help refactoring this code snippet".to_string(), - ..Default::default() - }); - - let timeout = Duration::from_secs(300); - info!("Starting AI Coder agent..."); - info!("Press Ctrl+C to stop the agent."); - loop { - if timeout.as_secs() == 0 { - warn!("Timeout reached. Exiting..."); - break; - } - - let resp: inference_gateway_sdk::GenerateResponse = client - .generate_content( - provider.clone(), - config.agent.model.as_str(), - convo.clone().try_into()?, - ) - .await?; - - let response = resp.response; - - let assistant_message = utils::strip_thinking(&response.content); - if assistant_message.is_none() { - warn!("Assistant message is empty. Exiting..."); - break; - } - - let assistant_message = assistant_message.unwrap().trim().to_string(); - - convo.add_message(Message { - role: MessageRole::Assistant, - content: assistant_message.clone(), - ..Default::default() - }); - - info!("Assistant: {}", assistant_message); - - if response.tool_calls.is_some() { - for tool_call in response.tool_calls.unwrap() { - let tool = tools::Tools::from_str(tool_call.function.name.as_str())?; - let args = tool_call.function.arguments.as_str(); - let tool_result = tools::handle_tool_calls(&tool, args, &config).await?; - - convo.add_message(Message { - role: MessageRole::Tool, - content: tool_result.to_string(), - tool_call_id: Some(tool_call.id), - }); - } - } - } - } - } - - Ok(()) -} - -#[cfg(test)] -mod tests { - use assert_cmd::Command; - use assert_fs::prelude::*; - use log::LevelFilter; - use predicates::prelude::*; - use std::fs; - - use crate::config; - - #[test] - fn test_init_command() { - let _ = env_logger::builder() - .filter_level(LevelFilter::Info) - .is_test(true) - .try_init(); - - let temp_dir = assert_fs::TempDir::new().unwrap(); - - let mut cmd = Command::cargo_bin("coder").unwrap(); - let assert = cmd.current_dir(&temp_dir).arg("init").assert(); - - assert - .success() - .stderr(predicate::str::contains("Initializing AI Coder agent")) - .stderr(predicate::str::contains("Created .coder directory")); - - let config_file = temp_dir.child(".coder/config.yaml"); - config_file.assert(predicate::path::exists()); - config_file.assert(predicate::str::contains(config::default_config())); - - let gitignore_path = temp_dir.join(".gitignore"); - assert!(fs::write(&gitignore_path, ".coder\n").is_ok()); - - let gitignore = temp_dir.child(".gitignore"); - gitignore.assert(predicate::path::exists()); - gitignore.assert(predicate::str::contains(".coder")); - - let content = fs::read_to_string(&gitignore_path).unwrap(); - assert!( - content.contains(".coder"), - "'.coder' entry missing from .gitignore" - ); - } -} From 4e09fd1d561cd536b98f4854229c1698372a34f2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 12:58:30 +0000 Subject: [PATCH 145/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.45=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.45](https://github.com/inference-gateway/coder/compare/0.1.4-rc.44...0.1.4-rc.45) (2025-02-27) ### 📦 Miscellaneous * Bring back dependencies ([e921954](https://github.com/inference-gateway/coder/commit/e92195461950e5bef6376e8e969c611a2489bc0b)) * Rename job from 'B&P Containers' to 'Build Containers' for clarity ([822c8b2](https://github.com/inference-gateway/coder/commit/822c8b2b1584ea3edc43ecdfb49498dddd11ee95)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21171fc..7d51fe3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.45](https://github.com/inference-gateway/coder/compare/0.1.4-rc.44...0.1.4-rc.45) (2025-02-27) + +### 📦 Miscellaneous + +* Bring back dependencies ([e921954](https://github.com/inference-gateway/coder/commit/e92195461950e5bef6376e8e969c611a2489bc0b)) +* Rename job from 'B&P Containers' to 'Build Containers' for clarity ([822c8b2](https://github.com/inference-gateway/coder/commit/822c8b2b1584ea3edc43ecdfb49498dddd11ee95)) + ## [0.1.4-rc.44](https://github.com/inference-gateway/coder/compare/0.1.4-rc.43...0.1.4-rc.44) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index 075789b..404d927 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.44" +version = "0.1.4-rc.45" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index ea4e191..e5c2ac5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.44" +version = "0.1.4-rc.45" edition = "2021" [features] From 9d5b24613646ef678dccdd9279a4739a520e5109 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 13:12:37 +0000 Subject: [PATCH 146/174] build: Comment out build and sign container jobs in release workflow - temporarily Signed-off-by: Eden Reich --- .github/workflows/release.yml | 224 +++++++++++++++++----------------- 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5a0b0c9..1a998fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -218,122 +218,122 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - build_containers: - name: Build Containers - needs: - - github_release - if: needs.github_release.outputs.new_release_published == 'true' - timeout-minutes: 65 - permissions: - packages: write - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-24.04 - target: x86_64-unknown-linux-musl - # - os: - # - self-hosted - # - k8s - # target: aarch64-unknown-linux-musl - container: - image: gcr.io/kaniko-project/executor:v1.23.2-debug - options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 - runs-on: ${{ matrix.os }} - steps: - - name: Login to GitHub Container Registry - run: | - mkdir -p /kaniko/.docker - cat << EOF > /kaniko/.docker/config.json - { - "auths": { - "ghcr.io": { - "auth": "$(echo -n ${{ github.actor }}:${{ secrets.GITHUB_TOKEN }} | base64)" - } - } - } - EOF + # build_containers: + # name: Build Containers + # needs: + # - github_release + # if: needs.github_release.outputs.new_release_published == 'true' + # timeout-minutes: 65 + # permissions: + # packages: write + # strategy: + # fail-fast: false + # matrix: + # include: + # - os: ubuntu-24.04 + # target: x86_64-unknown-linux-musl + # # - os: + # # - self-hosted + # # - k8s + # # target: aarch64-unknown-linux-musl + # container: + # image: gcr.io/kaniko-project/executor:v1.23.2-debug + # options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 + # runs-on: ${{ matrix.os }} + # steps: + # - name: Login to GitHub Container Registry + # run: | + # mkdir -p /kaniko/.docker + # cat << EOF > /kaniko/.docker/config.json + # { + # "auths": { + # "ghcr.io": { + # "auth": "$(echo -n ${{ github.actor }}:${{ secrets.GITHUB_TOKEN }} | base64)" + # } + # } + # } + # EOF - - name: Build and push - env: - REPOSITORY_NAME: coder - REPOSITORY_OWNER: ${{ github.repository_owner }} - CONTAINER_REGISTRY: ghcr.io - VERSION: ${{ needs.github_release.outputs.new_release_version }} - run: | - echo "Available cores: $(nproc)" - /kaniko/executor \ - --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ - --dockerfile=Dockerfile \ - --target=minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ - --build-arg=TARGET_ARCH=${{ matrix.target }} \ - --label="org.opencontainers.image.version=${{ env.VERSION }}" \ - --label="org.opencontainers.image.revision=${{ github.sha }}" \ - --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ - --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ - --label="org.opencontainers.image.licenses=MIT" \ - --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ - --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - --cache-ttl=336h \ - --compressed-caching=true \ - --snapshot-mode=redo \ - --use-new-run \ - --ignore-path=".git" \ - --skip-unused-stages \ + # - name: Build and push + # env: + # REPOSITORY_NAME: coder + # REPOSITORY_OWNER: ${{ github.repository_owner }} + # CONTAINER_REGISTRY: ghcr.io + # VERSION: ${{ needs.github_release.outputs.new_release_version }} + # run: | + # echo "Available cores: $(nproc)" + # /kaniko/executor \ + # --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ + # --dockerfile=Dockerfile \ + # --target=minimal \ + # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ + # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ + # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ + # --build-arg=TARGET_ARCH=${{ matrix.target }} \ + # --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + # --label="org.opencontainers.image.revision=${{ github.sha }}" \ + # --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + # --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + # --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + # --label="org.opencontainers.image.title=Coder" \ + # --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ + # --label="org.opencontainers.image.licenses=MIT" \ + # --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ + # --cache=true \ + # --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + # --cache-ttl=336h \ + # --compressed-caching=true \ + # --snapshot-mode=redo \ + # --use-new-run \ + # --ignore-path=".git" \ + # --skip-unused-stages \ - sign_containers: - name: Sign Container Images - needs: - - github_release - - build_containers - if: needs.github_release.outputs.new_release_published == 'true' - runs-on: ubuntu-24.04 - permissions: - packages: write - id-token: write # needed for signing the images with GitHub OIDC Token - contents: read - env: - REPOSITORY_NAME: coder - REPOSITORY_OWNER: ${{ github.repository_owner }} - CONTAINER_REGISTRY: ghcr.io - VERSION: ${{ needs.github_release.outputs.new_release_version }} - steps: - - name: Install cosign - uses: sigstore/cosign-installer@v3.8.1 - with: - cosign-release: "v2.4.3" + # sign_containers: + # name: Sign Container Images + # needs: + # - github_release + # - build_containers + # if: needs.github_release.outputs.new_release_published == 'true' + # runs-on: ubuntu-24.04 + # permissions: + # packages: write + # id-token: write # needed for signing the images with GitHub OIDC Token + # contents: read + # env: + # REPOSITORY_NAME: coder + # REPOSITORY_OWNER: ${{ github.repository_owner }} + # CONTAINER_REGISTRY: ghcr.io + # VERSION: ${{ needs.github_release.outputs.new_release_version }} + # steps: + # - name: Install cosign + # uses: sigstore/cosign-installer@v3.8.1 + # with: + # cosign-release: "v2.4.3" - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + # - name: Login to GitHub Container Registry + # uses: docker/login-action@v3 + # with: + # registry: ghcr.io + # username: ${{ github.actor }} + # password: ${{ secrets.GITHUB_TOKEN }} - - name: Sign container images with GitHub OIDC - run: | - # Pull the images to sign - docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} - docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest - docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal + # - name: Sign container images with GitHub OIDC + # run: | + # # Pull the images to sign + # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} + # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest + # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal - # Get digests for the images - VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) - LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) - MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) + # # Get digests for the images + # VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) + # LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) + # MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) - echo "Signing image digest: $VERSION_DIGEST" - echo "Signing image digest: $LATEST_DIGEST" - echo "Signing image digest: $MINIMAL_DIGEST" + # echo "Signing image digest: $VERSION_DIGEST" + # echo "Signing image digest: $LATEST_DIGEST" + # echo "Signing image digest: $MINIMAL_DIGEST" - # Sign using digests instead of tags - cosign sign --yes $VERSION_DIGEST - cosign sign --yes $LATEST_DIGEST - cosign sign --yes $MINIMAL_DIGEST + # # Sign using digests instead of tags + # cosign sign --yes $VERSION_DIGEST + # cosign sign --yes $LATEST_DIGEST + # cosign sign --yes $MINIMAL_DIGEST From 2061666ad40a9393fd92f1070c651ae764c1dfab Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 13:15:58 +0000 Subject: [PATCH 147/174] build: Go back to cross-compilation option It's very slow to compile on arm64 A72 cortex, I'll just compile it with this processors and then copy it in the final container image. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1a998fc..19f1dd3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -113,6 +113,8 @@ jobs: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + - os: ubuntu-24.04 + target: aarch64-unknown-linux-musl # - os: # - self-hosted # - k8s @@ -164,7 +166,7 @@ jobs: run: rustup target add ${{ matrix.target }} - name: Add build tools for musl target instead of glibc - if: ${{ !startsWith(matrix.os, 'macos') }} + if: ${{ startsWith(matrix.os, 'ubuntu') }} run: | sudo apt-get update && sudo apt-get install --no-install-recommends -y \ curl \ @@ -186,15 +188,12 @@ jobs: && rm -rf *.tgz - name: Build binary for ${{ matrix.target }} - if: ${{ !startsWith(matrix.os, 'macos') }} + if: ${{ startsWith(matrix.os, 'ubuntu') }} env: PKG_CONFIG_ALLOW_CROSS: 1 - RUSTFLAGS: "-C target-feature=+crt-static -C linker=clang" - CC: clang - AR: llvm-ar - OPENSSL_DIR: /usr - OPENSSL_LIB_DIR: /usr/lib - OPENSSL_INCLUDE_DIR: /usr/include + RUSTFLAGS: "-C target-feature=+crt-static" + CC_x86_64_unknown_linux_musl: /opt/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc + CC_aarch64_unknown_linux_musl: /opt/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc OPENSSL_STATIC: 1 run: | cargo build --release --no-default-features --target ${{ matrix.target }} From 9b59552637fdebdf23055a3429c81b9185387c7c Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 13:19:04 +0000 Subject: [PATCH 148/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.46=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.46](https://github.com/inference-gateway/coder/compare/0.1.4-rc.45...0.1.4-rc.46) (2025-02-27) ### 📦 Miscellaneous * Comment out build and sign container jobs in release workflow - temporarily ([9d5b246](https://github.com/inference-gateway/coder/commit/9d5b24613646ef678dccdd9279a4739a520e5109)) * Go back to cross-compilation option ([2061666](https://github.com/inference-gateway/coder/commit/2061666ad40a9393fd92f1070c651ae764c1dfab)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d51fe3..8c288c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.46](https://github.com/inference-gateway/coder/compare/0.1.4-rc.45...0.1.4-rc.46) (2025-02-27) + +### 📦 Miscellaneous + +* Comment out build and sign container jobs in release workflow - temporarily ([9d5b246](https://github.com/inference-gateway/coder/commit/9d5b24613646ef678dccdd9279a4739a520e5109)) +* Go back to cross-compilation option ([2061666](https://github.com/inference-gateway/coder/commit/2061666ad40a9393fd92f1070c651ae764c1dfab)) + ## [0.1.4-rc.45](https://github.com/inference-gateway/coder/compare/0.1.4-rc.44...0.1.4-rc.45) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index 404d927..edd1ce4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.45" +version = "0.1.4-rc.46" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index e5c2ac5..9507078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.45" +version = "0.1.4-rc.46" edition = "2021" [features] From 16035ec4495a02593c43466f5c6b4eaa83aaeab7 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 13:26:43 +0000 Subject: [PATCH 149/174] build: Add custom linkers for cross-compilation targets Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19f1dd3..5d7b2f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -194,6 +194,8 @@ jobs: RUSTFLAGS: "-C target-feature=+crt-static" CC_x86_64_unknown_linux_musl: /opt/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc CC_aarch64_unknown_linux_musl: /opt/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc + CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER: /opt/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: /opt/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc OPENSSL_STATIC: 1 run: | cargo build --release --no-default-features --target ${{ matrix.target }} From 893198b108e8fe742a4ef48f4976aaa4cae94b82 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 13:30:15 +0000 Subject: [PATCH 150/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.47=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.47](https://github.com/inference-gateway/coder/compare/0.1.4-rc.46...0.1.4-rc.47) (2025-02-27) ### 📦 Miscellaneous * Add custom linkers for cross-compilation targets ([16035ec](https://github.com/inference-gateway/coder/commit/16035ec4495a02593c43466f5c6b4eaa83aaeab7)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c288c4..d45b0b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.47](https://github.com/inference-gateway/coder/compare/0.1.4-rc.46...0.1.4-rc.47) (2025-02-27) + +### 📦 Miscellaneous + +* Add custom linkers for cross-compilation targets ([16035ec](https://github.com/inference-gateway/coder/commit/16035ec4495a02593c43466f5c6b4eaa83aaeab7)) + ## [0.1.4-rc.46](https://github.com/inference-gateway/coder/compare/0.1.4-rc.45...0.1.4-rc.46) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index edd1ce4..a5034ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.46" +version = "0.1.4-rc.47" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 9507078..6450cf2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.46" +version = "0.1.4-rc.47" edition = "2021" [features] From be84a0219e74f87d639c96df709cd4c2ad39f35f Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 13:42:20 +0000 Subject: [PATCH 151/174] chore: Allow to specify the installation version, default to latest Signed-off-by: Eden Reich --- install.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index c676d1a..06adba8 100755 --- a/install.sh +++ b/install.sh @@ -20,7 +20,13 @@ if ! command -v $DEP >/dev/null 2>&1; then exit 1 fi -VERSION=$(curl -sSL "https://api.github.com/repos/inference-gateway/coder/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') +if [ -z "$CODER_VERSION" ]; then + VERSION=$(curl -sSL "https://api.github.com/repos/inference-gateway/coder/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + echo "Downloading latest version: $VERSION" +else + VERSION=$CODER_VERSION + echo "Downloading specified version: $VERSION" +fi OS=$(uname -s) ARCH=$(uname -m) case "$OS" in From ca0c7085d1e4ad255c3ae367ab0800710bdc889e Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:11:36 +0000 Subject: [PATCH 152/174] chore: Allow specifying a version for installation, default to latest Signed-off-by: Eden Reich --- README.md | 2 +- install.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4c7591b..7f1f3e1 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Coder understands project structure rather than just a specific code snippet or Just run: ```bash -curl -sSL https://raw.githubusercontent.com/inference-gateway/coder/refs/heads/main/install.sh | sh +curl -sSL https://raw.githubusercontent.com/inference-gateway/coder/refs/heads/main/install.sh | CODER_VERSION=latest sh - ``` ### Usage diff --git a/install.sh b/install.sh index 06adba8..ffb594e 100755 --- a/install.sh +++ b/install.sh @@ -20,11 +20,11 @@ if ! command -v $DEP >/dev/null 2>&1; then exit 1 fi -if [ -z "$CODER_VERSION" ]; then +if [ -z "$CODER_VERSION" ] || [ "$CODER_VERSION" = "latest" ]; then VERSION=$(curl -sSL "https://api.github.com/repos/inference-gateway/coder/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') echo "Downloading latest version: $VERSION" else - VERSION=$CODER_VERSION + VERSION="$CODER_VERSION" echo "Downloading specified version: $VERSION" fi OS=$(uname -s) From fd53df6d3434f82db4dc81a261da7b999d7da78e Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:30:24 +0000 Subject: [PATCH 153/174] build: Add Dockerfile for building release containers from GitHub binaries Reusing the static binaries will save a lot of time but the tradeoff would be quality since the binary is not natively compiled. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 221 +++++++++++++++++----------------- Dockerfile.release | 34 ++++++ Taskfile.yaml | 33 +++-- 3 files changed, 157 insertions(+), 131 deletions(-) create mode 100644 Dockerfile.release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5d7b2f4..e36fbb8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -219,122 +219,119 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # build_containers: - # name: Build Containers - # needs: - # - github_release - # if: needs.github_release.outputs.new_release_published == 'true' - # timeout-minutes: 65 - # permissions: - # packages: write - # strategy: - # fail-fast: false - # matrix: - # include: - # - os: ubuntu-24.04 - # target: x86_64-unknown-linux-musl - # # - os: - # # - self-hosted - # # - k8s - # # target: aarch64-unknown-linux-musl - # container: - # image: gcr.io/kaniko-project/executor:v1.23.2-debug - # options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 - # runs-on: ${{ matrix.os }} - # steps: - # - name: Login to GitHub Container Registry - # run: | - # mkdir -p /kaniko/.docker - # cat << EOF > /kaniko/.docker/config.json - # { - # "auths": { - # "ghcr.io": { - # "auth": "$(echo -n ${{ github.actor }}:${{ secrets.GITHUB_TOKEN }} | base64)" - # } - # } - # } - # EOF + build_containers: + name: Build Containers + needs: + - github_release + if: needs.github_release.outputs.new_release_published == 'true' + timeout-minutes: 65 + permissions: + packages: write + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl + - os: ubuntu-24.04 + target: aarch64-unknown-linux-musl + container: + image: gcr.io/kaniko-project/executor:v1.23.2-debug + options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 + runs-on: ${{ matrix.os }} + steps: + - name: Login to GitHub Container Registry + run: | + mkdir -p /kaniko/.docker + cat << EOF > /kaniko/.docker/config.json + { + "auths": { + "ghcr.io": { + "auth": "$(echo -n ${{ github.actor }}:${{ secrets.GITHUB_TOKEN }} | base64)" + } + } + } + EOF - # - name: Build and push - # env: - # REPOSITORY_NAME: coder - # REPOSITORY_OWNER: ${{ github.repository_owner }} - # CONTAINER_REGISTRY: ghcr.io - # VERSION: ${{ needs.github_release.outputs.new_release_version }} - # run: | - # echo "Available cores: $(nproc)" - # /kaniko/executor \ - # --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ - # --dockerfile=Dockerfile \ - # --target=minimal \ - # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ - # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ - # --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ - # --build-arg=TARGET_ARCH=${{ matrix.target }} \ - # --label="org.opencontainers.image.version=${{ env.VERSION }}" \ - # --label="org.opencontainers.image.revision=${{ github.sha }}" \ - # --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ - # --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ - # --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ - # --label="org.opencontainers.image.title=Coder" \ - # --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ - # --label="org.opencontainers.image.licenses=MIT" \ - # --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ - # --cache=true \ - # --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - # --cache-ttl=336h \ - # --compressed-caching=true \ - # --snapshot-mode=redo \ - # --use-new-run \ - # --ignore-path=".git" \ - # --skip-unused-stages \ + - name: Build and push + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + run: | + /kaniko/executor \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ + --dockerfile=Dockerfile.release \ + --target=minimal \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ + --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + --label="org.opencontainers.image.revision=${{ github.sha }}" \ + --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ + --cache=true \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-ttl=336h \ + --compressed-caching=true \ + --snapshot-mode=redo \ + --use-new-run \ + --ignore-path=".git" \ + --skip-unused-stages \ - # sign_containers: - # name: Sign Container Images - # needs: - # - github_release - # - build_containers - # if: needs.github_release.outputs.new_release_published == 'true' - # runs-on: ubuntu-24.04 - # permissions: - # packages: write - # id-token: write # needed for signing the images with GitHub OIDC Token - # contents: read - # env: - # REPOSITORY_NAME: coder - # REPOSITORY_OWNER: ${{ github.repository_owner }} - # CONTAINER_REGISTRY: ghcr.io - # VERSION: ${{ needs.github_release.outputs.new_release_version }} - # steps: - # - name: Install cosign - # uses: sigstore/cosign-installer@v3.8.1 - # with: - # cosign-release: "v2.4.3" + sign_containers: + name: Sign Container Images + needs: + - github_release + - build_containers + if: needs.github_release.outputs.new_release_published == 'true' + runs-on: ubuntu-24.04 + permissions: + packages: write + id-token: write # needed for signing the images with GitHub OIDC Token + contents: read + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + steps: + - name: Install cosign + uses: sigstore/cosign-installer@v3.8.1 + with: + cosign-release: "v2.4.3" - # - name: Login to GitHub Container Registry - # uses: docker/login-action@v3 - # with: - # registry: ghcr.io - # username: ${{ github.actor }} - # password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - # - name: Sign container images with GitHub OIDC - # run: | - # # Pull the images to sign - # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} - # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest - # docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal + - name: Sign container images with GitHub OIDC + run: | + # Pull the images to sign + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal - # # Get digests for the images - # VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) - # LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) - # MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) + # Get digests for the images + VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) + LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) + MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) - # echo "Signing image digest: $VERSION_DIGEST" - # echo "Signing image digest: $LATEST_DIGEST" - # echo "Signing image digest: $MINIMAL_DIGEST" + echo "Signing image digest: $VERSION_DIGEST" + echo "Signing image digest: $LATEST_DIGEST" + echo "Signing image digest: $MINIMAL_DIGEST" - # # Sign using digests instead of tags - # cosign sign --yes $VERSION_DIGEST - # cosign sign --yes $LATEST_DIGEST - # cosign sign --yes $MINIMAL_DIGEST + # Sign using digests instead of tags + cosign sign --yes $VERSION_DIGEST + cosign sign --yes $LATEST_DIGEST + cosign sign --yes $MINIMAL_DIGEST diff --git a/Dockerfile.release b/Dockerfile.release new file mode 100644 index 0000000..e07af7c --- /dev/null +++ b/Dockerfile.release @@ -0,0 +1,34 @@ +# Creates a container using pre-built binaries from GitHub releases +# Can be built with: +# docker build -f Dockerfile.release --build-arg VERSION=0.1.4-rc.45 --build-arg TARGET_ARCH=x86_64-unknown-linux-musl -t coder:release . + +# ARG VERSION=latest +# ARG TARGET_ARCH=x86_64-unknown-linux-musl + +# First stage: Download binary +FROM alpine:3.21 AS downloader +ARG VERSION +ARG TARGET_ARCH +RUN apk add --no-cache curl +WORKDIR /tmp +RUN curl -sSL https://github.com/inference-gateway/coder/releases/download/${VERSION}/coder_${TARGET_ARCH} -o coder && \ + chmod +x coder + +# Minimal image with just the binary +FROM gcr.io/distroless/static:nonroot AS minimal +COPY --from=downloader /tmp/coder /coder +USER nonroot:nonroot +ENTRYPOINT ["/coder"] + +# Alpine-based image with minimal tools +FROM alpine:3.21.3 AS standard +RUN apk add --no-cache \ + ca-certificates \ + git \ + curl && \ + addgroup -S -g 1001 coder && \ + adduser -S -G coder -u 1001 -h /home/coder -s /bin/sh -g "Coder user" coder +COPY --from=downloader --chown=coder:coder /tmp/coder /usr/local/bin/coder +USER coder +WORKDIR /home/coder +ENTRYPOINT ["coder"] \ No newline at end of file diff --git a/Taskfile.yaml b/Taskfile.yaml index d6af569..d790f0c 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -31,17 +31,18 @@ tasks: cmds: - cargo install --path . - build-container: - desc: Run the release container command locally + test-container-release: + desc: Build a container from release binaries vars: GITHUB_USER: edenreich GITHUB_TOKEN: ${GITHUB_TOKEN} REPOSITORY_OWNER: inference-gateway REPOSITORY_NAME: coder ORG_NAME: inference-gateway - TARGET: aarch64-unknown-linux-musl - VERSION: local + TARGET_ARCH: aarch64-unknown-linux-musl + VERSION: latest CONTAINER_REGISTRY: ghcr.io + TARGET: minimal cmds: - mkdir -p $(pwd)/kaniko/cache - mkdir -p $(pwd)/kaniko/.docker @@ -69,28 +70,22 @@ tasks: gcr.io/kaniko-project/executor:v1.23.2-debug \ /kaniko/executor \ --context=. \ - --dockerfile=Dockerfile \ - --target=minimal \ - --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:latest \ - --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:minimal \ - --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:minimal-{{.VERSION}} \ - --build-arg=TARGET_ARCH={{.TARGET}} \ + --dockerfile=Dockerfile.release \ + --target={{.TARGET}} \ + --destination={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}:local-{{.VERSION}} \ + --build-arg=VERSION={{.VERSION}} \ + --build-arg=TARGET_ARCH={{.TARGET_ARCH}} \ --label="org.opencontainers.image.version={{.VERSION}}" \ - --label="org.opencontainers.image.revision=" \ - --label="org.opencontainers.image.source=" \ - --label="org.opencontainers.image.url=" \ - --label="org.opencontainers.image.documentation=" \ --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ + --label="org.opencontainers.image.description=The AI-Powered Coder" \ --label="org.opencontainers.image.licenses=MIT" \ - --label="org.opencontainers.image.vendor=" \ --no-push \ - --tar-path=/workspace/artifacts/my-image.tar \ + --tar-path=/workspace/artifacts/release-image.tar \ --cache=true \ --cache-repo={{.CONTAINER_REGISTRY}}/{{.REPOSITORY_OWNER}}/{{.REPOSITORY_NAME}}/cache-{{.TARGET}}-local \ --cache-ttl=336h \ --compressed-caching=true \ - --snapshot-mode=redo \ - --use-new-run \ --ignore-path=".git" \ --skip-unused-stages \ + - | + docker load -i $(pwd)/kaniko/artifacts/release-image.tar From 68e4779dfc7bd2ff02dcc6994cbb5c4074a1591d Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:31:01 +0000 Subject: [PATCH 154/174] build: Remove commented-out configurations from release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e36fbb8..0c776fd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -115,11 +115,6 @@ jobs: target: x86_64-unknown-linux-musl - os: ubuntu-24.04 target: aarch64-unknown-linux-musl - # - os: - # - self-hosted - # - k8s - # - ubuntu-22.04-arm64 - # target: aarch64-unknown-linux-musl - os: macos-latest target: x86_64-apple-darwin - os: macos-latest From d7e768f2a66c09debf5228a0351ec3addfaad949 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:33:11 +0000 Subject: [PATCH 155/174] build: Add VERSION build argument to release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c776fd..6041ee5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -263,6 +263,7 @@ jobs: --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --build-arg=VERSION=${{ env.VERSION }} \ --label="org.opencontainers.image.version=${{ env.VERSION }}" \ --label="org.opencontainers.image.revision=${{ github.sha }}" \ --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ From 8022d642fbcb08fb3ac8cb59cc917d50a5fdffe9 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:41:34 +0000 Subject: [PATCH 156/174] build: Remove some optimization flags, since we're just copying the binary there is no need to trade binary quality over speed, it will be fast enough Signed-off-by: Eden Reich --- .github/workflows/release.yml | 3 --- Dockerfile.release | 33 +++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6041ee5..75499c3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -277,9 +277,6 @@ jobs: --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ --cache-ttl=336h \ --compressed-caching=true \ - --snapshot-mode=redo \ - --use-new-run \ - --ignore-path=".git" \ --skip-unused-stages \ sign_containers: diff --git a/Dockerfile.release b/Dockerfile.release index e07af7c..bcaacdc 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -1,11 +1,3 @@ -# Creates a container using pre-built binaries from GitHub releases -# Can be built with: -# docker build -f Dockerfile.release --build-arg VERSION=0.1.4-rc.45 --build-arg TARGET_ARCH=x86_64-unknown-linux-musl -t coder:release . - -# ARG VERSION=latest -# ARG TARGET_ARCH=x86_64-unknown-linux-musl - -# First stage: Download binary FROM alpine:3.21 AS downloader ARG VERSION ARG TARGET_ARCH @@ -14,14 +6,12 @@ WORKDIR /tmp RUN curl -sSL https://github.com/inference-gateway/coder/releases/download/${VERSION}/coder_${TARGET_ARCH} -o coder && \ chmod +x coder -# Minimal image with just the binary FROM gcr.io/distroless/static:nonroot AS minimal COPY --from=downloader /tmp/coder /coder USER nonroot:nonroot ENTRYPOINT ["/coder"] -# Alpine-based image with minimal tools -FROM alpine:3.21.3 AS standard +FROM alpine:3.21.3 AS coder RUN apk add --no-cache \ ca-certificates \ git \ @@ -31,4 +21,23 @@ RUN apk add --no-cache \ COPY --from=downloader --chown=coder:coder /tmp/coder /usr/local/bin/coder USER coder WORKDIR /home/coder -ENTRYPOINT ["coder"] \ No newline at end of file +ENTRYPOINT ["coder"] + +FROM coder AS rust +ENV PATH="/home/coder/.cargo/bin:${PATH}" \ + RUSTUP_HOME="/home/coder/.rustup" \ + CARGO_HOME="/home/coder/.cargo" +RUN apk add --no-cache \ + rustup && \ + rustup-init -y \ + --no-modify-path \ + --profile minimal \ + --default-toolchain stable \ + --target ${TARGET_ARCH} \ + --component rustfmt clippy && \ + chown -R coder:coder \ + /home/coder/.cargo \ + /home/coder/.rustup +USER coder +WORKDIR /home/coder +ENTRYPOINT [ "coder" ] \ No newline at end of file From 2fdb15aaab98b898db16aa2abaab35db8cf74062 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:46:00 +0000 Subject: [PATCH 157/174] build: Add Python environment setup in Dockerfile for additional tooling Signed-off-by: Eden Reich --- Dockerfile.release | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Dockerfile.release b/Dockerfile.release index bcaacdc..1a44c67 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -23,7 +23,7 @@ USER coder WORKDIR /home/coder ENTRYPOINT ["coder"] -FROM coder AS rust +FROM coder AS coder-rust ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUSTUP_HOME="/home/coder/.rustup" \ CARGO_HOME="/home/coder/.cargo" @@ -40,4 +40,26 @@ RUN apk add --no-cache \ /home/coder/.rustup USER coder WORKDIR /home/coder -ENTRYPOINT [ "coder" ] \ No newline at end of file +ENTRYPOINT [ "coder" ] + +FROM coder AS coder-python +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 +RUN apk add --no-cache \ + python3 \ + py3-pip \ + py3-flake8 \ + py3-pytest \ + py3-mypy \ + py3-isort \ + py3-pylint \ + py3-setuptools \ + py3-wheel && \ + pip install --no-cache-dir --break-system-packages \ + black && \ + rm -rf \ + /tmp/* \ + /var/tmp/* +USER coder +WORKDIR /home/coder +ENTRYPOINT [ "coder" ] From 2b19a862e134db28fd9ffd5f603d49a359570555 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:49:01 +0000 Subject: [PATCH 158/174] build: Enhance release workflow to build and push multiple coder images for different language specific environments Signed-off-by: Eden Reich --- .github/workflows/release.yml | 116 ++++++++++++++++++++++++++++++++-- 1 file changed, 110 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 75499c3..c0fcec6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -248,7 +248,7 @@ jobs: } EOF - - name: Build and push + - name: Build and push minimal image env: REPOSITORY_NAME: coder REPOSITORY_OWNER: ${{ github.repository_owner }} @@ -279,6 +279,96 @@ jobs: --compressed-caching=true \ --skip-unused-stages \ + - name: Build and push coder image + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + run: | + /kaniko/executor \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ + --dockerfile=Dockerfile.release \ + --target=coder \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:coder \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:coder-${{ env.VERSION }} \ + --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --build-arg=VERSION=${{ env.VERSION }} \ + --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + --label="org.opencontainers.image.revision=${{ github.sha }}" \ + --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder with basic tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ + --cache=true \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-ttl=336h \ + --compressed-caching=true \ + --skip-unused-stages \ + + - name: Build and push coder-rust image + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + run: | + /kaniko/executor \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ + --dockerfile=Dockerfile.release \ + --target=coder-rust \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:rust \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:rust-${{ env.VERSION }} \ + --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --build-arg=VERSION=${{ env.VERSION }} \ + --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + --label="org.opencontainers.image.revision=${{ github.sha }}" \ + --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder with Rust development tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ + --cache=true \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-ttl=336h \ + --compressed-caching=true \ + --skip-unused-stages \ + + - name: Build and push coder-python image + env: + REPOSITORY_NAME: coder + REPOSITORY_OWNER: ${{ github.repository_owner }} + CONTAINER_REGISTRY: ghcr.io + VERSION: ${{ needs.github_release.outputs.new_release_version }} + run: | + /kaniko/executor \ + --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ + --dockerfile=Dockerfile.release \ + --target=coder-python \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:python \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:python-${{ env.VERSION }} \ + --build-arg=TARGET_ARCH=${{ matrix.target }} \ + --build-arg=VERSION=${{ env.VERSION }} \ + --label="org.opencontainers.image.version=${{ env.VERSION }}" \ + --label="org.opencontainers.image.revision=${{ github.sha }}" \ + --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ + --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ + --label="org.opencontainers.image.title=Coder" \ + --label="org.opencontainers.image.description=The AI-Powered Coder with Python development tools" \ + --label="org.opencontainers.image.licenses=MIT" \ + --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ + --cache=true \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-ttl=336h \ + --compressed-caching=true \ + --skip-unused-stages \ + sign_containers: name: Sign Container Images needs: @@ -314,17 +404,31 @@ jobs: docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION} docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:coder-${VERSION} + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:coder + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:rust-${VERSION} + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:rust + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:python-${VERSION} + docker pull ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:python # Get digests for the images VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal-${VERSION}) LATEST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:latest) MINIMAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:minimal) + CODER_VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:coder-${VERSION}) + CODER_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:coder) + RUST_VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:rust-${VERSION}) + RUST_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:rust) + PYTHON_VERSION_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:python-${VERSION}) + PYTHON_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${CONTAINER_REGISTRY}/${REPOSITORY_OWNER}/${REPOSITORY_NAME}:python) - echo "Signing image digest: $VERSION_DIGEST" - echo "Signing image digest: $LATEST_DIGEST" - echo "Signing image digest: $MINIMAL_DIGEST" - - # Sign using digests instead of tags + # Sign using digests cosign sign --yes $VERSION_DIGEST cosign sign --yes $LATEST_DIGEST cosign sign --yes $MINIMAL_DIGEST + cosign sign --yes $CODER_VERSION_DIGEST + cosign sign --yes $CODER_DIGEST + cosign sign --yes $RUST_VERSION_DIGEST + cosign sign --yes $RUST_DIGEST + cosign sign --yes $PYTHON_VERSION_DIGEST + cosign sign --yes $PYTHON_DIGEST From f065590a662f650b33c8738ea469beff43871792 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 14:51:22 +0000 Subject: [PATCH 159/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.48=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.48](https://github.com/inference-gateway/coder/compare/0.1.4-rc.47...0.1.4-rc.48) (2025-02-27) ### 🔧 Miscellaneous * Allow specifying a version for installation, default to latest ([ca0c708](https://github.com/inference-gateway/coder/commit/ca0c7085d1e4ad255c3ae367ab0800710bdc889e)) * Allow to specify the installation version, default to latest ([be84a02](https://github.com/inference-gateway/coder/commit/be84a0219e74f87d639c96df709cd4c2ad39f35f)) ### 📦 Miscellaneous * Add Dockerfile for building release containers from GitHub binaries ([fd53df6](https://github.com/inference-gateway/coder/commit/fd53df6d3434f82db4dc81a261da7b999d7da78e)) * Add Python environment setup in Dockerfile for additional tooling ([2fdb15a](https://github.com/inference-gateway/coder/commit/2fdb15aaab98b898db16aa2abaab35db8cf74062)) * Add VERSION build argument to release workflow ([d7e768f](https://github.com/inference-gateway/coder/commit/d7e768f2a66c09debf5228a0351ec3addfaad949)) * Enhance release workflow to build and push multiple coder images for different language specific environments ([2b19a86](https://github.com/inference-gateway/coder/commit/2b19a862e134db28fd9ffd5f603d49a359570555)) * Remove commented-out configurations from release workflow ([68e4779](https://github.com/inference-gateway/coder/commit/68e4779dfc7bd2ff02dcc6994cbb5c4074a1591d)) * Remove some optimization flags, since we're just copying the binary there is no need to trade binary quality over speed, it will be fast enough ([8022d64](https://github.com/inference-gateway/coder/commit/8022d642fbcb08fb3ac8cb59cc917d50a5fdffe9)) --- CHANGELOG.md | 16 ++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d45b0b5..4e65f22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.48](https://github.com/inference-gateway/coder/compare/0.1.4-rc.47...0.1.4-rc.48) (2025-02-27) + +### 🔧 Miscellaneous + +* Allow specifying a version for installation, default to latest ([ca0c708](https://github.com/inference-gateway/coder/commit/ca0c7085d1e4ad255c3ae367ab0800710bdc889e)) +* Allow to specify the installation version, default to latest ([be84a02](https://github.com/inference-gateway/coder/commit/be84a0219e74f87d639c96df709cd4c2ad39f35f)) + +### 📦 Miscellaneous + +* Add Dockerfile for building release containers from GitHub binaries ([fd53df6](https://github.com/inference-gateway/coder/commit/fd53df6d3434f82db4dc81a261da7b999d7da78e)) +* Add Python environment setup in Dockerfile for additional tooling ([2fdb15a](https://github.com/inference-gateway/coder/commit/2fdb15aaab98b898db16aa2abaab35db8cf74062)) +* Add VERSION build argument to release workflow ([d7e768f](https://github.com/inference-gateway/coder/commit/d7e768f2a66c09debf5228a0351ec3addfaad949)) +* Enhance release workflow to build and push multiple coder images for different language specific environments ([2b19a86](https://github.com/inference-gateway/coder/commit/2b19a862e134db28fd9ffd5f603d49a359570555)) +* Remove commented-out configurations from release workflow ([68e4779](https://github.com/inference-gateway/coder/commit/68e4779dfc7bd2ff02dcc6994cbb5c4074a1591d)) +* Remove some optimization flags, since we're just copying the binary there is no need to trade binary quality over speed, it will be fast enough ([8022d64](https://github.com/inference-gateway/coder/commit/8022d642fbcb08fb3ac8cb59cc917d50a5fdffe9)) + ## [0.1.4-rc.47](https://github.com/inference-gateway/coder/compare/0.1.4-rc.46...0.1.4-rc.47) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index a5034ec..bafae2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.47" +version = "0.1.4-rc.48" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 6450cf2..6764265 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.47" +version = "0.1.4-rc.48" edition = "2021" [features] From fa0b9d5e76dacbd76e045cf8c5ed2206e90f20d3 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:53:47 +0000 Subject: [PATCH 160/174] build: Add dependency on build_binaries job for container image signing and building Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c0fcec6..8f97b31 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -218,6 +218,7 @@ jobs: name: Build Containers needs: - github_release + - build_binaries if: needs.github_release.outputs.new_release_published == 'true' timeout-minutes: 65 permissions: @@ -373,6 +374,7 @@ jobs: name: Sign Container Images needs: - github_release + - build_binaries - build_containers if: needs.github_release.outputs.new_release_published == 'true' runs-on: ubuntu-24.04 From 44184143745e3c43c6610a44a1f86e665115e26a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 14:56:21 +0000 Subject: [PATCH 161/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.49=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.49](https://github.com/inference-gateway/coder/compare/0.1.4-rc.48...0.1.4-rc.49) (2025-02-27) ### 📦 Miscellaneous * Add dependency on build_binaries job for container image signing and building ([fa0b9d5](https://github.com/inference-gateway/coder/commit/fa0b9d5e76dacbd76e045cf8c5ed2206e90f20d3)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e65f22..43fb04e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.49](https://github.com/inference-gateway/coder/compare/0.1.4-rc.48...0.1.4-rc.49) (2025-02-27) + +### 📦 Miscellaneous + +* Add dependency on build_binaries job for container image signing and building ([fa0b9d5](https://github.com/inference-gateway/coder/commit/fa0b9d5e76dacbd76e045cf8c5ed2206e90f20d3)) + ## [0.1.4-rc.48](https://github.com/inference-gateway/coder/compare/0.1.4-rc.47...0.1.4-rc.48) (2025-02-27) ### 🔧 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index bafae2a..db97be3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.48" +version = "0.1.4-rc.49" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 6764265..458dac4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.48" +version = "0.1.4-rc.49" edition = "2021" [features] From afd72be568ac73929b91236b8999250589ff45e2 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 14:56:33 +0000 Subject: [PATCH 162/174] build: Simplify container options in release workflow by removing unnecessary resource limits Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8f97b31..c8480f8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: target: aarch64-unknown-linux-musl container: image: gcr.io/kaniko-project/executor:v1.23.2-debug - options: --entrypoint="" --cpu-shares=4096 --memory=6g --cpus=4 + options: --entrypoint="" runs-on: ${{ matrix.os }} steps: - name: Login to GitHub Container Registry From 62e09315b8a343820e1477244125ef029f72f82d Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:21:17 +0000 Subject: [PATCH 163/174] build: Refactor release workflow to support multiple image targets and streamline image building process Signed-off-by: Eden Reich --- .github/workflows/release.yml | 139 ++++++++++------------------------ 1 file changed, 41 insertions(+), 98 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8480f8..21d5f32 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -227,10 +227,45 @@ jobs: fail-fast: false matrix: include: + # linux/amd64 images - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + image_target: minimal + is_latest: true + description: "The AI-Powered Coder without tools (linux/amd64)" + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl + image_target: coder + description: "The AI-Powered Coder with basic tools (linux/amd64)" + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl + image_target: coder-rust + tag_alias: rust + description: "The AI-Powered Coder with Rust development tools (linux/amd64)" + - os: ubuntu-24.04 + target: x86_64-unknown-linux-musl + image_target: coder-python + tag_alias: python + description: "The AI-Powered Coder with Python development tools (linux/amd64)" + # linux/arm64 images - os: ubuntu-24.04 target: aarch64-unknown-linux-musl + image_target: minimal + description: "The AI-Powered Coder without tools (linux/arm64)" + - os: ubuntu-24.04 + target: aarch64-unknown-linux-musl + image_target: coder + description: "The AI-Powered Coder with basic tools (linux/arm64)" + - os: ubuntu-24.04 + target: aarch64-unknown-linux-musl + image_target: coder-rust + tag_alias: rust + description: "The AI-Powered Coder with Rust development tools (linux/arm64)" + - os: ubuntu-24.04 + target: aarch64-unknown-linux-musl + image_target: coder-python + tag_alias: python + description: "The AI-Powered Coder with Python development tools (linux/arm64)" container: image: gcr.io/kaniko-project/executor:v1.23.2-debug options: --entrypoint="" @@ -249,98 +284,7 @@ jobs: } EOF - - name: Build and push minimal image - env: - REPOSITORY_NAME: coder - REPOSITORY_OWNER: ${{ github.repository_owner }} - CONTAINER_REGISTRY: ghcr.io - VERSION: ${{ needs.github_release.outputs.new_release_version }} - run: | - /kaniko/executor \ - --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ - --dockerfile=Dockerfile.release \ - --target=minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:latest \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:minimal-${{ env.VERSION }} \ - --build-arg=TARGET_ARCH=${{ matrix.target }} \ - --build-arg=VERSION=${{ env.VERSION }} \ - --label="org.opencontainers.image.version=${{ env.VERSION }}" \ - --label="org.opencontainers.image.revision=${{ github.sha }}" \ - --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ - --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder without tools" \ - --label="org.opencontainers.image.licenses=MIT" \ - --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ - --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - --cache-ttl=336h \ - --compressed-caching=true \ - --skip-unused-stages \ - - - name: Build and push coder image - env: - REPOSITORY_NAME: coder - REPOSITORY_OWNER: ${{ github.repository_owner }} - CONTAINER_REGISTRY: ghcr.io - VERSION: ${{ needs.github_release.outputs.new_release_version }} - run: | - /kaniko/executor \ - --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ - --dockerfile=Dockerfile.release \ - --target=coder \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:coder \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:coder-${{ env.VERSION }} \ - --build-arg=TARGET_ARCH=${{ matrix.target }} \ - --build-arg=VERSION=${{ env.VERSION }} \ - --label="org.opencontainers.image.version=${{ env.VERSION }}" \ - --label="org.opencontainers.image.revision=${{ github.sha }}" \ - --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ - --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder with basic tools" \ - --label="org.opencontainers.image.licenses=MIT" \ - --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ - --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - --cache-ttl=336h \ - --compressed-caching=true \ - --skip-unused-stages \ - - - name: Build and push coder-rust image - env: - REPOSITORY_NAME: coder - REPOSITORY_OWNER: ${{ github.repository_owner }} - CONTAINER_REGISTRY: ghcr.io - VERSION: ${{ needs.github_release.outputs.new_release_version }} - run: | - /kaniko/executor \ - --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ - --dockerfile=Dockerfile.release \ - --target=coder-rust \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:rust \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:rust-${{ env.VERSION }} \ - --build-arg=TARGET_ARCH=${{ matrix.target }} \ - --build-arg=VERSION=${{ env.VERSION }} \ - --label="org.opencontainers.image.version=${{ env.VERSION }}" \ - --label="org.opencontainers.image.revision=${{ github.sha }}" \ - --label="org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ - --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ - --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder with Rust development tools" \ - --label="org.opencontainers.image.licenses=MIT" \ - --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ - --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ - --cache-ttl=336h \ - --compressed-caching=true \ - --skip-unused-stages \ - - - name: Build and push coder-python image + - name: Build and push image env: REPOSITORY_NAME: coder REPOSITORY_OWNER: ${{ github.repository_owner }} @@ -350,9 +294,8 @@ jobs: /kaniko/executor \ --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile.release \ - --target=coder-python \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:python \ - --destination=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}:python-${{ env.VERSION }} \ + --target=${{ matrix.image_target }} \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ github.repository_owner }}/${{ env.REPOSITORY_NAME }}:${{ matrix.tag_alias }}-${{ env.VERSION }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ --build-arg=VERSION=${{ env.VERSION }} \ --label="org.opencontainers.image.version=${{ env.VERSION }}" \ @@ -361,14 +304,14 @@ jobs: --label="org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}" \ --label="org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/main/README.md" \ --label="org.opencontainers.image.title=Coder" \ - --label="org.opencontainers.image.description=The AI-Powered Coder with Python development tools" \ + --label="org.opencontainers.image.description=${{ matrix.description }}" \ --label="org.opencontainers.image.licenses=MIT" \ --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }}-${{ matrix.image_target }} \ --cache-ttl=336h \ --compressed-caching=true \ - --skip-unused-stages \ + --skip-unused-stages sign_containers: name: Sign Container Images From fa694d3b0754a3306fd5cbcbf6c74fe8ffcecc73 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:23:12 +0000 Subject: [PATCH 164/174] build: Remove 'is_latest' flag for now, I'll build it later Signed-off-by: Eden Reich --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21d5f32..da64fea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -231,7 +231,6 @@ jobs: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl image_target: minimal - is_latest: true description: "The AI-Powered Coder without tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl From 32fa45b33c6bc46e554a6cf1c202a3d13572d6f2 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:25:20 +0000 Subject: [PATCH 165/174] build: Add additional destination tag for container image in release workflow So it's easier to get the latest for the specific language. Signed-off-by: Eden Reich --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da64fea..dd44eae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -295,6 +295,7 @@ jobs: --dockerfile=Dockerfile.release \ --target=${{ matrix.image_target }} \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ github.repository_owner }}/${{ env.REPOSITORY_NAME }}:${{ matrix.tag_alias }}-${{ env.VERSION }} \ + --destination=${{ env.CONTAINER_REGISTRY }}/${{ github.repository_owner }}/${{ env.REPOSITORY_NAME }}:${{ matrix.tag_alias }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ --build-arg=VERSION=${{ env.VERSION }} \ --label="org.opencontainers.image.version=${{ env.VERSION }}" \ From 0f829de8b74d271cb2b90d1399d8a32c0a9520a1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 15:27:53 +0000 Subject: [PATCH 166/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.50=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.50](https://github.com/inference-gateway/coder/compare/0.1.4-rc.49...0.1.4-rc.50) (2025-02-27) ### 📦 Miscellaneous * Add additional destination tag for container image in release workflow ([32fa45b](https://github.com/inference-gateway/coder/commit/32fa45b33c6bc46e554a6cf1c202a3d13572d6f2)) * Refactor release workflow to support multiple image targets and streamline image building process ([62e0931](https://github.com/inference-gateway/coder/commit/62e09315b8a343820e1477244125ef029f72f82d)) * Remove 'is_latest' flag for now, I'll build it later ([fa694d3](https://github.com/inference-gateway/coder/commit/fa694d3b0754a3306fd5cbcbf6c74fe8ffcecc73)) * Simplify container options in release workflow by removing unnecessary resource limits ([afd72be](https://github.com/inference-gateway/coder/commit/afd72be568ac73929b91236b8999250589ff45e2)) --- CHANGELOG.md | 9 +++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43fb04e..3c83d1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.50](https://github.com/inference-gateway/coder/compare/0.1.4-rc.49...0.1.4-rc.50) (2025-02-27) + +### 📦 Miscellaneous + +* Add additional destination tag for container image in release workflow ([32fa45b](https://github.com/inference-gateway/coder/commit/32fa45b33c6bc46e554a6cf1c202a3d13572d6f2)) +* Refactor release workflow to support multiple image targets and streamline image building process ([62e0931](https://github.com/inference-gateway/coder/commit/62e09315b8a343820e1477244125ef029f72f82d)) +* Remove 'is_latest' flag for now, I'll build it later ([fa694d3](https://github.com/inference-gateway/coder/commit/fa694d3b0754a3306fd5cbcbf6c74fe8ffcecc73)) +* Simplify container options in release workflow by removing unnecessary resource limits ([afd72be](https://github.com/inference-gateway/coder/commit/afd72be568ac73929b91236b8999250589ff45e2)) + ## [0.1.4-rc.49](https://github.com/inference-gateway/coder/compare/0.1.4-rc.48...0.1.4-rc.49) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index db97be3..c80074f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.49" +version = "0.1.4-rc.50" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 458dac4..741f410 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.49" +version = "0.1.4-rc.50" edition = "2021" [features] From edf836730a5010f8c721c05067b959acd2195479 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:35:50 +0000 Subject: [PATCH 167/174] build: Add tag aliases for image targets in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dd44eae..a4b5731 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -231,10 +231,12 @@ jobs: - os: ubuntu-24.04 target: x86_64-unknown-linux-musl image_target: minimal + tag_alias: minimal description: "The AI-Powered Coder without tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl image_target: coder + tag_alias: coder description: "The AI-Powered Coder with basic tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl @@ -250,10 +252,12 @@ jobs: - os: ubuntu-24.04 target: aarch64-unknown-linux-musl image_target: minimal + tag_alias: minimal description: "The AI-Powered Coder without tools (linux/arm64)" - os: ubuntu-24.04 target: aarch64-unknown-linux-musl image_target: coder + tag_alias: coder description: "The AI-Powered Coder with basic tools (linux/arm64)" - os: ubuntu-24.04 target: aarch64-unknown-linux-musl From 13d7368ba3129f5eb2455fa1acb95cb9de209b3e Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:36:23 +0000 Subject: [PATCH 168/174] build: Update Dockerfile to set USER just for installing extra dependencies and switch back to coder user Signed-off-by: Eden Reich --- Dockerfile.release | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile.release b/Dockerfile.release index 1a44c67..cdce610 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -24,6 +24,7 @@ WORKDIR /home/coder ENTRYPOINT ["coder"] FROM coder AS coder-rust +USER root ENV PATH="/home/coder/.cargo/bin:${PATH}" \ RUSTUP_HOME="/home/coder/.rustup" \ CARGO_HOME="/home/coder/.cargo" @@ -43,6 +44,7 @@ WORKDIR /home/coder ENTRYPOINT [ "coder" ] FROM coder AS coder-python +USER root ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 RUN apk add --no-cache \ From f0a218d8cf600bb072b0df18e503d4f41f1982f6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 15:39:03 +0000 Subject: [PATCH 169/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.51=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.51](https://github.com/inference-gateway/coder/compare/0.1.4-rc.50...0.1.4-rc.51) (2025-02-27) ### 📦 Miscellaneous * Add tag aliases for image targets in release workflow ([edf8367](https://github.com/inference-gateway/coder/commit/edf836730a5010f8c721c05067b959acd2195479)) * Update Dockerfile to set USER just for installing extra dependencies and switch back to coder user ([13d7368](https://github.com/inference-gateway/coder/commit/13d7368ba3129f5eb2455fa1acb95cb9de209b3e)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c83d1e..a5ec80c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.51](https://github.com/inference-gateway/coder/compare/0.1.4-rc.50...0.1.4-rc.51) (2025-02-27) + +### 📦 Miscellaneous + +* Add tag aliases for image targets in release workflow ([edf8367](https://github.com/inference-gateway/coder/commit/edf836730a5010f8c721c05067b959acd2195479)) +* Update Dockerfile to set USER just for installing extra dependencies and switch back to coder user ([13d7368](https://github.com/inference-gateway/coder/commit/13d7368ba3129f5eb2455fa1acb95cb9de209b3e)) + ## [0.1.4-rc.50](https://github.com/inference-gateway/coder/compare/0.1.4-rc.49...0.1.4-rc.50) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index c80074f..71031ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.50" +version = "0.1.4-rc.51" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index 741f410..b5a245d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.50" +version = "0.1.4-rc.51" edition = "2021" [features] From 28a3a500f31b453c36b4932e803b81ba176d19f0 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:42:09 +0000 Subject: [PATCH 170/174] build: Add platform specification for multi-architecture OCI images in release workflow Signed-off-by: Eden Reich --- .github/workflows/release.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a4b5731..a522086 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -230,42 +230,50 @@ jobs: # linux/amd64 images - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + platform: linux/amd64 image_target: minimal tag_alias: minimal description: "The AI-Powered Coder without tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + platform: linux/amd64 image_target: coder tag_alias: coder description: "The AI-Powered Coder with basic tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + platform: linux/amd64 image_target: coder-rust tag_alias: rust description: "The AI-Powered Coder with Rust development tools (linux/amd64)" - os: ubuntu-24.04 target: x86_64-unknown-linux-musl + platform: linux/amd64 image_target: coder-python tag_alias: python description: "The AI-Powered Coder with Python development tools (linux/amd64)" # linux/arm64 images - os: ubuntu-24.04 target: aarch64-unknown-linux-musl + platform: linux/arm64 image_target: minimal tag_alias: minimal description: "The AI-Powered Coder without tools (linux/arm64)" - os: ubuntu-24.04 target: aarch64-unknown-linux-musl + platform: linux/arm64 image_target: coder tag_alias: coder description: "The AI-Powered Coder with basic tools (linux/arm64)" - os: ubuntu-24.04 target: aarch64-unknown-linux-musl + platform: linux/arm64 image_target: coder-rust tag_alias: rust description: "The AI-Powered Coder with Rust development tools (linux/arm64)" - os: ubuntu-24.04 target: aarch64-unknown-linux-musl + platform: linux/arm64 image_target: coder-python tag_alias: python description: "The AI-Powered Coder with Python development tools (linux/arm64)" @@ -298,6 +306,7 @@ jobs: --context="${{ github.repositoryUrl }}#${{ github.ref }}" \ --dockerfile=Dockerfile.release \ --target=${{ matrix.image_target }} \ + --custom-platform=${{ matrix.platform }} \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ github.repository_owner }}/${{ env.REPOSITORY_NAME }}:${{ matrix.tag_alias }}-${{ env.VERSION }} \ --destination=${{ env.CONTAINER_REGISTRY }}/${{ github.repository_owner }}/${{ env.REPOSITORY_NAME }}:${{ matrix.tag_alias }} \ --build-arg=TARGET_ARCH=${{ matrix.target }} \ From eab1f71f6b47d4eb489c0d3b72e011d8f459e496 Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 15:49:39 +0000 Subject: [PATCH 171/174] build: Try to reuse the same cache entry Signed-off-by: Eden Reich --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a522086..0165e48 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -321,7 +321,7 @@ jobs: --label="org.opencontainers.image.licenses=MIT" \ --label="org.opencontainers.image.vendor=${{ github.repository_owner }}" \ --cache=true \ - --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }}-${{ matrix.image_target }} \ + --cache-repo=${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_OWNER }}/${{ env.REPOSITORY_NAME }}/cache-${{ matrix.target }} \ --cache-ttl=336h \ --compressed-caching=true \ --skip-unused-stages From a58c56cded49eb63ca6c1b49a64240baf60f7c4c Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 15:54:28 +0000 Subject: [PATCH 172/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.52=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.52](https://github.com/inference-gateway/coder/compare/0.1.4-rc.51...0.1.4-rc.52) (2025-02-27) ### 📦 Miscellaneous * Add platform specification for multi-architecture OCI images in release workflow ([28a3a50](https://github.com/inference-gateway/coder/commit/28a3a500f31b453c36b4932e803b81ba176d19f0)) * Try to reuse the same cache entry ([eab1f71](https://github.com/inference-gateway/coder/commit/eab1f71f6b47d4eb489c0d3b72e011d8f459e496)) --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5ec80c..6d189eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.52](https://github.com/inference-gateway/coder/compare/0.1.4-rc.51...0.1.4-rc.52) (2025-02-27) + +### 📦 Miscellaneous + +* Add platform specification for multi-architecture OCI images in release workflow ([28a3a50](https://github.com/inference-gateway/coder/commit/28a3a500f31b453c36b4932e803b81ba176d19f0)) +* Try to reuse the same cache entry ([eab1f71](https://github.com/inference-gateway/coder/commit/eab1f71f6b47d4eb489c0d3b72e011d8f459e496)) + ## [0.1.4-rc.51](https://github.com/inference-gateway/coder/compare/0.1.4-rc.50...0.1.4-rc.51) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index 71031ae..f45b315 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.51" +version = "0.1.4-rc.52" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index b5a245d..fea66d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.51" +version = "0.1.4-rc.52" edition = "2021" [features] From 6611ad35efea24baee66d470571512497068cbde Mon Sep 17 00:00:00 2001 From: Eden Reich Date: Thu, 27 Feb 2025 16:03:00 +0000 Subject: [PATCH 173/174] build: Try something - it's seems that they put it in public preview I just need to it for install the apk packages Signed-off-by: Eden Reich --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0165e48..073af8b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -253,25 +253,25 @@ jobs: tag_alias: python description: "The AI-Powered Coder with Python development tools (linux/amd64)" # linux/arm64 images - - os: ubuntu-24.04 + - os: ubuntu-24.04-arm target: aarch64-unknown-linux-musl platform: linux/arm64 image_target: minimal tag_alias: minimal description: "The AI-Powered Coder without tools (linux/arm64)" - - os: ubuntu-24.04 + - os: ubuntu-24.04-arm target: aarch64-unknown-linux-musl platform: linux/arm64 image_target: coder tag_alias: coder description: "The AI-Powered Coder with basic tools (linux/arm64)" - - os: ubuntu-24.04 + - os: ubuntu-24.04-arm target: aarch64-unknown-linux-musl platform: linux/arm64 image_target: coder-rust tag_alias: rust description: "The AI-Powered Coder with Rust development tools (linux/arm64)" - - os: ubuntu-24.04 + - os: ubuntu-24.04-arm target: aarch64-unknown-linux-musl platform: linux/arm64 image_target: coder-python From 561bce5916f158528513f8a3bb61bd76ee5a58df Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Feb 2025 16:05:29 +0000 Subject: [PATCH 174/174] =?UTF-8?q?chore(release):=20=F0=9F=94=96=200.1.4-?= =?UTF-8?q?rc.53=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## [0.1.4-rc.53](https://github.com/inference-gateway/coder/compare/0.1.4-rc.52...0.1.4-rc.53) (2025-02-27) ### 📦 Miscellaneous * Try something - it's seems that they put it in public preview ([6611ad3](https://github.com/inference-gateway/coder/commit/6611ad35efea24baee66d470571512497068cbde)) --- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d189eb..5f58603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.1.4-rc.53](https://github.com/inference-gateway/coder/compare/0.1.4-rc.52...0.1.4-rc.53) (2025-02-27) + +### 📦 Miscellaneous + +* Try something - it's seems that they put it in public preview ([6611ad3](https://github.com/inference-gateway/coder/commit/6611ad35efea24baee66d470571512497068cbde)) + ## [0.1.4-rc.52](https://github.com/inference-gateway/coder/compare/0.1.4-rc.51...0.1.4-rc.52) (2025-02-27) ### 📦 Miscellaneous diff --git a/Cargo.lock b/Cargo.lock index f45b315..e725c44 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coder" -version = "0.1.4-rc.52" +version = "0.1.4-rc.53" dependencies = [ "assert_cmd", "assert_fs", diff --git a/Cargo.toml b/Cargo.toml index fea66d9..11be94f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coder" -version = "0.1.4-rc.52" +version = "0.1.4-rc.53" edition = "2021" [features]