Files
GithubWorkflowTool/include/backends/ContainerBackend.h
2025-12-27 03:03:18 +00:00

42 lines
902 B
C++

#pragma once
#include "ExecutionBackend.h"
namespace gwt {
namespace backends {
/**
* @brief Container-based execution backend (using Docker or Podman)
*/
class ContainerBackend : public ExecutionBackend {
Q_OBJECT
public:
explicit ContainerBackend(QObject* parent = nullptr);
~ContainerBackend() override;
bool executeStep(const core::WorkflowStep& step,
const QVariantMap& context) override;
bool prepareEnvironment(const QString& runsOn) override;
void cleanup() override;
private:
QString m_containerId;
QString m_containerRuntime; // "docker" or "podman"
/**
* @brief Detect available container runtime
*/
bool detectRuntime();
/**
* @brief Map GitHub runner spec to container image
*/
QString mapRunsOnToImage(const QString& runsOn) const;
};
} // namespace backends
} // namespace gwt