mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-23 00:46:30 +00:00
Refactor JSON and SDK fields (#3968)
This commit is contained in:
parent
2d1bc9f15c
commit
2081ca85db
16 changed files with 164 additions and 133 deletions
|
@ -4415,8 +4415,7 @@ const docTemplate = `{
|
||||||
"branch": {
|
"branch": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"created_at": {
|
"created": {
|
||||||
"description": "TODO change JSON field to \"created\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"creator_id": {
|
"creator_id": {
|
||||||
|
@ -4458,15 +4457,13 @@ const docTemplate = `{
|
||||||
"commit": {
|
"commit": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"created_at": {
|
"created": {
|
||||||
"description": "TODO change JSON field to \"created\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"event": {
|
"event": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"finished_at": {
|
"finished": {
|
||||||
"description": "TODO change JSON field to \"finished\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
|
@ -4487,8 +4484,7 @@ const docTemplate = `{
|
||||||
"repo_id": {
|
"repo_id": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"started_at": {
|
"started": {
|
||||||
"description": "TODO change JSON field to \"started\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
|
@ -4645,8 +4641,7 @@ const docTemplate = `{
|
||||||
"commit": {
|
"commit": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"created_at": {
|
"created": {
|
||||||
"description": "TODO change JSON field to \"created\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"deploy_task": {
|
"deploy_task": {
|
||||||
|
@ -4664,8 +4659,7 @@ const docTemplate = `{
|
||||||
"event": {
|
"event": {
|
||||||
"$ref": "#/definitions/WebhookEvent"
|
"$ref": "#/definitions/WebhookEvent"
|
||||||
},
|
},
|
||||||
"finished_at": {
|
"finished": {
|
||||||
"description": "TODO change JSON field to \"finished\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"forge_url": {
|
"forge_url": {
|
||||||
|
@ -4698,8 +4692,7 @@ const docTemplate = `{
|
||||||
"refspec": {
|
"refspec": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"reviewed_at": {
|
"reviewed": {
|
||||||
"description": "TODO change JSON field to \"reviewed\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"reviewed_by": {
|
"reviewed_by": {
|
||||||
|
@ -4709,8 +4702,7 @@ const docTemplate = `{
|
||||||
"description": "uses reported user for webhooks and name of cron for cron pipelines",
|
"description": "uses reported user for webhooks and name of cron for cron pipelines",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"started_at": {
|
"started": {
|
||||||
"description": "TODO change JSON field to \"started\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
|
@ -4722,8 +4714,7 @@ const docTemplate = `{
|
||||||
"title": {
|
"title": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"updated_at": {
|
"updated": {
|
||||||
"description": "TODO change JSON field to \"updated\" in 3.0",
|
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"variables": {
|
"variables": {
|
||||||
|
@ -5012,15 +5003,15 @@ const docTemplate = `{
|
||||||
"Step": {
|
"Step": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"end_time": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"error": {
|
"error": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"exit_code": {
|
"exit_code": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"finished": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"id": {
|
"id": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
@ -5036,7 +5027,7 @@ const docTemplate = `{
|
||||||
"ppid": {
|
"ppid": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"start_time": {
|
"started": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
@ -5196,9 +5187,6 @@ const docTemplate = `{
|
||||||
"$ref": "#/definitions/Step"
|
"$ref": "#/definitions/Step"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"end_time": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"environ": {
|
"environ": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
|
@ -5208,6 +5196,9 @@ const docTemplate = `{
|
||||||
"error": {
|
"error": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"finished": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"id": {
|
"id": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
@ -5223,7 +5214,7 @@ const docTemplate = `{
|
||||||
"platform": {
|
"platform": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"start_time": {
|
"started": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
|
|
@ -25,6 +25,7 @@ Some versions need some changes to the server configuration or the pipeline conf
|
||||||
- Deprecated `environment` filter, use `when.evaluate`
|
- Deprecated `environment` filter, use `when.evaluate`
|
||||||
- Removed `WOODPECKER_WEBHOOK_HOST` in favor of `WOODPECKER_EXPERT_WEBHOOK_HOST`
|
- Removed `WOODPECKER_WEBHOOK_HOST` in favor of `WOODPECKER_EXPERT_WEBHOOK_HOST`
|
||||||
- Migrated to rfc9421 for webhook signatures
|
- Migrated to rfc9421 for webhook signatures
|
||||||
|
- Renamed `start_time`, `end_time`, `created_at`, `started_at`, `finished_at` and `reviewed_at` JSON fields to `started`, `finished`, `created`, `started`, `finished`, `reviewed`
|
||||||
|
|
||||||
## 2.0.0
|
## 2.0.0
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ type Cron struct {
|
||||||
CreatorID int64 `json:"creator_id" xorm:"creator_id INDEX"`
|
CreatorID int64 `json:"creator_id" xorm:"creator_id INDEX"`
|
||||||
NextExec int64 `json:"next_exec" xorm:"next_exec"`
|
NextExec int64 `json:"next_exec" xorm:"next_exec"`
|
||||||
Schedule string `json:"schedule" xorm:"schedule NOT NULL"` // @weekly, 3min, ...
|
Schedule string `json:"schedule" xorm:"schedule NOT NULL"` // @weekly, 3min, ...
|
||||||
Created int64 `json:"created_at" xorm:"created NOT NULL DEFAULT 0"` // TODO change JSON field to "created" in 3.0
|
Created int64 `json:"created" xorm:"created NOT NULL DEFAULT 0"`
|
||||||
Branch string `json:"branch" xorm:"branch"`
|
Branch string `json:"branch" xorm:"branch"`
|
||||||
} // @name Cron
|
} // @name Cron
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,9 @@ type Feed struct {
|
||||||
Number int64 `json:"number,omitempty" xorm:"pipeline_number"`
|
Number int64 `json:"number,omitempty" xorm:"pipeline_number"`
|
||||||
Event string `json:"event,omitempty" xorm:"pipeline_event"`
|
Event string `json:"event,omitempty" xorm:"pipeline_event"`
|
||||||
Status string `json:"status,omitempty" xorm:"pipeline_status"`
|
Status string `json:"status,omitempty" xorm:"pipeline_status"`
|
||||||
Created int64 `json:"created_at,omitempty" xorm:"pipeline_created"` // TODO change JSON field to "created" in 3.0
|
Created int64 `json:"created,omitempty" xorm:"pipeline_created"`
|
||||||
Started int64 `json:"started_at,omitempty" xorm:"pipeline_started"` // TODO change JSON field to "started" in 3.0
|
Started int64 `json:"started,omitempty" xorm:"pipeline_started"`
|
||||||
Finished int64 `json:"finished_at,omitempty" xorm:"pipeline_finished"` // TODO change JSON field to "finished" in 3.0
|
Finished int64 `json:"finished,omitempty" xorm:"pipeline_finished"`
|
||||||
Commit string `json:"commit,omitempty" xorm:"pipeline_commit"`
|
Commit string `json:"commit,omitempty" xorm:"pipeline_commit"`
|
||||||
Branch string `json:"branch,omitempty" xorm:"pipeline_branch"`
|
Branch string `json:"branch,omitempty" xorm:"pipeline_branch"`
|
||||||
Ref string `json:"ref,omitempty" xorm:"pipeline_ref"`
|
Ref string `json:"ref,omitempty" xorm:"pipeline_ref"`
|
||||||
|
|
|
@ -28,10 +28,10 @@ type Pipeline struct {
|
||||||
Event WebhookEvent `json:"event" xorm:"event"`
|
Event WebhookEvent `json:"event" xorm:"event"`
|
||||||
Status StatusValue `json:"status" xorm:"INDEX 'status'"`
|
Status StatusValue `json:"status" xorm:"INDEX 'status'"`
|
||||||
Errors []*types.PipelineError `json:"errors" xorm:"json 'errors'"`
|
Errors []*types.PipelineError `json:"errors" xorm:"json 'errors'"`
|
||||||
Created int64 `json:"created_at" xorm:"'created' NOT NULL DEFAULT 0 created"` // TODO change JSON field to "created" in 3.0
|
Created int64 `json:"created" xorm:"'created' NOT NULL DEFAULT 0 created"`
|
||||||
Updated int64 `json:"updated_at" xorm:"'updated' NOT NULL DEFAULT 0 updated"` // TODO change JSON field to "updated" in 3.0
|
Updated int64 `json:"updated" xorm:"'updated' NOT NULL DEFAULT 0 updated"`
|
||||||
Started int64 `json:"started_at" xorm:"started"` // TODO change JSON field to "started" in 3.0
|
Started int64 `json:"started" xorm:"started"`
|
||||||
Finished int64 `json:"finished_at" xorm:"finished"` // TODO change JSON field to "finished" in 3.0
|
Finished int64 `json:"finished" xorm:"finished"`
|
||||||
DeployTo string `json:"deploy_to" xorm:"deploy"`
|
DeployTo string `json:"deploy_to" xorm:"deploy"`
|
||||||
DeployTask string `json:"deploy_task" xorm:"deploy_task"`
|
DeployTask string `json:"deploy_task" xorm:"deploy_task"`
|
||||||
Commit string `json:"commit" xorm:"commit"`
|
Commit string `json:"commit" xorm:"commit"`
|
||||||
|
@ -46,7 +46,7 @@ type Pipeline struct {
|
||||||
Email string `json:"author_email" xorm:"email"`
|
Email string `json:"author_email" xorm:"email"`
|
||||||
ForgeURL string `json:"forge_url" xorm:"forge_url"`
|
ForgeURL string `json:"forge_url" xorm:"forge_url"`
|
||||||
Reviewer string `json:"reviewed_by" xorm:"reviewer"`
|
Reviewer string `json:"reviewed_by" xorm:"reviewer"`
|
||||||
Reviewed int64 `json:"reviewed_at" xorm:"reviewed"` // TODO change JSON field to "reviewed" in 3.0
|
Reviewed int64 `json:"reviewed" xorm:"reviewed"`
|
||||||
Workflows []*Workflow `json:"workflows,omitempty" xorm:"-"`
|
Workflows []*Workflow `json:"workflows,omitempty" xorm:"-"`
|
||||||
ChangedFiles []string `json:"changed_files,omitempty" xorm:"LONGTEXT 'changed_files'"`
|
ChangedFiles []string `json:"changed_files,omitempty" xorm:"LONGTEXT 'changed_files'"`
|
||||||
AdditionalVariables map[string]string `json:"variables,omitempty" xorm:"json 'additional_variables'"`
|
AdditionalVariables map[string]string `json:"variables,omitempty" xorm:"json 'additional_variables'"`
|
||||||
|
|
|
@ -36,8 +36,8 @@ type Step struct {
|
||||||
Error string `json:"error,omitempty" xorm:"TEXT 'error'"`
|
Error string `json:"error,omitempty" xorm:"TEXT 'error'"`
|
||||||
Failure string `json:"-" xorm:"failure"`
|
Failure string `json:"-" xorm:"failure"`
|
||||||
ExitCode int `json:"exit_code" xorm:"exit_code"`
|
ExitCode int `json:"exit_code" xorm:"exit_code"`
|
||||||
Started int64 `json:"start_time,omitempty" xorm:"started"`
|
Started int64 `json:"started,omitempty" xorm:"started"`
|
||||||
Finished int64 `json:"end_time,omitempty" xorm:"stopped"`
|
Finished int64 `json:"finished,omitempty" xorm:"finished"`
|
||||||
Type StepType `json:"type,omitempty" xorm:"type"`
|
Type StepType `json:"type,omitempty" xorm:"type"`
|
||||||
} // @name Step
|
} // @name Step
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ type Workflow struct {
|
||||||
Name string `json:"name" xorm:"name"`
|
Name string `json:"name" xorm:"name"`
|
||||||
State StatusValue `json:"state" xorm:"state"`
|
State StatusValue `json:"state" xorm:"state"`
|
||||||
Error string `json:"error,omitempty" xorm:"TEXT 'error'"`
|
Error string `json:"error,omitempty" xorm:"TEXT 'error'"`
|
||||||
Started int64 `json:"start_time,omitempty" xorm:"started"`
|
Started int64 `json:"started,omitempty" xorm:"started"`
|
||||||
Finished int64 `json:"end_time,omitempty" xorm:"stopped"`
|
Finished int64 `json:"finished,omitempty" xorm:"finished"`
|
||||||
AgentID int64 `json:"agent_id,omitempty" xorm:"agent_id"`
|
AgentID int64 `json:"agent_id,omitempty" xorm:"agent_id"`
|
||||||
Platform string `json:"platform,omitempty" xorm:"platform"`
|
Platform string `json:"platform,omitempty" xorm:"platform"`
|
||||||
Environ map[string]string `json:"environ,omitempty" xorm:"json 'environ'"`
|
Environ map[string]string `json:"environ,omitempty" xorm:"json 'environ'"`
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
// Copyright 2024 Woodpecker Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// 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 migration
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"src.techknowlogick.com/xormigrate"
|
||||||
|
"xorm.io/xorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type stepV033 struct {
|
||||||
|
Finished int64 `xorm:"stopped"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (stepV033) TableName() string {
|
||||||
|
return "steps"
|
||||||
|
}
|
||||||
|
|
||||||
|
type workflowV033 struct {
|
||||||
|
Finished int64 `xorm:"stopped"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (workflowV033) TableName() string {
|
||||||
|
return "workflows"
|
||||||
|
}
|
||||||
|
|
||||||
|
var renameStartEndTime = xormigrate.Migration{
|
||||||
|
ID: "rename-start-end-time",
|
||||||
|
MigrateSession: func(sess *xorm.Session) (err error) {
|
||||||
|
if err := sess.Sync(new(stepV033), new(workflowV033)); err != nil {
|
||||||
|
return fmt.Errorf("sync models failed: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step
|
||||||
|
if err := renameColumn(sess, "steps", "stopped", "finished"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Workflow
|
||||||
|
if err := renameColumn(sess, "workflows", "stopped", "finished"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
|
@ -64,6 +64,7 @@ var migrationTasks = []*xormigrate.Migration{
|
||||||
&unifyColumnsTables,
|
&unifyColumnsTables,
|
||||||
&alterTableRegistriesFixRequiredFields,
|
&alterTableRegistriesFixRequiredFields,
|
||||||
&cronWithoutSec,
|
&cronWithoutSec,
|
||||||
|
&renameStartEndTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
var allBeans = []any{
|
var allBeans = []any{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
<div class="flex flex-row items-center ml-auto gap-x-2">
|
<div class="flex flex-row items-center ml-auto gap-x-2">
|
||||||
<IconButton
|
<IconButton
|
||||||
v-if="step?.end_time !== undefined && hasLogs"
|
v-if="step?.finished !== undefined && hasLogs"
|
||||||
:is-loading="downloadInProgress"
|
:is-loading="downloadInProgress"
|
||||||
:title="$t('repo.pipeline.actions.log_download')"
|
:title="$t('repo.pipeline.actions.log_download')"
|
||||||
class="!hover:bg-white !hover:bg-opacity-10"
|
class="!hover:bg-white !hover:bg-opacity-10"
|
||||||
|
@ -21,14 +21,14 @@
|
||||||
@click="download"
|
@click="download"
|
||||||
/>
|
/>
|
||||||
<IconButton
|
<IconButton
|
||||||
v-if="step?.end_time !== undefined && hasLogs && hasPushPermission"
|
v-if="step?.finished !== undefined && hasLogs && hasPushPermission"
|
||||||
:title="$t('repo.pipeline.actions.log_delete')"
|
:title="$t('repo.pipeline.actions.log_delete')"
|
||||||
class="!hover:bg-white !hover:bg-opacity-10"
|
class="!hover:bg-white !hover:bg-opacity-10"
|
||||||
icon="trash"
|
icon="trash"
|
||||||
@click="deleteLogs"
|
@click="deleteLogs"
|
||||||
/>
|
/>
|
||||||
<IconButton
|
<IconButton
|
||||||
v-if="step?.end_time === undefined"
|
v-if="step?.finished === undefined"
|
||||||
:title="
|
:title="
|
||||||
autoScroll ? $t('repo.pipeline.actions.log_auto_scroll_off') : $t('repo.pipeline.actions.log_auto_scroll')
|
autoScroll ? $t('repo.pipeline.actions.log_auto_scroll_off') : $t('repo.pipeline.actions.log_auto_scroll')
|
||||||
"
|
"
|
||||||
|
@ -89,13 +89,13 @@
|
||||||
|
|
||||||
<div class="m-auto text-xl text-wp-text-alt-100">
|
<div class="m-auto text-xl text-wp-text-alt-100">
|
||||||
<span v-if="step?.state === 'skipped'">{{ $t('repo.pipeline.actions.canceled') }}</span>
|
<span v-if="step?.state === 'skipped'">{{ $t('repo.pipeline.actions.canceled') }}</span>
|
||||||
<span v-else-if="!step?.start_time">{{ $t('repo.pipeline.step_not_started') }}</span>
|
<span v-else-if="!step?.started">{{ $t('repo.pipeline.step_not_started') }}</span>
|
||||||
<div v-else-if="!loadedLogs">{{ $t('repo.pipeline.loading') }}</div>
|
<div v-else-if="!loadedLogs">{{ $t('repo.pipeline.loading') }}</div>
|
||||||
<div v-else-if="log?.length === 0">{{ $t('repo.pipeline.no_logs') }}</div>
|
<div v-else-if="log?.length === 0">{{ $t('repo.pipeline.no_logs') }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-if="step?.end_time !== undefined"
|
v-if="step?.finished !== undefined"
|
||||||
class="flex items-center w-full bg-wp-code-100 text-md text-wp-code-text-alt-100 p-4 font-bold"
|
class="flex items-center w-full bg-wp-code-100 text-md text-wp-code-text-alt-100 p-4 font-bold"
|
||||||
>
|
>
|
||||||
<PipelineStatusIcon :status="step.state" class="!h-4 !w-4" />
|
<PipelineStatusIcon :status="step.state" class="!h-4 !w-4" />
|
||||||
|
@ -350,7 +350,7 @@ watch(stepSlug, async () => {
|
||||||
|
|
||||||
watch(step, async (newStep, oldStep) => {
|
watch(step, async (newStep, oldStep) => {
|
||||||
if (oldStep?.name === newStep?.name) {
|
if (oldStep?.name === newStep?.name) {
|
||||||
if (oldStep?.end_time !== newStep?.end_time && autoScroll.value) {
|
if (oldStep?.finished !== newStep?.finished && autoScroll.value) {
|
||||||
scrollDown();
|
scrollDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,8 @@ const workflow = toRef(props, 'workflow');
|
||||||
const { durationAsNumber } = useDate();
|
const { durationAsNumber } = useDate();
|
||||||
|
|
||||||
const durationRaw = computed(() => {
|
const durationRaw = computed(() => {
|
||||||
const start = (step.value ? step.value?.start_time : workflow.value?.start_time) || 0;
|
const start = (step.value ? step.value?.started : workflow.value?.started) || 0;
|
||||||
const end = (step.value ? step.value?.end_time : workflow.value?.end_time) || 0;
|
const end = (step.value ? step.value?.finished : workflow.value?.finished) || 0;
|
||||||
|
|
||||||
if (end === 0 && start === 0) {
|
if (end === 0 && start === 0) {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -43,5 +43,5 @@ const duration = computed(() => {
|
||||||
|
|
||||||
return durationAsNumber(durationElapsed.value || 0);
|
return durationAsNumber(durationElapsed.value || 0);
|
||||||
});
|
});
|
||||||
const started = computed(() => (step.value ? step.value?.start_time : workflow.value?.start_time) !== undefined);
|
const started = computed(() => (step.value ? step.value?.started : workflow.value?.started) !== undefined);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
<PipelineStatusIcon :status="workflow.state" class="!h-4 !w-4" />
|
<PipelineStatusIcon :status="workflow.state" class="!h-4 !w-4" />
|
||||||
<span class="truncate">{{ workflow.name }}</span>
|
<span class="truncate">{{ workflow.name }}</span>
|
||||||
<PipelineStepDuration
|
<PipelineStepDuration
|
||||||
v-if="workflow.start_time !== workflow.end_time"
|
v-if="workflow.started !== workflow.finished"
|
||||||
:workflow="workflow"
|
:workflow="workflow"
|
||||||
class="mr-1 pr-2px"
|
class="mr-1 pr-2px"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -14,7 +14,7 @@ export default (pipeline: Ref<Pipeline | undefined>) => {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const start = pipeline.value.created_at || 0;
|
const start = pipeline.value.created || 0;
|
||||||
|
|
||||||
return start * 1000;
|
return start * 1000;
|
||||||
});
|
});
|
||||||
|
@ -44,8 +44,8 @@ export default (pipeline: Ref<Pipeline | undefined>) => {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const start = pipeline.value.started_at || 0;
|
const start = pipeline.value.started || 0;
|
||||||
const end = pipeline.value.finished_at || pipeline.value.updated_at || 0;
|
const end = pipeline.value.finished || pipeline.value.updated || 0;
|
||||||
|
|
||||||
if (start === 0 || end === 0) {
|
if (start === 0 || end === 0) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -109,7 +109,7 @@ export default (pipeline: Ref<Pipeline | undefined>) => {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const start = pipeline.value.created_at || 0;
|
const start = pipeline.value.created || 0;
|
||||||
|
|
||||||
return toLocaleString(new Date(start * 1000));
|
return toLocaleString(new Date(start * 1000));
|
||||||
});
|
});
|
||||||
|
|
|
@ -25,16 +25,16 @@ export interface Pipeline {
|
||||||
errors?: PipelineError[];
|
errors?: PipelineError[];
|
||||||
|
|
||||||
// When the pipeline request was received.
|
// When the pipeline request was received.
|
||||||
created_at: number;
|
created: number;
|
||||||
|
|
||||||
// When the pipeline was updated last time in database.
|
// When the pipeline was updated last time in database.
|
||||||
updated_at: number;
|
updated: number;
|
||||||
|
|
||||||
// When the pipeline began execution.
|
// When the pipeline began execution.
|
||||||
started_at: number;
|
started: number;
|
||||||
|
|
||||||
// When the pipeline was finished.
|
// When the pipeline was finished.
|
||||||
finished_at: number;
|
finished: number;
|
||||||
|
|
||||||
// Where the deployment should go.
|
// Where the deployment should go.
|
||||||
deploy_to: string;
|
deploy_to: string;
|
||||||
|
@ -76,13 +76,9 @@ export interface Pipeline {
|
||||||
// This url will point to the repository state associated with the pipeline's commit.
|
// This url will point to the repository state associated with the pipeline's commit.
|
||||||
forge_url: string;
|
forge_url: string;
|
||||||
|
|
||||||
signed: boolean;
|
|
||||||
|
|
||||||
verified: boolean;
|
|
||||||
|
|
||||||
reviewed_by: string;
|
reviewed_by: string;
|
||||||
|
|
||||||
reviewed_at: number;
|
reviewed: number;
|
||||||
|
|
||||||
// The steps associated with this pipeline.
|
// The steps associated with this pipeline.
|
||||||
// A pipeline will have multiple steps if a matrix pipeline was used or if a rebuild was requested.
|
// A pipeline will have multiple steps if a matrix pipeline was used or if a rebuild was requested.
|
||||||
|
@ -110,8 +106,8 @@ export interface PipelineWorkflow {
|
||||||
name: string;
|
name: string;
|
||||||
state: PipelineStatus;
|
state: PipelineStatus;
|
||||||
environ?: Record<string, string>;
|
environ?: Record<string, string>;
|
||||||
start_time?: number;
|
started?: number;
|
||||||
end_time?: number;
|
finished?: number;
|
||||||
agent_id?: number;
|
agent_id?: number;
|
||||||
error?: string;
|
error?: string;
|
||||||
children: PipelineStep[];
|
children: PipelineStep[];
|
||||||
|
@ -126,8 +122,8 @@ export interface PipelineStep {
|
||||||
name: string;
|
name: string;
|
||||||
state: PipelineStatus;
|
state: PipelineStatus;
|
||||||
exit_code: number;
|
exit_code: number;
|
||||||
start_time?: number;
|
started?: number;
|
||||||
end_time?: number;
|
finished?: number;
|
||||||
error?: string;
|
error?: string;
|
||||||
type?: StepType;
|
type?: StepType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ export function isStepRunning(step: PipelineStep): boolean {
|
||||||
* @returns {number} 0 if created at the same time, < 0 if b was create before a, > 0 otherwise
|
* @returns {number} 0 if created at the same time, < 0 if b was create before a, > 0 otherwise
|
||||||
*/
|
*/
|
||||||
export function comparePipelines(a: Pipeline, b: Pipeline): number {
|
export function comparePipelines(a: Pipeline, b: Pipeline): number {
|
||||||
return (b.created_at || -1) - (a.created_at || -1);
|
return (b.created || -1) - (a.created || -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -75,8 +75,6 @@ type (
|
||||||
Event string `json:"event"`
|
Event string `json:"event"`
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
Errors []*PipelineError `json:"errors"`
|
Errors []*PipelineError `json:"errors"`
|
||||||
// Deprecated TODO remove in 3.x
|
|
||||||
Enqueued int64 `json:"enqueued_at"`
|
|
||||||
Created int64 `json:"created_at"`
|
Created int64 `json:"created_at"`
|
||||||
Updated int64 `json:"updated_at"`
|
Updated int64 `json:"updated_at"`
|
||||||
Started int64 `json:"started_at"`
|
Started int64 `json:"started_at"`
|
||||||
|
@ -86,7 +84,6 @@ type (
|
||||||
Branch string `json:"branch"`
|
Branch string `json:"branch"`
|
||||||
Ref string `json:"ref"`
|
Ref string `json:"ref"`
|
||||||
Refspec string `json:"refspec"`
|
Refspec string `json:"refspec"`
|
||||||
CloneURL string `json:"clone_url"`
|
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Timestamp int64 `json:"timestamp"`
|
Timestamp int64 `json:"timestamp"`
|
||||||
|
@ -137,10 +134,6 @@ type (
|
||||||
Address string `json:"address"`
|
Address string `json:"address"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
Password string `json:"password,omitempty"`
|
Password string `json:"password,omitempty"`
|
||||||
// Deprecated
|
|
||||||
Email string `json:"email"` // TODO: remove in 3.x
|
|
||||||
// Deprecated
|
|
||||||
Token string `json:"token"` // TODO: remove in 3.x
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Secret represents a secret variable, such as a password or token.
|
// Secret represents a secret variable, such as a password or token.
|
||||||
|
@ -161,9 +154,9 @@ type (
|
||||||
Number int64 `json:"number,omitempty"`
|
Number int64 `json:"number,omitempty"`
|
||||||
Event string `json:"event,omitempty"`
|
Event string `json:"event,omitempty"`
|
||||||
Status string `json:"status,omitempty"`
|
Status string `json:"status,omitempty"`
|
||||||
Created int64 `json:"created_at,omitempty"`
|
Created int64 `json:"created,omitempty"`
|
||||||
Started int64 `json:"started_at,omitempty"`
|
Started int64 `json:"started,omitempty"`
|
||||||
Finished int64 `json:"finished_at,omitempty"`
|
Finished int64 `json:"finished,omitempty"`
|
||||||
Commit string `json:"commit,omitempty"`
|
Commit string `json:"commit,omitempty"`
|
||||||
Branch string `json:"branch,omitempty"`
|
Branch string `json:"branch,omitempty"`
|
||||||
Ref string `json:"ref,omitempty"`
|
Ref string `json:"ref,omitempty"`
|
||||||
|
@ -183,30 +176,20 @@ type (
|
||||||
Commit string `json:"commit,omitempty"`
|
Commit string `json:"commit,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//nolint:godot
|
QueueStats struct {
|
||||||
// TODO: use dedicated struct in 3.x
|
Workers int `json:"worker_count"`
|
||||||
// QueueStats struct {
|
Pending int `json:"pending_count"`
|
||||||
// Workers int `json:"worker_count"`
|
WaitingOnDeps int `json:"waiting_on_deps_count"`
|
||||||
// Pending int `json:"pending_count"`
|
Running int `json:"running_count"`
|
||||||
// WaitingOnDeps int `json:"waiting_on_deps_count"`
|
Complete int `json:"completed_count"`
|
||||||
// Running int `json:"running_count"`
|
}
|
||||||
// Complete int `json:"completed_count"`
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Info provides queue stats.
|
// Info provides queue stats.
|
||||||
Info struct {
|
Info struct {
|
||||||
Pending []Task `json:"pending"`
|
Pending []Task `json:"pending"`
|
||||||
WaitingOnDeps []Task `json:"waiting_on_deps"`
|
WaitingOnDeps []Task `json:"waiting_on_deps"`
|
||||||
Running []Task `json:"running"`
|
Running []Task `json:"running"`
|
||||||
// TODO: use dedicated struct in 3.x
|
Stats QueueStats `json:"stats"`
|
||||||
// Stats QueueStats `json:"stats"`
|
|
||||||
Stats struct {
|
|
||||||
Workers int `json:"worker_count"`
|
|
||||||
Pending int `json:"pending_count"`
|
|
||||||
WaitingOnDeps int `json:"waiting_on_deps_count"`
|
|
||||||
Running int `json:"running_count"`
|
|
||||||
Complete int `json:"completed_count"`
|
|
||||||
} `json:"stats"`
|
|
||||||
Paused bool `json:"paused,omitempty"`
|
Paused bool `json:"paused,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +216,7 @@ type (
|
||||||
CreatorID int64 `json:"creator_id"`
|
CreatorID int64 `json:"creator_id"`
|
||||||
NextExec int64 `json:"next_exec"`
|
NextExec int64 `json:"next_exec"`
|
||||||
Schedule string `json:"schedule"`
|
Schedule string `json:"schedule"`
|
||||||
Created int64 `json:"created_at"`
|
Created int64 `json:"created"`
|
||||||
Branch string `json:"branch"`
|
Branch string `json:"branch"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue