Skip to content

A sample implementation of workflows artifact plugins

License

argoproj-labs/artifact-plugin-s3

Repository files navigation

Sample Argo Workflows Artifact Plugin Server

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.

Prerequisites

  • Go 1.24.4 or later
  • Protocol Buffers compiler (protoc)
  • Make
  • Docker

Installation

Development Environment

This project uses devenv to manage the development environment.

Setup

  1. Install devenv:
nix profile install --accept-flake-config github:cachix/devenv/latest
  1. Install the project dependencies:
devenv up

Build

  1. Build the project:
make artifact-server

This will:

  • Download the artifact.proto file from the Argo Workflows repository
  • Generate Go code from the protobuf definitions
  • Build the artifact-server binary

Usage

Run the server with a Unix socket path:

make run SOCKET=/tmp/artifact-server.sock

Or run the binary directly:

./artifact-server /tmp/artifact-server.sock

Implementation

The server implements all methods defined in the Argo Workflows artifact service:

  • Load: Load artifacts from a remote location
  • OpenStream: Stream artifact data
  • Save: Save artifacts to a remote location
  • Delete: Delete artifacts
  • ListObjects: List objects in an artifact location
  • IsDirectory: Check if an artifact is a directory

Docker

Build the Docker image:

docker build -t artifact-server .

Run the container:

docker run --rm -v /tmp:/tmp artifact-server /tmp/artifact-server.sock

The container uses a minimal scratch base image for security. The binary is statically linked and requires no external libraries.

Development

To clean build artifacts:

make clean

About

A sample implementation of workflows artifact plugins

Resources

License

Stars

Watchers

Forks

Packages