Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9f125b9
Upload code (#1)
miguelmdh May 27, 2025
f3e6792
Redis Operator logic and API
miguelmdh Jul 11, 2025
9b483d4
Renaming rediscluster endpoints as redkeycluster (#5)
albertompe Aug 28, 2025
d2320b3
Added new endpoint to recreate the cluster (#6)
albertompe Sep 8, 2025
99b455a
Fix panic when resharding and tests (#8)
miguelmdh Sep 16, 2025
7a24bdb
Check for open slots over reconciliations when upgrading and fixing u…
albertompe Oct 22, 2025
09957e2
Error handling when executing commands (#11)
albertompe Nov 4, 2025
994558e
Fixes and stabilization (#12)
albertompe Nov 18, 2025
c40f251
Fix IMG default value
Nov 27, 2025
02b1a0f
Fix IMG default value
albertompe Nov 27, 2025
e0de29c
Fix IMG default value
albertompe Nov 27, 2025
f5de648
Robin using primaries and decoupling Operator from Redis (#13)
albertompe Dec 4, 2025
68c14c0
Fix Operator E2E tests (#14)
miguelmdh Jan 15, 2026
3929f1f
Start the server and then initialize the cluster. Error handling fixed
albertompe Jan 16, 2026
1ec3e7f
Start the server and then initialize the cluster. Error handling fixed
albertompe Jan 16, 2026
de8fe4c
Exit when error instantiating reconciler or poller. Standardize error…
albertompe Jan 20, 2026
d2d3658
fix: remove E2E test Make targets that are not being used
DanielDorado Jan 20, 2026
eb2aeb9
Update Go version to v1.25.6 (#17)
albertompe Jan 20, 2026
0640ef5
fix: .tool-version file. (#18)
DanielDorado Jan 20, 2026
793825d
Upgrading stucked when resharding to empty a node (#20)
albertompe Jan 29, 2026
84a4dd0
Prepare release (#21)
albertompe Feb 10, 2026
76612e0
chore: update CODEOWNERS
jorgeteixe Aug 29, 2025
88c5ab6
Update SECURITY.md (#7)
javi-patch Sep 8, 2025
c32797c
Update CLA mention in CONTRIBUTING.md
marianoao Jan 26, 2026
7a6eca3
Merge branch 'main' into develop
albertompe Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# SPDX-FileCopyrightText: 2025 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
# SPDX-License-Identifier: Apache-2.0
name: 🚀 Release
permissions: read-all

on:
release:
types:
- created

env:
REGISTRY: ghcr.io
IMAGE_NAME: inditextech/redkey-robin

jobs:
release:
name: 🏷️ Release
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
user_agent_version: ${{ steps.version.outputs.user_agent_version }}
steps:
- name: 🛎️ Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
fetch-depth: 0
- name: 📝 Load Robin version
id: version
run: |
echo "version=$(make version)" >> $GITHUB_OUTPUT
echo $GITHUB_OUTPUT

check:
name: 🔎 Check versions
needs: release
runs-on: ubuntu-latest
steps:
- name: 🔎 Check versions
run: |
echo "version: ${{ needs.release.outputs.version }}"
echo "tag_name: ${{ github.event.release.tag_name }}"

if [ "${{ github.event.release.tag_name }}" != "${{ needs.release.outputs.version }}" ]; then
echo "Version in Makefile does not match release tag"
exit 1
fi

build:
name: 🛠️ Build Robin image
needs: check
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: 🛎️ Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
fetch-depth: 0

- name: 🔐 Login into ${{ env.REGISTRY }}
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: 🏗️ Build and push Robin image
run: |
make docker-build IMAGE_TAG_BASE=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
make docker-push IMAGE_TAG_BASE=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
36 changes: 36 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
bin
testbin/*
config/test/tests.yaml
/iac-redisoperator
target/
.local/

# Test binary, build with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Output of Goland coverage
cover.out
coverage.html

# Kubernetes Generated files - skip generated files, except for vendored files

!vendor/**/zz_generated.*

# editor and IDE paraphernalia
.idea
*.swp
*.swo
*~
.vscode

# OSS Review Toolkit (ORT) temporary files
ort/
3 changes: 3 additions & 0 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SPDX-FileCopyrightText: 2025 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
# SPDX-License-Identifier: Apache-2.0
golang 1.25.7
23 changes: 23 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// SPDX-FileCopyrightText: 2025 INDUSTRIA DE DISEÑO TEXTIL, S.A. (INDITEX, S.A.)
//
// SPDX-License-Identifier: Apache-2.0

{
"version": "0.2.0",
"configurations": [
{
"name": "Connect to robin",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "${workspaceFolder}",
"port": 40002,
"host": "127.0.0.1",
"trace": "verbose",
"env": {
"WATCH_NAMESPACE": "default",
"KUBERNETES_CONFIG": "${HOME}/.kube/config",
}
}
]
}
73 changes: 73 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# SPDX-FileCopyrightText: 2025 INDUSTRIA DE DISEÑO TEXTIL, S.A. (INDITEX, S.A.)
#
# SPDX-License-Identifier: Apache-2.0

### Build stage

# Define the desired Golang version
ARG GOLANG_VERSION=1.25.7

# Use an official Golang image with a specific version based on Debian
FROM golang:${GOLANG_VERSION}-trixie AS builder

# Set environment variables
ENV GOPROXY=https://proxy.golang.org,direct
ENV CGO_ENABLED=0

## Build the desired redis-client binary version

# Create a working directory for the redis client
WORKDIR /redis-client

# Install git to be able to clone the repository
RUN apt update && apt upgrade -y && apt install -y git

# Define the desired Redis client version
ARG REDIS_CLIENT_VERSION=8.2.3

# Clone the Redis repository, checkout the desired version and build redis-cli
RUN git clone https://github.com/redis/redis.git && \
cd redis && \
git checkout ${REDIS_CLIENT_VERSION} && \
make redis-cli


## Build manager binary

# Create a working directory for the application
WORKDIR /app

# Copy Go module files and download dependencies first for better caching
COPY go.mod go.sum ./
RUN go mod download

# Copy the entire source code
COPY / .

# Build the Go application with version information
RUN go build -ldflags "-X main.version=2.0.0" -o robin ./cmd/


### Final stage

# Use a smaller base image for the final stage
FROM debian:trixie-slim AS final

# Install some useful tools
RUN apt update && apt upgrade -y && apt install -y curl procps

# Create a non-root user
# RUN addgroup -S robin && adduser -S -u 10000 -G robin robin
RUN groupadd --gid 10000 robin && useradd --uid 10000 -g robin robin

# Copy the Go binary from the builder stage
COPY --from=builder /app/robin /robin

# Copy the redis-cli binary from the redis-client stage
COPY --from=builder /redis-client/redis/src/redis-cli /usr/local/bin/redis-cli

# Switch to the non-root user
USER robin

# Set the entry point
ENTRYPOINT ["/robin"]
Loading
Loading