This plugin is not maintained or supported. It is here as a sample implementation and used to test the Argo Workflows artifact plugin feature.
This is a gRPC server that implements the Argo Workflows artifact service interface. It provides a basic implementation of all required artifact operations, copied from the builtin S3 artifact driver in the Argo Workflows repository.
The docker image is published as ghcr.io/argoproj-labs/artifact-driver-s3.
- Go 1.24.4 or later
- Protocol Buffers compiler (
protoc) - Make
- Docker
This project uses devenv to manage the development environment.
- Install devenv:
nix profile install --accept-flake-config github:cachix/devenv/latest- Install the project dependencies:
devenv up- Build the project:
make artifact-serverThis will:
- Download the artifact.proto file from the Argo Workflows repository
- Generate Go code from the protobuf definitions
- Build the artifact-server binary
Run the server with a Unix socket path:
make run SOCKET=/tmp/artifact-server.sockOr run the binary directly:
./artifact-server /tmp/artifact-server.sockThe server implements all methods defined in the Argo Workflows artifact service:
Load: Load artifacts from a remote locationOpenStream: Stream artifact dataSave: Save artifacts to a remote locationDelete: Delete artifactsListObjects: List objects in an artifact locationIsDirectory: Check if an artifact is a directory
Build the Docker image:
docker build -t artifact-server .Run the container:
docker run --rm -v /tmp:/tmp artifact-server /tmp/artifact-server.sockThe container uses a minimal scratch base image for security.
The binary is statically linked and requires no external libraries.
To clean build artifacts:
make clean