diff --git a/engine/api/api_routes.go b/engine/api/api_routes.go index e62fd5f560..ce2b744aa7 100644 --- a/engine/api/api_routes.go +++ b/engine/api/api_routes.go @@ -232,7 +232,7 @@ func (api *API) InitRouter() { r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/latest", r.GET(api.getLatestWorkflowRunHandler)) r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/tags", r.GET(api.getWorkflowRunTagsHandler)) r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/num", r.GET(api.getWorkflowRunNumHandler), r.POST(api.postWorkflowRunNumHandler)) - r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/{number}", r.GET(api.getWorkflowRunHandler, AllowServices(true), EnableTracing())) + r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/{number}", r.GET(api.getWorkflowRunHandler, AllowServices(true), EnableTracing()), r.DELETE(api.deleteWorkflowRunHandler)) r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/{number}/stop", r.POSTEXECUTE(api.stopWorkflowRunHandler, EnableTracing())) r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/{number}/vcs/resync", r.POSTEXECUTE(api.postResyncVCSWorkflowRunHandler)) r.Handle("/project/{key}/workflows/{permWorkflowName}/runs/{number}/resync", r.POST(api.resyncWorkflowRunHandler)) diff --git a/engine/api/workflow/dao_run.go b/engine/api/workflow/dao_run.go index 4672d4bc48..89ca622527 100644 --- a/engine/api/workflow/dao_run.go +++ b/engine/api/workflow/dao_run.go @@ -41,6 +41,7 @@ type LoadRunOptions struct { WithTests bool WithLightTests bool WithVulnerabilities bool + WithoutDeleted bool DisableDetailledNodeRun bool Language string } @@ -320,7 +321,7 @@ func LoadRuns(db gorp.SqlExecutor, projectkey, workflowname string, offset, limi from workflow_run join project on workflow_run.project_id = project.id join workflow on workflow_run.workflow_id = workflow.id - where project.projectkey = $1` + where project.projectkey = $1 AND workflow_run.to_delete = false` if workflowname != "" { args = []interface{}{projectkey, workflowname} @@ -329,7 +330,8 @@ func LoadRuns(db gorp.SqlExecutor, projectkey, workflowname string, offset, limi join project on workflow_run.project_id = project.id join workflow on workflow_run.workflow_id = workflow.id where project.projectkey = $1 - and workflow.name = $2` + and workflow.name = $2 + AND workflow_run.to_delete = false` } count, errc := db.SelectInt(queryCount, args...) @@ -345,7 +347,7 @@ func LoadRuns(db gorp.SqlExecutor, projectkey, workflowname string, offset, limi from workflow_run join project on workflow_run.project_id = project.id join workflow on workflow_run.workflow_id = workflow.id - where project.projectkey = $1 + where project.projectkey = $1 AND workflow_run.to_delete = false order by workflow_run.start desc limit $2 offset $3`, wfRunfields) @@ -357,6 +359,7 @@ func LoadRuns(db gorp.SqlExecutor, projectkey, workflowname string, offset, limi join workflow on workflow_run.workflow_id = workflow.id where project.projectkey = $1 and workflow.name = $2 + AND workflow_run.to_delete = false order by workflow_run.start desc limit $3 offset $4`, wfRunfields) } @@ -378,6 +381,7 @@ func LoadRuns(db gorp.SqlExecutor, projectkey, workflowname string, offset, limi ) as tags on workflow_run.id = tags.workflow_run_id where project.projectkey = $1 and workflow.name = $2 + AND workflow_run.to_delete = false and string_to_array($5, ',') <@ string_to_array(tags.tags, ',') order by workflow_run.start desc limit $3 offset $4`, wfRunfields) @@ -469,6 +473,9 @@ func loadRun(db gorp.SqlExecutor, loadOpts LoadRunOptions, query string, args .. return nil, sdk.WrapError(err, "Unable to load workflow run. query:%s args:%v", query, args) } wr := sdk.WorkflowRun(*runDB) + if loadOpts.WithoutDeleted && wr.ToDelete { + return nil, sdk.ErrWorkflowNotFound + } tags, errT := loadTagsByRunID(db, wr.ID) if errT != nil { diff --git a/engine/api/workflow_run.go b/engine/api/workflow_run.go index eb78b907c3..acfc5d2025 100644 --- a/engine/api/workflow_run.go +++ b/engine/api/workflow_run.go @@ -311,6 +311,7 @@ func (api *API) getWorkflowRunHandler() service.Handler { // as hook service. It's needed to have the buildParameters. run, err := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{ + WithoutDeleted: true, WithArtifacts: true, WithLightTests: true, DisableDetailledNodeRun: getService(ctx) == nil, @@ -341,6 +342,33 @@ func (api *API) getWorkflowRunHandler() service.Handler { } } +func (api *API) deleteWorkflowRunHandler() service.Handler { + return func(ctx context.Context, w http.ResponseWriter, r *http.Request) error { + vars := mux.Vars(r) + key := vars["key"] + name := vars["permWorkflowName"] + number, err := requestVarInt(r, "number") + if err != nil { + return err + } + + run, err := workflow.LoadRun(ctx, api.mustDB(), key, name, number, + workflow.LoadRunOptions{ + DisableDetailledNodeRun: true, + }, + ) + if err != nil { + return sdk.WrapError(err, "Unable to load workflow %s run number %d", name, number) + } + + if err := workflow.MarkWorkflowRunsAsDelete(api.mustDB(), []int64{run.ID}); err != nil { + return sdk.WrapError(err, "cannot mark workflow run %d as delete", run.ID) + } + + return service.WriteJSON(w, nil, http.StatusAccepted) + } +} + func (api *API) stopWorkflowRunHandler() service.Handler { return func(ctx context.Context, w http.ResponseWriter, r *http.Request) error { vars := mux.Vars(r) @@ -351,7 +379,7 @@ func (api *API) stopWorkflowRunHandler() service.Handler { return err } - run, errL := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{}) + run, errL := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{WithoutDeleted: true}) if errL != nil { return sdk.WrapError(errL, "stopWorkflowRunHandler> Unable to load last workflow run") } @@ -547,7 +575,7 @@ func (api *API) getWorkflowNodeRunHistoryHandler() service.Handler { return err } - run, errR := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{DisableDetailledNodeRun: true}) + run, errR := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{DisableDetailledNodeRun: true, WithoutDeleted: true}) if errR != nil { return sdk.WrapError(errR, "getWorkflowNodeRunHistoryHandler") } @@ -668,7 +696,7 @@ func (api *API) stopWorkflowNodeRunHandler() service.Handler { } // Load node run - nodeRun, err := workflow.LoadNodeRun(api.mustDB(), key, name, number, id, workflow.LoadRunOptions{}) + nodeRun, err := workflow.LoadNodeRun(api.mustDB(), key, name, number, id, workflow.LoadRunOptions{WithoutDeleted: true}) if err != nil { return sdk.WrapError(err, "Unable to load last workflow run") } @@ -701,7 +729,7 @@ func (api *API) stopWorkflowNodeRun(ctx context.Context, dbFunc func() *gorp.DbM return nil, sdk.WrapError(errS, "stopWorkflowNodeRunHandler> Unable to stop workflow node run") } - wr, errLw := workflow.LoadRun(ctx, tx, p.Key, workflowName, nodeRun.Number, workflow.LoadRunOptions{}) + wr, errLw := workflow.LoadRun(ctx, tx, p.Key, workflowName, nodeRun.Number, workflow.LoadRunOptions{WithoutDeleted: true}) if errLw != nil { return nil, sdk.WrapError(errLw, "stopWorkflowNodeRunHandler> Unable to load workflow run %s", workflowName) } @@ -726,7 +754,7 @@ func (api *API) stopWorkflowNodeRun(ctx context.Context, dbFunc func() *gorp.DbM } go func(ID int64) { - wRun, errLw := workflow.LoadRunByID(api.mustDB(), ID, workflow.LoadRunOptions{DisableDetailledNodeRun: true}) + wRun, errLw := workflow.LoadRunByID(api.mustDB(), ID, workflow.LoadRunOptions{DisableDetailledNodeRun: true, WithoutDeleted: true}) if errLw != nil { log.Error("workflow.stopWorkflowNodeRun> Cannot load run for resync commit status %v", errLw) return @@ -762,6 +790,7 @@ func (api *API) getWorkflowNodeRunHandler() service.Handler { WithStaticFiles: true, WithCoverage: true, WithVulnerabilities: true, + WithoutDeleted: true, }) if err != nil { return sdk.WrapError(err, "Unable to load last workflow run") @@ -1093,7 +1122,7 @@ func (api *API) getWorkflowRunArtifactsHandler() service.Handler { return sdk.WrapError(errNu, "getWorkflowJobArtifactsHandler> Invalid node job run ID") } - wr, errW := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{WithArtifacts: true}) + wr, errW := workflow.LoadRun(ctx, api.mustDB(), key, name, number, workflow.LoadRunOptions{WithArtifacts: true, WithoutDeleted: true}) if errW != nil { return errW } @@ -1213,7 +1242,7 @@ func (api *API) getWorkflowNodeRunJobStepHandler() service.Handler { } // Check nodeRunID is link to workflow - nodeRun, errNR := workflow.LoadNodeRun(api.mustDB(), projectKey, workflowName, number, nodeRunID, workflow.LoadRunOptions{DisableDetailledNodeRun: true}) + nodeRun, errNR := workflow.LoadNodeRun(api.mustDB(), projectKey, workflowName, number, nodeRunID, workflow.LoadRunOptions{DisableDetailledNodeRun: true, WithoutDeleted: true}) if errNR != nil { return sdk.WrapError(errNR, "cannot find nodeRun %d/%d for workflow %s in project %s", nodeRunID, number, workflowName, projectKey) } @@ -1291,7 +1320,7 @@ func (api *API) postResyncVCSWorkflowRunHandler() service.Handler { return sdk.WrapError(errP, "postResyncVCSWorkflowRunHandler> Cannot load project") } - wfr, errW := workflow.LoadRun(ctx, db, key, name, number, workflow.LoadRunOptions{DisableDetailledNodeRun: true}) + wfr, errW := workflow.LoadRun(ctx, db, key, name, number, workflow.LoadRunOptions{DisableDetailledNodeRun: true, WithoutDeleted: true}) if errW != nil { return sdk.WrapError(errW, "postResyncVCSWorkflowRunHandler> Cannot load workflow run") } diff --git a/ui/src/app/store/workflow.action.ts b/ui/src/app/store/workflow.action.ts index bb04ce6898..6f120500d8 100644 --- a/ui/src/app/store/workflow.action.ts +++ b/ui/src/app/store/workflow.action.ts @@ -1,13 +1,13 @@ import { GroupPermission } from 'app/model/group.model'; import { Label } from 'app/model/project.model'; import { WNode, WNodeHook, WNodeTrigger, Workflow, WorkflowNotification } from 'app/model/workflow.model'; -import {WorkflowNodeRun, WorkflowRun} from 'app/model/workflow.run.model'; +import { WorkflowNodeRun, WorkflowRun } from 'app/model/workflow.run.model'; // --------- MODAL ----- export class OpenEditModal { static readonly type = '[Workflow] Open Edit Modal'; - constructor(public payload: { node: WNode, hook: WNodeHook}) { } + constructor(public payload: { node: WNode, hook: WNodeHook }) { } } export class CloseEditModal { @@ -17,49 +17,54 @@ export class CloseEditModal { export class UpdateModal { static readonly type = '[Workflow] UpdateModal'; - constructor(public payload: { workflow: Workflow }) {} + constructor(public payload: { workflow: Workflow }) { } } // --------- Sidebar ----- export class SidebarRunsMode { static readonly type = '[Workflow] Sidebar run mode'; - constructor(public payload: {}) {} + constructor(public payload: {}) { } } // --------- Workflow Run --- export class ChangeToRunView { - static readonly type = '[Workflow] Change to Run View'; - constructor(public payload: {}) {} + static readonly type = '[Workflow] Change to Run View'; + constructor(public payload: {}) { } } export class GetWorkflowRun { - static readonly type = '[Workflow] Get Workflow Run'; - constructor(public payload: { projectKey: string, workflowName: string, num: number}) {} + static readonly type = '[Workflow] Get Workflow Run'; + constructor(public payload: { projectKey: string, workflowName: string, num: number }) { } } export class GetWorkflowRuns { - static readonly type = '[Workflow] Get Workflow Runs'; - constructor(public payload: { projectKey: string, workflowName: string, limit: string }) {} + static readonly type = '[Workflow] Get Workflow Runs'; + constructor(public payload: { projectKey: string, workflowName: string, limit: string }) { } +} + +export class DeleteWorkflowRun { + static readonly type = '[Workflow] Delete Workflow Run'; + constructor(public payload: { projectKey: string, workflowName: string, num: number }) { } } export class CleanWorkflowRun { - static readonly type = '[Workflow] Clean Workflow Run'; - constructor(public payload: {}) {} + static readonly type = '[Workflow] Clean Workflow Run'; + constructor(public payload: {}) { } } export class GetWorkflowNodeRun { - static readonly type = '[Workflow] Get Workflow Node Run'; - constructor(public payload: { projectKey: string, workflowName: string, num: number, nodeRunID: number }) {} + static readonly type = '[Workflow] Get Workflow Node Run'; + constructor(public payload: { projectKey: string, workflowName: string, num: number, nodeRunID: number }) { } } export class SelectWorkflowNodeRun { - static readonly type = '[Workflow] Select Workflow Node Run'; - constructor(public payload: { workflowNodeRun: WorkflowNodeRun, node: WNode }) {} + static readonly type = '[Workflow] Select Workflow Node Run'; + constructor(public payload: { workflowNodeRun: WorkflowNodeRun, node: WNode }) { } } export class UpdateWorkflowRunList { - static readonly type = '[Workflow] Update Workflow Run List'; - constructor(public payload: { workflowRun: WorkflowRun }) {} + static readonly type = '[Workflow] Update Workflow Run List'; + constructor(public payload: { workflowRun: WorkflowRun }) { } } // --------- Workflow ----- @@ -75,8 +80,8 @@ export class ImportWorkflow { } export class GetWorkflow { - static readonly type = '[Workflow] Get Workflow'; - constructor(public payload: { projectKey: string, workflowName: string }) {} + static readonly type = '[Workflow] Get Workflow'; + constructor(public payload: { projectKey: string, workflowName: string }) { } } export class UpdateWorkflow { diff --git a/ui/src/app/store/workflow.state.ts b/ui/src/app/store/workflow.state.ts index 8842db71a4..84036d9aed 100644 --- a/ui/src/app/store/workflow.state.ts +++ b/ui/src/app/store/workflow.state.ts @@ -762,6 +762,22 @@ export class WorkflowState { } + @Action(actionWorkflow.DeleteWorkflowRun) + deleteWorkflowRun(ctx: StateContext, action: actionWorkflow.DeleteWorkflowRun) { + return this._http.delete( + `/project/${action.payload.projectKey}/workflows/${action.payload.workflowName}/runs/${action.payload.num}` + ).pipe(tap(() => { + const state = ctx.getState(); + + if (state.listRuns) { + ctx.setState({ + ...state, + listRuns: state.listRuns.filter((run) => run.num !== action.payload.num), + }); + } + })); + } + @Action(actionWorkflow.GetWorkflowRuns) getWorkflowRuns(ctx: StateContext, action: actionWorkflow.GetWorkflowRuns) { const state = ctx.getState(); diff --git a/ui/src/app/views/workflow/run/summary/workflow.run.summary.component.ts b/ui/src/app/views/workflow/run/summary/workflow.run.summary.component.ts index 1df94cd897..cb33ce79d2 100644 --- a/ui/src/app/views/workflow/run/summary/workflow.run.summary.component.ts +++ b/ui/src/app/views/workflow/run/summary/workflow.run.summary.component.ts @@ -1,18 +1,20 @@ -import {Component, EventEmitter, Input, Output} from '@angular/core'; -import {TranslateService} from '@ngx-translate/core'; -import {Store} from '@ngxs/store'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Router } from '@angular/router'; +import { TranslateService } from '@ngx-translate/core'; +import { Store } from '@ngxs/store'; import * as AU from 'ansi_up'; -import {PermissionValue} from 'app/model/permission.model'; -import {PipelineStatus} from 'app/model/pipeline.model'; -import {Project} from 'app/model/project.model'; -import {Workflow} from 'app/model/workflow.model'; -import {WorkflowRun} from 'app/model/workflow.run.model'; -import {WorkflowRunService} from 'app/service/workflow/run/workflow.run.service'; -import {AutoUnsubscribe} from 'app/shared/decorator/autoUnsubscribe'; -import {ToastService} from 'app/shared/toast/ToastService'; -import {WorkflowState, WorkflowStateModel} from 'app/store/workflow.state'; -import {finalize} from 'rxjs/operators'; -import {Subscription} from 'rxjs/Subscription'; +import { PermissionValue } from 'app/model/permission.model'; +import { PipelineStatus } from 'app/model/pipeline.model'; +import { Project } from 'app/model/project.model'; +import { Workflow } from 'app/model/workflow.model'; +import { WorkflowRun } from 'app/model/workflow.run.model'; +import { WorkflowRunService } from 'app/service/workflow/run/workflow.run.service'; +import { AutoUnsubscribe } from 'app/shared/decorator/autoUnsubscribe'; +import { ToastService } from 'app/shared/toast/ToastService'; +import { DeleteWorkflowRun } from 'app/store/workflow.action'; +import { WorkflowState, WorkflowStateModel } from 'app/store/workflow.state'; +import { finalize } from 'rxjs/operators'; +import { Subscription } from 'rxjs/Subscription'; @Component({ selector: 'app-workflow-run-summary', @@ -42,14 +44,20 @@ export class WorkflowRunSummaryComponent { _direction: string; author: string; loadingAction = false; + loadingDelete = false; showInfos = false; ansi_up = new AU.default; pipelineStatusEnum = PipelineStatus; permissionEnum = PermissionValue; - constructor(private _workflowRunService: WorkflowRunService, - private _toast: ToastService, private _translate: TranslateService, private _store: Store) { + constructor( + private _workflowRunService: WorkflowRunService, + private _toast: ToastService, + private _translate: TranslateService, + private _store: Store, + private router: Router + ) { this.subWR = this._store.select(WorkflowState.getCurrent()).subscribe((state: WorkflowStateModel) => { this.workflow = state.workflow; this.workflowRun = state.workflowRun; @@ -94,4 +102,17 @@ export class WorkflowRunSummaryComponent { .pipe(finalize(() => this.loadingAction = false)) .subscribe(() => this._toast.success('', this._translate.instant('workflow_vcs_resynced'))); } + + delete() { + this.loadingDelete = true; + this._store.dispatch(new DeleteWorkflowRun({ + projectKey: this.project.key, + workflowName: this.workflowName, + num: this.workflowRun.num + })).pipe(finalize(() => this.loadingDelete = false)) + .subscribe(() => { + this._toast.success('', this._translate.instant('common_deleted')); + this.router.navigate(['/project', this.project.key, 'workflow', this.workflowName]); + }); + } } diff --git a/ui/src/app/views/workflow/run/summary/workflow.run.summary.html b/ui/src/app/views/workflow/run/summary/workflow.run.summary.html index b194a76b48..04d9ed476d 100644 --- a/ui/src/app/views/workflow/run/summary/workflow.run.summary.html +++ b/ui/src/app/views/workflow/run/summary/workflow.run.summary.html @@ -72,14 +72,25 @@
-
- +
+
+
+
+
+ +
+
+ +
+
+

                         
diff --git a/ui/src/assets/i18n/en.json b/ui/src/assets/i18n/en.json index 370f94e795..31442d68ca 100644 --- a/ui/src/assets/i18n/en.json +++ b/ui/src/assets/i18n/en.json @@ -1,10 +1,8 @@ { "access_refused": "access refused", - "account_btn_password": "Forgotten password", "account_btn_signup": "Create an account", "account_btn_login": "Sign In", - "account_login_btn_connect": "Sign In", "account_login_title": "Sign In to CDS", "account_password_btn_reset": "Reset password", @@ -15,7 +13,6 @@ "account_signup_waiting_text": "You will receive an email to activate your account.", "account_verify_title": "Account information", "account_verify_error": "Unable to activate this account.", - "action_step_title": "Job steps", "action_step_final_title": "Job final steps", "action_list_title": "Actions", @@ -43,14 +40,11 @@ "action_builtin": "Builtin", "action_btn_init_from_job": "Init a new action from job", "action_help_add_from": "Current action was initialized with data from \"{{jobName}}\" job of \"{{pipelineName}}\" pipeline in \"{{projectKey}}\" project. The data will not be stored until you save the action.", - "admin_migration_not_started": "Not started", "admin_migration_started": "Started", "admin_migration_done": "Done", "admin_migration_title": "Status of application migration to workflow", - "admin_queue_title": "Current CDS jobs queue", - "application_home_history": "History", "application_home_repo": "GIT repository", "application_home_no_repo": "Link a repository", @@ -61,7 +55,6 @@ "application_integration_added": "Integration added", "application_integration_deleted": "Integration deleted", "application_integration_updated": "Integration updated", - "application_create": "Create a new application", "application_created": "Application created", "application_deleted": "Application deleted", @@ -91,13 +84,11 @@ "application_update_ok": "Application has been updated", "application_variable_list_title": "List of application variables: ", "application_variable_form_title": "Add a new variable: ", - "artifact_name": "Artifact name", "artifact_tag": "Tag", "artifact_sha512": "SHA512 Checksum", "artifact_none": "No artifact", "static_file_name": "Static filenames", - "audit_change": "Change", "audit_no": "No audit", "audit_time_author": "Change date", @@ -110,7 +101,6 @@ "audit_context": "Context", "audit_modification_type": "Modification type", "audit_title_variable": "Variable audit", - "btn_apply": "Apply", "btn_cancel": "Cancel", "btn_continue": "Continue", @@ -137,14 +127,10 @@ "btn_back": "Back", "btn_filter": "Filter", "btn_synchronize": "Synchronize", - "cdsctl_choice_os": "Choose your OS", "cdsctl_choice_arch": "Choose your architecture", "cdsctl_choice_options": "Choose your options", "cdsctl_choice_options_with_keychain": "With OS keychain enabled", - - - "cdsctl_part_1": "curl {{apiURL}}/download/cdsctl/{{osChoice}}/{{archChoice}}{{variant}} -o cdsctl\n\n# add execution rights on cdsctl\nchmod +x cdsctl\n\n# check if binary is ok, this command will display cdsctl version\n./cdsctl version", "cdsctl_part_2": "# The cdsctl login command will store credentials in your keychain\n./cdsctl login --api-url {{apiURL}} -u {{username}}\n\n# this command will display your username, fullname, email\n# if you see them, cdsctl is well configured\n./cdsctl user me", "cdsctl_part_3": "# The cdsctl shell to browse your projects and workflows without the need to open a browser.\n# see https://ovh.github.io/cds/docs/components/cdsctl/shell/\ncdsctl shell\n\n# Display monitoring view\ncdsctl ui\n\n# help is available on each cdsctl command\ncdsctl --help", @@ -153,14 +139,11 @@ "cdsctl_part_6": "# Add a git alias in your gitconfig file\n$ cat ~/.gitconfig\n[alias]\n track = !cdsctl workflow status --track", "cdsctl_part_7": "# Update from current CDS Platform\ncdsctl update\n\n# Update from latest release on github\ncdsctl update --from-github", "cdsctl_part_8": "# All commands have the flag --format. This is useful for use cdsctl in your script\n# Formats available: table, json, yaml\ncdsctl user list --format json", - "cdsctl_info_title": "is the CDS Command Line tool. It has the same features, and even more than the web ui. It allows you to do everything:", - "cdsctl_info_list_1": "Administrate users, groups, actions, worker models, workflow templates, ...", "cdsctl_info_list_2": "Manage your projects, workflows, applications, environments, ...", "cdsctl_info_list_3": "Monitore & operate your CDS platform", "cdsctl_info_list_4": "Script everything", - "cdsctl_title_1": "1 - Download cdsctl", "cdsctl_title_2": "2 - Login", "cdsctl_title_3": "3 - Play with cdsctl", @@ -169,25 +152,18 @@ "cdsctl_title_6": "6 - Git Track", "cdsctl_title_7": "7 - Update cdsctl", "cdsctl_title_8": "8 - Scripting", - "cdsctl_notice_1_1": "Binaries available on current installation: ", - "cdsctl_notice_2_1": "If you use many instances of CDS, you can use the -f flag, example: `./cdsctl -f .cds/anotherInstance login --api-url http://another-instance:8081 -u ", "cdsctl_notice_2_2": "ByPass Keychain or file configuration:", "cdsctl_notice_2_3": "Want to debug something? You can use CDS_VERBOSE environment variable:", - "cdsctl_notice_6_1": "By setting this new alias in your gitconfig file, you can now use: git push && git track", - "cdsctl_title_6_info_1": "Imagine now that you develop something and you have a CDS Workflow triggered on each git push", "cdsctl_title_6_info_2": "The `git track` alias allows you to see the workflow status without opening a browser.", - "cdsctl_notice": "Notice:", - "commit_author": "Author", "commit_id": "ID", "commit_message": "Message", "commit_date": "Date", - "common_action": "Action", "common_search": "Search", "common_link": "Link", @@ -326,13 +302,12 @@ "common_migrate": "Migrate", "common_capabilities": "Capabilities", "common_help_no_group": "No group can be found, you will not be able to save current resource.", - + "common_deleted": "Deleted with success", "coverage_branches_title": "Covered branches: ", "coverage_functions_title": "Covered functions: ", "coverage_lines_title": "Covered lines: ", "coverage_trend_default_branch": "Trend compared to default branch", "coverage_trend_current_branch": "Trend compared to previous run", - "key_copied": "Key copied", "keys_added": "Key added", "keys_add_title": "Add a key", @@ -345,18 +320,13 @@ "keys_no": "There is no keys", "keys_ssh_key_help": "A SSH Key is useful when you want to git clone some code from a Git Repository. CDS can generate a key pair and you can copy / paste the public key to your access keys on your repositories. If you want to use manually the key, please read:", "keys_pgp_key_help": "A PGP Key is useful when you want to git tag a repository. If you want to use manually the key, please read:", - "usage_application_list": "Applications used", "usage_workflow_list": "Workflows used", "usage_pipeline_list": "Pipelines used", "usage_environment_list": "Environments used", - "deployment_integration_name": "Integration / deployment", - "danger_zone": "Danger Zone", - "downloads_title": "Download", - "environment_created": "Environment added", "environment_create_placeholder": "New environment", "environment_cloned": "Environment cloned without password variables", @@ -369,17 +339,14 @@ "environment_renamed": "Environment renamed", "environment_variable_form_title": "Add a variable", "environment_variable_list_title": "Variables list", - "filter": "Filter", "filter_list_click": "Click for filter list", - "favorite_title": "Bookmarks management", "favorite_add": "Add a bookmark", "favorite_add_btn": "Add to my bookmarks", "favorite_select_type": "Select a favorite type", "favorite_project_select": "Select a project", "favorite_workflow_select": "Select a workflow", - "broadcast_list_title": "Broadcasts", "broadcast_new_title": "Add a broadcast", "broadcast_edit_title": "Edit an broadcast", @@ -401,7 +368,6 @@ "broadcast_load_broadcasts": "Loading broadcasts...", "broadcast_recent": "Recent", "broadcast_seen": "Seen", - "graph_vulnerability_title": "Vulnerabilities", "graph_vulnerability_x": "N° workflow", "graph_vulnerability_y": "Total", @@ -410,7 +376,6 @@ "graph_unittest_y": "Total", "graph_coverage_title": "Code coverage", "graph_coverage_y": "Percentage", - "group_added": "Group added", "group_deleted": "Group deleted", "group_create_title": "Create a group", @@ -434,11 +399,9 @@ "group_user_is_admin": "User is administrator on group", "group_btn_set_admin": "Admin", "group_btn_unset_admin": "Admin", - "key_copy_public": "Copy public key", "key_or_create": "(Create)", "key_warning_add_repo_title": "Don't forget to add your ssh key on your repository", - "token_description": "Description", "token_value": "Token", "token_type": "Type", @@ -451,7 +414,6 @@ "token_loading": "Loading tokens", "token_group_name": "Group", "token_generated": "Here is your generated token", - "heatmap": "Event heatmap", "heatmap_empty": "No event triggered yet", "heatmap_filter_mute": "Hide events on this project", @@ -459,7 +421,6 @@ "heatmap_tag": "Tags", "heatmap_timestamp": "Event date", "heatmap_workflow_name": "Workflow name", - "hook_create_label": "Create a hook", "hook_deleted": "Hook deleted", "hook_edit_title": "Hook edition: {{app}} / {{pip}}", @@ -473,17 +434,13 @@ "hook_task_execs_total": "Total task executions", "hook_task_repo_fullname": "Repository fullname", "hook_task_execs": "Executions", - "home_documentation": "Documentation", - "job_add_step": "Add a step", "job_delete": "Delete job", "job_save": "Save job", "job_spawn_title": "Information", "job_spawn_no_information": "No information for now...", - "monitoring": "Monitoring", - "navbar_actions": "Actions", "navbar_project_create": "Create a project", "navbar_admin_broadcast": "Broadcasts", @@ -509,7 +466,6 @@ "navbar_general": "Global", "navbar_dark_mode": "Dark mode", "navbar_disconnect": "Logout", - "notifications_added": "Notifications added", "notification_clone": "Notification to clone", "notifications_deleted": "Notification deleted", @@ -534,7 +490,6 @@ "notification_type_title": "Type: ", "notification_type": "Type", "notification_updated": "Notification updated", - "parameter_added": "Parameter added", "parameter_deleted": "Parameter deleted", "parameter_description": "Description", @@ -546,14 +501,12 @@ "parameter_value": "Value", "parameter_advanced": "Advanced parameter", "parameters_advanced": "Advanced parameters", - "permission_added": "Permission added", "permission_deleted": "Permission deleted", "permission_read": "Read", "permission_read_execute": "Read / Execute", "permission_read_write_execute": "Read / Write / Execute", "permission_updated": "Permission updated", - "pipeline_added": "Pipeline added", "pipeline_application": "Applications using this pipeline", "pipeline_workflows": "Workflows using this pipeline", @@ -600,7 +553,6 @@ "pipeline_triggered": "Triggered pipelines", "pipeline_updated": "Pipeline updated", "pipeline_administration": "General administration of the pipeline", - "pipeline_run_test_filter_empty": "There is no test matching '{{criteria}}'", "pipeline_run_test_no_error": "All tests are successful", "pipeline_run_test_total_title_s": " tests", @@ -610,26 +562,22 @@ "pipeline_run_test_skipped_title_s": " tests skipped", "pipeline_run_test_skipped_title": " test skipped", "pipeline_run_test_testcase_name": "Testsuite / Testcase", - "pipeline_stage_edit": "Edit stage", "pipeline_stage_moved": "Stage moved", "pipeline_stage_no": "The pipeline has no stage", "pipeline_wizard_description": "Create or select your first pipeline for you workflow", - "poller_added": "Poller added", "poller_create_label": "Create a poller", "poller_deleted": "Poller deleted", "poller_edit_title": "Poller edition on {{app}} / {{pip}}", "poller_updated": "Poller updated", "poller_workflow_label": "Poller: ", - "prerequisite_add": "Add a run prerequisite", "prerequisite_no": "There is no run prerequisite", "prerequisite_parameter_name": "parameter name", "prerequisite_title": "Run prerequisite", "prerequisite_title_s": "Run prerequisites", "prerequisite_value": "Expected value", - "project_list": "All projects", "project_description": "Project description", "project_icon": "Project icon", @@ -672,7 +620,6 @@ "project_variable_form_title": "Add a new variable: ", "project_workflows_list": "List of workflows in the project: ", "project_label_no": "There is no label configured in this project.", - "integration_add_title": "Link an integration: ", "integration_list_title": "Linked integrations: ", "integration_name": "Name", @@ -680,13 +627,10 @@ "integration_model": "Model", "integration_configuration": "Configuration", "integration_official_tooltip": "Public integration", - "integration_hook": "hook", "integration_deployment": "deployment", "integration_storage": "storage", - "queue_monitoring": "Queue Monitoring", - "repo_name": "Repository", "repoman_delete_msg_ok": "Repository mananger is detached from the project", "repoman_name": "Repository manager", @@ -694,7 +638,6 @@ "repoman_modal_verif_code_placeholder": "Verification code", "repoman_modal_verif_text": "Click on the following link to finalize the link between CDS and the repository manager: ", "repoman_modal_verif_title": "Repository manager authorization", - "requirement_add": "Add a requirement", "requirement_name": "Name", "requirement_type": "Type", @@ -716,7 +659,6 @@ "requirement_documentation": "Documentation about requirements", "requirement_error_model": "You can't have multiple requirements of type model", "requirement_error_hostname": "You can't have multiple requirements of type hostname", - "requirement_placeholder_name_binary": "", "requirement_placeholder_name_model": "", "requirement_placeholder_name_memory": "", @@ -725,7 +667,6 @@ "requirement_placeholder_name_service": "hostnameOfService", "requirement_placeholder_name_volume": "", "requirement_placeholder_name_os-architecture": "", - "requirement_placeholder_value_binary": "bash", "requirement_placeholder_value_model": "Choose a worker model", "requirement_placeholder_opts_model": "If it's a worker model Docker, you can add some option. See Documentation", @@ -735,7 +676,6 @@ "requirement_placeholder_value_service": "postgres:9.5.3", "requirement_placeholder_opts_service": "POSTGRES_USER=myuser\nPOSTGRES_PASSWORD=mypassword", "requirement_placeholder_value_volume": "type=bind,source=/hostDir/sourceDir,destination=/dirInJob", - "scheduler_added": "Scheduler created", "scheduler_deleted": "Scheduler deleted", "scheduler_create_label": "Create a scheduler", @@ -743,9 +683,7 @@ "scheduler_edit_title": "Edition of scheduler: {{app}} / {{pip}} {{env}}", "scheduler_updated": "Scheduler updated", "scheduler_workflow_label": "Scheduler: ", - "settings_tips": "Tips", - "services": "services", "services_list": "CDS Services", "services_see_all": "see all", @@ -756,7 +694,6 @@ "service_alert": "Status Alert - please check status below", "service_warning": "Status Warning - please check status below", "service_ok": "Status OK - All is fine", - "stage_add_label": "Add stage", "stage_added": "Stage added", "stage_deleted": "Stage deleted", @@ -766,7 +703,6 @@ "stage_job_updated": "Job updated", "stage_order": "Stage number", "stage_updated": "Stage updated", - "step_add_job": "Add job", "step_added": "Step added", "step_deleted": "Step deleted", @@ -776,7 +712,6 @@ "step_updated": "Step updated", "step_title_duration": "Start: {{start}}, End: {{end}}", "step_edit_title": "Edit title", - "timeline_loading": "Loading timeline...", "timeline_no": "Timeline is empty", "timeline_title": "Timeline", @@ -788,7 +723,6 @@ "timeline_filter_project_select": "Select a project", "timeline_filter_workflow_select": "Select a workflow", "timeline_filter_workflow_title": "Workflow list:", - "trigger_added": "Trigger added", "trigger_add_prerequisite_title": "Add a run condition", "trigger_create_title": "Create a new trigger from {{app}} / {{pip}} {{env}}", @@ -801,7 +735,6 @@ "trigger_manual_label": "Manual trigger", "trigger_to_title": "Triggered pipeline", "trigger_updated": "Trigger updated", - "variable_added": "Variable added", "variable_deleted": "Variable deleted", "variable_description": "Description", @@ -810,9 +743,7 @@ "variable_type": "Type", "variable_updated": "Variable updated", "variable_value": "Value", - "ui_updated": "UI has just been updated. Please click here to refresh your page.", - "user_label_fullname": "Fullname", "user_label_username": "Username", "user_label_password": "Password", @@ -823,10 +754,8 @@ "user_is_admin": "This user is a CDS Administrator", "user_saved": "User saved", "user_deleted": "User is deleted", - "user_list_title": "Users", "user_none": "No user", - "vcs_connection": "Connection:", "vcs_user": "User: ", "vcs_password": "Password: ", @@ -835,7 +764,6 @@ "vcs_ssh_key": "SSH key", "vcs_pgp_key": "PGP key", "vcs_server": "VCS Server", - "vulnerability_fixin": "Fix in", "vunerability_hide": "Hide", "vulnerability_ignore": "Ignore", @@ -843,7 +771,6 @@ "vulnerability_origin": "Origin", "vulnerability_showmore": "Show more", "vulnerability_updated": "Vulnerability updated", - "warning_context": "Context", "warning_element": "Element", "warning_goto_application_variables": "application variables", @@ -864,11 +791,9 @@ "warning_workflow": "{{username}} has just updated the workflow.", "warning_build_title": "The build is in success state but there are/is {{nb}} optional step(s) in error", "warning_updated": "Warning up to date", - "wizard_app_clone": "Clone an application", "wizard_app_empty": "Empty application", "wizard_ssh_key_name": "Ssh key name", - "worker_model": "Worker Model", "worker_model_type": "Type", "worker_model_env": "Environment variables", @@ -942,13 +867,11 @@ "worker_model_private_registry": "Private registry", "worker_model_username": "Username", "worker_model_password": "Password", - "workflow_modal_change_view_confirm": "Are you sure you want to discard your unsaved changes?", "workflow_save_as_code_title": "Save workflow as code", "workflow_save_as_code_pending": "Pushing files...", "workflow_as_code_pr_success": "A pull-request has just been created:", "workflow_as_code_no_edit": "You can't edit your workflow in UI when you are in as code mode", - "workflow_node_condition_empty": "There are empty run conditions", "workflow_node_condition_duplicate": "You test many times the same variable", "workflow_app_info_new_wf": "This project is allowed to use the new CDS Workflows.", @@ -1004,7 +927,6 @@ "workflow_hook_delete_msg": "Do you confirm the deletion of this hook?", "workflow_hook_log_title": "Hook's log", "workflow_hook_log_workflow_run": "Workflow run", - "workflow_fork_delete_alert": "BE CAREFUL, this will remove the fork and all his children", "workflow_fork_delete_alert_soft": "Remove only this fork", "workflow_fork_delete_btn": "Delete fork", @@ -1114,7 +1036,6 @@ "workflow_logs_pretty_ansi": "Show pretty logs with ANSI interpreter", "workflow_logs_pretty_html": "Show pretty logs with HTML interpreter", "workflow_logs_raw": "Show raw logs (without ANSI and HTML interpreter)", - "workflow_wizard_select_repo_man": "Select a repository manager", "workflow_wizard_select_repo": "Select a repository", "workflow_wizard_select_repo_loading": "Loading repositories...", @@ -1122,7 +1043,6 @@ "workflow_wizard_select_repo_man_add": "Or add a repository manager", "workflow_wizard_select_template": "Select a workflow template", "wizard_repo_files": "Files found: ", - "workflow_template_created": "Workflow template created", "workflow_template_saved": "Workflow template saved", "workflow_template_deleted": "Workflow template deleted", @@ -1155,10 +1075,9 @@ "workflow_template_help_edit_from": "Current workflow template is synchronized from URL. You can't edit it.", "workflow_template_import_from_url": "Import from URL", "workflow_template_imported_from_url": "Imported from URL", - "application_repository_help_line_1": "Your application was not imported from your code.", "environment_repository_help_line_1": "Your environment was not imported from your code.", "pipeline_repository_help_line_1": "Your pipeline was not imported from your code.", "workflow_repository_help_line_1": "Your workflow was not imported from your code.", "workflow_repository_help_line_2": "Manage your workflow as code from your repository to automatically update it with changes on your branches." -} +} \ No newline at end of file diff --git a/ui/src/assets/i18n/fr.json b/ui/src/assets/i18n/fr.json index a2ccfd561a..fd425a8cbb 100644 --- a/ui/src/assets/i18n/fr.json +++ b/ui/src/assets/i18n/fr.json @@ -1,10 +1,8 @@ { "access_refused": "accès refusé", - "account_btn_password": "Mot de passe perdu", "account_btn_signup": "Créer un compte", "account_btn_login": "Se connecter", - "account_login_btn_connect": "Connexion", "account_login_title": "Se connecter à CDS", "account_password_btn_reset": "Réinitialiser le mot de passe", @@ -15,7 +13,6 @@ "account_signup_waiting_text": "Vous aller recevoir un email afin d'activer votre compte.", "account_verify_title": "Information du compte", "account_verify_error": "Impossible d'activer le compte.", - "action_step_title": "Étapes du job", "action_step_final_title": "Étapes finales du job", "action_list_title": "Actions", @@ -43,14 +40,11 @@ "action_builtin": "Prédéfinie", "action_btn_init_from_job": "Initialiser une nouvelle action à partir du job", "action_help_add_from": "L'action courante a été initialisée à partir des données du job \"{{jobName}}\" du pipeline \"{{pipelineName}}\" dans le projet \"{{projectKey}}\". Ces données ne seront pas enregistrées tant que l'action n'aura pas été sauvegardée.", - "admin_migration_not_started": "Non commencé", "admin_migration_started": "En cours", "admin_migration_done": "Terminé", "admin_migration_title": "Statut de la migration des applications vers les workflows", - "admin_queue_title": "File d'attente", - "application_home_history": "Historique", "application_home_repo": "Dépôt GIT", "application_home_no_repo": "Lier un dépôt GIT", @@ -61,7 +55,6 @@ "application_integration_added": "Intégration ajoutée", "application_integration_deleted": "Intégration supprimée", "application_integration_updated": "Intégration mise à jour", - "application_create": "Créer une application", "application_created": "Application créée", "application_deleted": "Application supprimée", @@ -91,13 +84,11 @@ "application_update_ok": "L'application a été mise à jour", "application_variable_list_title": "Liste des variables de l'application : ", "application_variable_form_title": "Ajouter une variable à l'application : ", - "artifact_name": "Nom de l'artefact", "artifact_tag": "Tag", "artifact_sha512": "SHA512 Checksum", "artifact_none": "Aucun artefact", "static_file_name": "Fichiers statiques", - "audit_change": "Modification", "audit_no": "Aucun audit", "audit_time_author": "Heure de modification", @@ -110,7 +101,6 @@ "audit_context": "Contexte", "audit_modification_type": "Type de modification", "audit_title_variable": "Audit de variable", - "btn_apply": "Appliquer", "btn_cancel": "Annuler", "btn_close": "Fermer", @@ -137,13 +127,10 @@ "btn_back": "Retour", "btn_filter": "Filtrer", "btn_synchronize": "Synchronizer", - "cdsctl_choice_os": "Choisissez votre système d'exploitation", "cdsctl_choice_arch": "Choisissez votre architecture", "cdsctl_choice_options": "Choisissez vos options", "cdsctl_choice_options_with_keychain": "Avec support du trousseau de clé", - - "cdsctl_part_1": "curl {{apiURL}}/download/cdsctl/{{osChoice}}/{{archChoice}}{{variant}} -o cdsctl\n\n# ajoutez les droits EXEC sur cdsctl\nchmod +x cdsctl\n\n# vérifiez que le binaire est ok, cette commande affiche la version du binaire\n./cdsctl version", "cdsctl_part_2": "# La commande cdsctl login enregistre dans votre trousseau votre mot de passe\n./cdsctl login --api-url {{apiURL}} -u {{username}}\n\n# cette command affiche votre nom d'utilisateur, nom complet, adresse mail\n# si vous les voyez, c'est que cdsctl est bien configuré\n./cdsctl user me", "cdsctl_part_3": "# La commande cdsctl shell permet de naviguer dans vos projets et vos workflows sans avoir besoin d'ouvrir un navigateur.\n# voir https://ovh.github.io/cds/docs/components/cdsctl/shell/\ncdsctl shell\n\n# Affiche la vue de monitoring\ncdsctl ui\n\n# l'aide est disponible sur chaque commande cdsctl\ncdsctl --help", @@ -152,14 +139,11 @@ "cdsctl_part_6": "# Ajoutez un alias git dans votre fichier gitconfig\n$ cat ~/.gitconfig\n[alias]\n track = !cdsctl workflow status --track", "cdsctl_part_7": "# Mettez à jour votre binaire cdsctl depuis votre plateforme CDS\ncdsctl update\n\n# Mettez à jour depuis la dernière release disponible sur github\ncdsctl update --from-github", "cdsctl_part_8": "# Toutes les commandes ont un flag --format. Ceci facilite l'usage de cdsctl dans vos scripts\n# Formats disponibles: table, json, yaml\ncdsctl user list --format json", - "cdsctl_info_title": "est l'outil de Ligne de Commande CDS. Cet outil contient toutes les fonctionnalités disponibles dans l'interface web, et même plus. Il vous permet par exemple de:", - "cdsctl_info_list_1": "Gérer vos utilisateurs, vos groupes, vos actions, vos worker models, vos templates de workflow, ...", "cdsctl_info_list_2": "Gérer vos projets, vos workflows, vos applications, vos environnements, ...", "cdsctl_info_list_3": "Monitorer & administrer votre plateforme CDS", "cdsctl_info_list_4": "Automatiser n'importe quelle tâche (administation, utilisation...)", - "cdsctl_title_1": "1 - Télécharger CDSCTL", "cdsctl_title_2": "2 - Login", "cdsctl_title_3": "3 - Premiers pas avec cdsctl", @@ -168,25 +152,18 @@ "cdsctl_title_6": "6 - Git Track", "cdsctl_title_7": "7 - Mettre à jour cdsctl", "cdsctl_title_8": "8 - Automatisation", - "cdsctl_notice_1_1": "Binaires disponibles sur cette instance de CDS: ", - "cdsctl_notice_2_1": "Si vous avez plusieurs instances de CDS, vous pouvez utiliser le flag -f, exemple: `./cdsctl -f .cds/anotherInstance login --api-url http://another-instance:8081 -u ", "cdsctl_notice_2_2": "Ne pas utiliser le secret en provenance du trousseau ou d'un fichier de configuration:", "cdsctl_notice_2_3": "Vous souhaitez débugger quelque chose ? Vous pouvez utiliser la variable d'environnement CDS_VERBOSE:", - "cdsctl_notice_6_1": "Après avoir ajouté cet alias dans votre fichier gitconfig, vous pouvez maintenant utiliser: git push && git track", - "cdsctl_title_6_info_1": "Imaginez maintenant que vous développiez quelque chose et que vous avez un workflow CDS lancé à chaque git push", "cdsctl_title_6_info_2": "La commande `git track` permet de voir dans votre console le statut du workflow en cours, sans voir besoin d'ouvrir un navigateur web.", - "cdsctl_notice": "À noter:", - "commit_author": "Auteur", "commit_id": "ID", "commit_message": "Message", "commit_date": "Date", - "common_action": "Action", "common_search": "Rechercher", "common_link": "Lien", @@ -325,13 +302,12 @@ "common_migrate": "Migrer", "common_capabilities": "Capacités", "common_help_no_group": "Aucun groupe n'a été trouvé, vous ne pourrez pas sauvegarder la ressource en cours d'édition.", - + "common_deleted": "Supprimé avec succès", "coverage_branches_title": "Branches couvertes : ", "coverage_functions_title": "Fonctions couvertes : ", "coverage_lines_title": "Lignes couvertes : ", "coverage_trend_default_branch": "Tendance par rapport à la branche par défaut", "coverage_trend_current_branch": "Tendance par rapport au build précédent", - "key_copied": "La clé a été copiée", "keys_added": "La clé a été ajoutée", "keys_add_title": "Ajouter une clé", @@ -344,18 +320,13 @@ "keys_no": "Il n'y a aucune clé", "keys_ssh_key_help": "Une clé SSH est généralement utile lorsque vous souhaitez cloner un dépôt Git. CDS peut générer une paire de clé, il ne vous restera qu'à copier / coller la clé publique fournie par CDS dans les clés autorisées sur vos dépôts. Si vous souhaitez utiliser cette clé manuellement, consultez la documentation:", "keys_pgp_key_help": "Une clé PGP est généralement utile lorsque vous souhaitez tagguer un dépôt Git. Si vous souhaitez utiliser cette clé manuellement, consultez la documentation:", - "usage_application_list": "Applications utilisées", "usage_workflow_list": "Workflows utilisés", "usage_pipeline_list": "Pipelines utilisés", "usage_environment_list": "Environnements utilisés", - "deployment_integration_name": "Intégration / déploiement", - "danger_zone": "Zone dangereuse", - "downloads_title": "Téléchargements", - "environment_created": "Environnement créé", "environment_deleted": "Environnement supprimé", "environment_cloned": "Environnement cloné sans les variables mots de passe", @@ -368,17 +339,14 @@ "environment_renamed": "Environnement renommé", "environment_variable_form_title": "Ajouter une variable", "environment_variable_list_title": "Liste des variables", - "filter": "Filtrer", "filter_list_click": "Cliquer pour filtrer la liste", - "favorite_title": "Gestion des favoris", "favorite_add": "Ajouter un favori", "favorite_add_btn": "Ajouter à mes favoris", "favorite_select_type": "Sélectionnez un type de favoris", "favorite_project_select": "Sélectionnez un projet", "favorite_workflow_select": "Sélectionnez un workflow", - "broadcast_list_title": "Infos", "broadcast_new_title": "Ajouter une information", "broadcast_edit_title": "Éditer l'information", @@ -400,7 +368,6 @@ "broadcast_load_broadcasts": "Chargement des informations...", "broadcast_recent": "Récentes", "broadcast_seen": "Vues", - "graph_vulnerability_title": "Vulnérabilités", "graph_vulnerability_x": "N° workflow", "graph_vulnerability_y": "Total", @@ -409,7 +376,6 @@ "graph_unittest_y": "Total", "graph_coverage_title": "Couverture", "graph_coverage_y": "Taux de couverture", - "group_added": "Groupe ajouté", "group_deleted": "Groupe supprimé", "group_create_title": "Création d'un groupe", @@ -433,11 +399,9 @@ "group_user_is_admin": "Cet utilisateur est administrateur du groupe", "group_btn_set_admin": "administrateur", "group_btn_unset_admin": "administrateur", - "key_copy_public": "Copier la clé publique", "key_or_create": "(Créer)", "key_warning_add_repo_title": "N'oubliez pas d'ajouter votre clé SSH sur votre dépôt", - "token_description": "Description", "token_value": "Token", "token_type": "Type", @@ -450,7 +414,6 @@ "token_loading": "Chargement des tokens", "token_group_name": "Groupe", "token_generated": "Voici votre token généré", - "heatmap": "Heatmap", "heatmap_empty": "Aucun évènement déclenché", "heatmap_filter_mute": "Masquer les évènements de ce projet", @@ -458,7 +421,6 @@ "heatmap_tag": "Tags", "heatmap_timestamp": "Date d'évènement", "heatmap_workflow_name": "Nom du workflow", - "hook_create_label": "Créer un hook", "hook_deleted": "Hook supprimé", "hook_edit_title": "Édition du hook : {{app}} / {{pip}}", @@ -472,17 +434,13 @@ "hook_task_execs_total": "Total des exécutions", "hook_task_repo_fullname": "Nom du dépôt", "hook_task_execs": "Exécutions", - "home_documentation": "Documentation", - "job_add_step": "Nouvelle étape", "job_delete": "Supprimer le job", "job_save": "Sauvegarder le job", "job_spawn_title": "Informations", "job_spawn_no_information": "Pas d'information pour l'instant...", - "monitoring": "Monitoring", - "navbar_actions": "Actions", "navbar_project_create": "Créer un projet", "navbar_admin_broadcast": "Informations", @@ -508,7 +466,6 @@ "navbar_general": "Global", "navbar_dark_mode": "Mode sombre", "navbar_disconnect": "Déconnexion", - "notifications_added": "Notifications ajoutées", "notification_clone": "Notification à cloner", "notifications_deleted": "Notification supprimée", @@ -533,7 +490,6 @@ "notification_type_title": "Type : ", "notification_type": "Type", "notification_updated": "Notification mise à jour", - "parameter_added": "Paramètre ajouté", "parameter_deleted": "Paramètre supprimé", "parameter_description": "Description", @@ -545,14 +501,12 @@ "parameter_value": "Valeur", "parameter_advanced": "Paramètre avancé", "parameters_advanced": "Paramètres avancés", - "permission_added": "Permission ajoutée", "permission_deleted": "Permission supprimée", "permission_read": "Lecture", "permission_read_execute": "Lecture / Exécution", "permission_read_write_execute": "Lecture / Ecriture / Exécution", "permission_updated": "Permission mise à jour", - "pipeline_added": "Pipeline créé", "pipeline_application": "Applications utilisant ce pipeline", "pipeline_workflows": "Workflows utilisant ce pipeline", @@ -599,7 +553,6 @@ "pipeline_triggered": "Pipelines déclenchés", "pipeline_updated": "Pipeline mis à jour", "pipeline_administration": "Administration générale du pipeline", - "pipeline_run_test_filter_empty": "Il n'y a aucun test correspondant au filter {{criteria}}", "pipeline_run_test_no_error": "Tous les tests sont en succès", "pipeline_run_test_total_title_s": " tests", @@ -609,26 +562,22 @@ "pipeline_run_test_skipped_title_s": " tests ignorés", "pipeline_run_test_skipped_title": " test ignoré", "pipeline_run_test_testcase_name": "Testsuite / Testcase", - "pipeline_stage_edit": "Édition du stage", "pipeline_stage_moved": "Stage déplacé", "pipeline_stage_no": "Le pipeline ne contient aucun stage", "pipeline_wizard_description": "Créer ou sélectionner votre premier pipeline associé à votre workflow", - "poller_added": "Poller ajouté", "poller_create_label": "Créer un poller", "poller_deleted": "Poller supprimé", "poller_edit_title": "Édition du poller sur {{app}} / {{pip}}", "poller_updated": "Poller mis à jour", "poller_workflow_label": "Poller : ", - "prerequisite_add": "Ajouter une condition de lancement", "prerequisite_no": "Aucune condition de lancement n'est définie", "prerequisite_parameter_name": "Nom du paramètre", "prerequisite_title": "Condition de lancement", "prerequisite_title_s": "Conditions de lancement", "prerequisite_value": "Valeur attendue", - "project_list": "Tous les projets", "project_description": "Description du projet", "project_icon": "Icône du projet", @@ -671,7 +620,6 @@ "project_variable_form_title": "Ajouter une nouvelle variable: ", "project_workflows_list": "Liste des workflows du projet : ", "project_label_no": "Il n'y a pas de label configuré dans ce projet.", - "integration_add_title": "Lier une intégration : ", "integration_list_title": "Liste des intégrations: ", "integration_name": "Nom", @@ -679,13 +627,10 @@ "integration_model": "Modèle", "integration_configuration": "Configuration", "integration_official_tooltip": "Intégration publique", - "integration_hook": "hook", "integration_deployment": "déploiement", "integration_storage": "stockage", - "queue_monitoring": "Queue Monitoring", - "repo_name": "Nom du dépôt", "repoman_delete_msg_ok": "Le gestionnaire de dépôt n'est plus lié au projet", "repoman_name": "Gestionnaire de dépôt", @@ -693,7 +638,6 @@ "repoman_modal_verif_code_placeholder": "Code de vérification", "repoman_modal_verif_text": "Cliquez sur le lien suivant pour finaliser la connexion entre CDS et le gestionnaire de dépôt : ", "repoman_modal_verif_title": "Autorisation auprès du gestionnaire de dépôt", - "requirement_add": "Ajouter un pré-requis", "requirement_name": "Nom", "requirement_type": "Type", @@ -715,7 +659,6 @@ "requirement_documentation": "À propos des pré-requis", "requirement_error_model": "Vous ne pouvez pas ajouter plusieurs pré-requis de type modèle", "requirement_error_hostname": "Vous ne pouvez pas ajouter plusieurs pré-requis de type hostname", - "requirement_placeholder_name_binary": "", "requirement_placeholder_name_model": "", "requirement_placeholder_name_memory": "", @@ -724,7 +667,6 @@ "requirement_placeholder_name_service": "HostnameDuService", "requirement_placeholder_name_volume": "", "requirement_placeholder_name_os-architecture": "", - "requirement_placeholder_value_binary": "bash", "requirement_placeholder_value_model": "Choisissez un modèle de worker", "requirement_placeholder_opts_model": "Si c'est un modèle de worker type Docker, vous pouvez ajouter des options. Consultez la documentation.", @@ -734,7 +676,6 @@ "requirement_placeholder_value_service": "postgres:9.5.3", "requirement_placeholder_opts_service": "POSTGRES_USER=myuser\nPOSTGRES_PASSWORD=mypassword", "requirement_placeholder_value_volume": "type=bind,source=/hostDir/sourceDir,destination=/dirInJob", - "scheduler_added": "Scheduler créé", "scheduler_deleted": "Scheduler supprimé", "scheduler_create_label": "Créer un scheduler", @@ -742,9 +683,7 @@ "scheduler_edit_title": "Édition du scheduler : {{app}} / {{pip}} {{env}}", "scheduler_updated": "Scheduler mis à jour", "scheduler_workflow_label": "Scheduler : ", - "settings_tips": "Conseils", - "services": "services", "services_list": "CDS Services", "services_see_all": "Voir tous", @@ -755,7 +694,6 @@ "service_alert": "Status Alert - vérifier le statut ci-dessous", "service_warning": "Status Warning - vérifier le statut ci-dessous", "service_ok": "Status OK - tout est ok", - "stage_add_label": "Ajouter un stage", "stage_added": "Stage ajouté", "stage_deleted": "Stage supprimé", @@ -765,7 +703,6 @@ "stage_job_updated": "Job mis à jour", "stage_order": "Numéro du stage", "stage_updated": "Stage mis à jour", - "step_add_job": "Ajouter un job", "step_added": "Etape ajoutée", "step_deleted": "Etape supprimée", @@ -775,7 +712,6 @@ "step_updated": "Etape mise à jour", "step_title_duration": "Début: {{start}}, Fin: {{end}}", "step_edit_title": "Éditer le titre", - "timeline_loading": "Chargement du fil d'actualité...", "timeline_no": "Le fil d'actualité est vide", "timeline_title": "Fil d'actualité", @@ -787,7 +723,6 @@ "timeline_filter_project_select": "Sélectionner un projet", "timeline_filter_workflow_select": "Sélectionner un workflow", "timeline_filter_workflow_title": "Liste des workflows :", - "trigger_added": "Trigger ajouté", "trigger_add_prerequisite_title": "Ajouter une condition de lancement", "trigger_create_title": "Création d'un nouveau trigger depuis {{app}} / {{pip}} {{env}}", @@ -800,7 +735,6 @@ "trigger_label_edit": "Édition du trigger", "trigger_to_title": "Pipeline à déclencher", "trigger_updated": "Trigger mis à jour", - "variable_added": "Variable ajoutée", "variable_deleted": "Variable supprimée", "variable_description": "Description", @@ -809,9 +743,7 @@ "variable_type": "Type de variable", "variable_updated": "Variable mise à jour", "variable_value": "Valeur", - "ui_updated": "L'interface vient d'être mise à jour. Merci de cliquer ici pour rafraîchir votre page.", - "user_label_fullname": "Nom complet de l'utilisateur", "user_label_username": "Nom d'utilisateur", "user_label_password": "Mot de passe", @@ -822,10 +754,8 @@ "user_is_admin": "Cet utilisateur est un administrateur CDS", "user_saved": "Utilisateur sauvegardé", "user_deleted": "L'utilisateur est supprimé", - "user_list_title": "Utilisateurs", "user_none": "Aucun utilisateur", - "vcs_connection": "Connexion : ", "vcs_user": "Utilisateur : ", "vcs_password": "Mot de passe : ", @@ -834,7 +764,6 @@ "vcs_ssh_key": "Clé SSH", "vcs_pgp_key": "Clé PGP", "vcs_server": "Serveur VCS", - "vulnerability_fixin": "Fixé en", "vunerability_hide": "Cacher", "vulnerability_ignore": "Ignorer", @@ -842,7 +771,6 @@ "vulnerability_origin": "Origine", "vulnerability_showmore": "Voir plus", "vulnerability_updated": "Vulnérabilité mise à jour", - "warning_context": "Contexte", "warning_element": "Element", "warning_goto_application_variables": "variables de l'application", @@ -863,11 +791,9 @@ "warning_workflow": "{{username}} vient de modifier le workflow.", "warning_build_title": "Le build est en succès mais il y a {{nb}} étape(s) optionnelle(s) en erreur", "warning_updated": "Le warning a été mis à jour", - "wizard_app_clone": "Cloner une application", "wizard_app_empty": "Application vide", "wizard_ssh_key_name": "Nom de la clé ssh", - "worker_model": "Modèle de worker", "worker_model_type": "Type", "worker_model_env": "Variables d'environnement", @@ -941,13 +867,11 @@ "worker_model_private_registry": "Registry privée", "worker_model_username": "Nom d'utilisateur", "worker_model_password": "Mot de passe", - "workflow_modal_change_view_confirm": "Êtes-vous sûr de vouloir perdre vos changements ?", "workflow_save_as_code_title": "Sauvegarde du workflow as code", "workflow_save_as_code_pending": "Envoie des modifications", "workflow_as_code_pr_success": "Une demande de revue a été créée :", "workflow_as_code_no_edit": "Edition impossible via l'interface lorsque le mode as code est actif", - "workflow_node_condition_empty": "Certaines conditions de lancement sont vides", "workflow_node_condition_duplicate": "Vous testez plusieurs fois une même variable", "workflow_app_info_new_wf": "Ce projet est autorisé à utiliser les nouveaux Workflows CDS.", @@ -1113,7 +1037,6 @@ "workflow_logs_pretty_ansi": "Afficher les logs avec l'interpréteur ANSI", "workflow_logs_pretty_html": "Afficher les logs avec l'interpréteur HTML", "workflow_logs_raw": "Afficher les logs bruts", - "workflow_wizard_select_repo_man": "Sélectionner un gestionnaire de dépôt", "workflow_wizard_select_repo": "Sélectionner un dépot", "workflow_wiazrd_select_repo_loading": "Chargement des dépots...", @@ -1121,7 +1044,6 @@ "workflow_wizard_select_repo_man_add": "Ou ajouter un gestionnaire de dépôt", "workflow_wizard_select_template": "Sélectionner un modèle de workflow", "wizard_repo_files": "Fichiers trouvés : ", - "workflow_template_created": "Modèle de workflow créé", "workflow_template_saved": "Modèle de workflow sauvegardé", "workflow_template_deleted": "Modèle de workflow supprimé", @@ -1154,10 +1076,9 @@ "workflow_template_help_edit_from": "Le modèle de workflow est synchronisé à partir d'une URL, vous ne pouvez pas modifier ses informations.", "workflow_template_import_from_url": "Importer depuis une URL", "workflow_template_imported_from_url": "Importé depuis une URL", - "application_repository_help_line_1": "Votre application n'a pas été importée depuis votre code.", "pipeline_repository_help_line_1": "Votre pipeline n'a pas été importé depuis votre code.", "environment_repository_help_line_1": "Votre environnement n'a pas été importé depuis votre code.", "workflow_repository_help_line_1": "Votre workflow n'a pas été importé depuis votre code.", "workflow_repository_help_line_2": "Gérez votre workflow \"as code\" depuis votre gestionnaire de dépôt pour modifier automatiquement celui-ci avec les changements sur vos branches." -} +} \ No newline at end of file