2022-08-14 06:29:00 +01:00
|
|
|
package runtime
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"gitea.com/gitea/act_runner/client"
|
2022-08-17 07:26:58 +01:00
|
|
|
runnerv1 "gitea.com/gitea/proto-go/runner/v1"
|
2022-08-14 06:29:00 +01:00
|
|
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
)
|
|
|
|
|
2022-08-28 07:05:56 +01:00
|
|
|
// Defines the Resource Kind and Type.
|
|
|
|
const (
|
|
|
|
Kind = "pipeline"
|
|
|
|
Type = "docker"
|
|
|
|
)
|
|
|
|
|
2022-08-14 06:29:00 +01:00
|
|
|
// Runner runs the pipeline.
|
|
|
|
type Runner struct {
|
|
|
|
Machine string
|
|
|
|
Environ map[string]string
|
|
|
|
Client client.Client
|
|
|
|
}
|
|
|
|
|
|
|
|
// Run runs the pipeline stage.
|
2022-08-28 07:05:56 +01:00
|
|
|
func (s *Runner) Run(ctx context.Context, runner *runnerv1.Runner) error {
|
2022-08-14 06:29:00 +01:00
|
|
|
l := logrus.
|
2022-08-28 07:05:56 +01:00
|
|
|
WithField("runner.UUID", runner.Uuid).
|
|
|
|
WithField("runner.token", runner.Token)
|
2022-08-14 06:29:00 +01:00
|
|
|
|
2022-08-28 07:05:56 +01:00
|
|
|
l.Info("request a new task")
|
|
|
|
// TODO: get new task
|
2022-08-14 06:29:00 +01:00
|
|
|
|
2022-08-28 07:05:56 +01:00
|
|
|
return s.run(ctx, runner)
|
2022-08-14 06:29:00 +01:00
|
|
|
}
|
|
|
|
|
2022-08-28 07:05:56 +01:00
|
|
|
func (s *Runner) run(ctx context.Context, runner *runnerv1.Runner) error {
|
2022-08-14 06:29:00 +01:00
|
|
|
l := logrus.
|
2022-08-28 07:05:56 +01:00
|
|
|
WithField("runner.Uuid", runner.Uuid)
|
2022-08-14 06:29:00 +01:00
|
|
|
|
|
|
|
l.Info("start running pipeline")
|
|
|
|
// TODO: docker runner with stage data
|
2022-08-28 07:05:56 +01:00
|
|
|
// task.Run is blocking, so we need to use goroutine to run it in background
|
2022-08-23 13:47:14 +01:00
|
|
|
// return task metadata and status to the server
|
|
|
|
task := NewTask()
|
|
|
|
return task.Run(ctx)
|
2022-08-14 06:29:00 +01:00
|
|
|
}
|