GoogleContainerTools/skaffold · error
not implemented error: SkaffoldRunner(v2).GeneratePipeline
Error message
not implemented error: SkaffoldRunner(v2).GeneratePipeline
What it means
SkaffoldRunner (the v2 runner) does not implement pipeline generation; GeneratePipeline is only implemented by the v1 runner. Any call on the v2 runner immediately returns this fixed 'not implemented error'. This is a deliberate stub, not a runtime condition.
Source
Thrown at pkg/skaffold/runner/generate_pipeline.go:28
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package runner
import (
"context"
"fmt"
"io"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/util"
)
func (r *SkaffoldRunner) GeneratePipeline(ctx context.Context, out io.Writer, configs []util.VersionedConfig, configPaths []string, fileOut string) error {
return fmt.Errorf("not implemented error: SkaffoldRunner(v2).GeneratePipeline")
}
View on GitHub (pinned to a1189de023)
Solutions
- Do not use generate-pipeline with a v2 skaffold binary; run it with a v1 (v0.x/v1.x) skaffold release
- Convert any v1-schema skaffold.yaml the command needs, or keep a v1 binary side-by-side for this one command
- Replace CI usage of generate-pipeline with an alternative (e.g. generate CI config via skaffold's newer tooling or your own templating)
- If you control the caller, guard the call and surface a clear 'unsupported in v2' message
Example fix
// before (v2 binary) $ skaffold generate-pipeline --ansible-inventory=inv // error: not implemented error: SkaffoldRunner(v2).GeneratePipeline // after: use a v1 binary for this command $ curl -Lo skaffold-v1 https://storage.googleapis.com/skaffold/releases/v1.39.5/skaffold-linux-amd64 $ ./skaffold-v1 generate-pipeline --ansible-inventory=inv
Defensive patterns
Strategy: fallback
Validate before calling
// skip generate-pipeline on v2
if strings.HasPrefix(binaryVersion, "v2") || apiVersion == "skaffold/v2..." {
return errors.New("generate-pipeline is only supported by skaffold v1")
} Type guard
func isNotImplementedErr(err error) bool {
return err != nil && strings.Contains(err.Error(), "not implemented error: SkaffoldRunner(v2)")
} Try / catch
if err := runner.GeneratePipeline(ctx, out, configs, paths, fileOut); isNotImplementedErr(err) {
// fall back to a v1 skaffold binary or an alternative generator
return runV1GeneratePipeline()
} Prevention
- Check `skaffold version` before calling v1-only commands in scripts
- Keep generate-pipeline usage pinned to a v1 binary
- Migrate CI to v2-supported workflows
- Feature-detect via command help output before invoking
When it happens
Trigger: Invoking `skaffold generate-pipeline` (or calling SkaffoldRunner.GeneratePipeline directly) while running under the v2 API/config path, where the command is routed to the v2 runner.
Common situations: Running `skaffold generate-pipeline` with a skaffold v2 binary or with a v2-schema skaffold.yaml (apiVersion skaffold/v2*), so the v2 runner is selected; CI scripts still calling the v1-only command after upgrading skaffold.
Related errors
- `apply` requires at least one manifest argument
- `exec` requires exactly one action to execute
- `config-dependencies add` requires exactly one file path arg
- `jobManifestPaths modify` requires exactly one manifest file
- `inspect namespaces list` requires exactly one manifest file
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/93959b727aabb91a.
Report an issue: GitHub.