2022-08-14 08:29:00 +03:00
package runtime
import (
"context"
"gitea.com/gitea/act_runner/client"
2022-08-17 09:26:58 +03:00
runnerv1 "gitea.com/gitea/proto-go/runner/v1"
2022-08-14 08:29:00 +03:00
2022-10-14 05:55:49 +03:00
"github.com/bufbuild/connect-go"
2022-09-03 15:57:32 +03:00
log "github.com/sirupsen/logrus"
2022-08-14 08:29:00 +03:00
)
// Runner runs the pipeline.
type Runner struct {
2022-10-16 18:51:53 +03:00
Machine string
ForgeInstance string
Environ map [ string ] string
Client client . Client
2022-08-14 08:29:00 +03:00
}
// Run runs the pipeline stage.
2022-09-25 13:54:00 +03:00
func ( s * Runner ) Run ( ctx context . Context , task * runnerv1 . Task ) error {
2022-09-03 15:57:32 +03:00
l := log .
2022-09-25 13:54:00 +03:00
WithField ( "task.id" , task . Id )
2022-08-14 08:29:00 +03:00
l . Info ( "start running pipeline" )
2022-09-01 10:09:22 +03:00
2022-10-14 05:55:49 +03:00
// update runner status
// running: idle -> active
// stopped: active -> idle
if _ , err := s . Client . UpdateRunner (
ctx ,
connect . NewRequest ( & runnerv1 . UpdateRunnerRequest {
Status : runnerv1 . RunnerStatus_RUNNER_STATUS_ACTIVE ,
} ) ,
) ; err != nil {
return err
}
l . Info ( "update runner status to active" )
defer func ( ) {
if _ , err := s . Client . UpdateRunner (
ctx ,
connect . NewRequest ( & runnerv1 . UpdateRunnerRequest {
Status : runnerv1 . RunnerStatus_RUNNER_STATUS_IDLE ,
} ) ,
) ; err != nil {
log . Errorln ( "update status error:" , err . Error ( ) )
}
l . Info ( "update runner status to idle" )
} ( )
2022-10-16 18:51:53 +03:00
return NewTask ( s . ForgeInstance , task . Id , s . Client ) . Run ( ctx , task )
2022-08-14 08:29:00 +03:00
}