diff --git a/.github/workflows/nix_build.yaml b/.github/workflows/nix_build.yaml new file mode 100644 index 000000000..33c8ff143 --- /dev/null +++ b/.github/workflows/nix_build.yaml @@ -0,0 +1,53 @@ +name: "Nix Build Docker image" +on: + pull_request: + push: + branches: + - 'main' + tags: + - 'v*' +concurrency: + group: nix-image-${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + build_nix_image: + runs-on: + group: aws-highmemory-32-plus-priv + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v27 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v14 + with: + name: text-generation-inference + # If you chose signing key for write access + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + env: + USER: github_runner + - name: Build + run: nix build .#dockerImage + - name: Initialize Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + install: true + buildkitd-config: /tmp/buildkitd.toml + - name: Inject slug/short variables + uses: rlespinasse/github-slug-action@v4.4.1 + - name: Login to internal Container Registry + # if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + registry: registry.internal.huggingface.tech + - name: Push to docker + run: | + if [ "${{ github.event_name }}" = "pull_request" ]; then + export TAG=nix-sha-${{ env.GITHUB_SHA_SHORT }} + else + export TAG=nix-{{ version }} + fi + export IMAGE=registry.internal.huggingface.tech/api-inference/community/text-generation-inference:$TAG + nix-shell -p skopeo --command "skopeo --insecure-policy copy docker-archive:$(readlink -f ./result) docker://$IMAGE --dest-compress-format zstd" diff --git a/nix/docker.nix b/nix/docker.nix index a8fc256e6..ed9e56d28 100644 --- a/nix/docker.nix +++ b/nix/docker.nix @@ -3,7 +3,6 @@ dockerTools, cacert, text-generation-inference, - runCommand, stream ? false, }: @@ -13,6 +12,7 @@ in build { name = "tgi-docker"; tag = "latest"; + compressor = "zstd"; config = { EntryPoint = [ "${text-generation-inference}/bin/text-generation-inference" ]; Env = [