创建pipeline文件接口

This commit is contained in:
moshenglv 2021-01-19 18:11:00 +08:00
parent 0d6ddad013
commit 3946c7116b
3 changed files with 46 additions and 2 deletions

View File

@ -4203,7 +4203,8 @@ http://localhost:3000/api/ci/pipelines/1/content.json?owner=xx&repo=xx | jq
```json
{
"content": "#pipeline \nkind: pipeline\r\nname: maven项目-镜像仓库\r\n\r\nplatform:\r\n os: linux\r\n arch: arm64\nsteps:\n- name: Maven编译\r\n image: arm64v8/maven\r\n commands:\r\n - mvn install\n- name: 编译镜像-推送到仓库\r\n image: plugins/docker\r\n settings:\r\n username: moshenglv\r\n password: RL9UB5P7Jtzukka\r\n repo: docker.io/moshenglv/demo\r\n tags: latest\n",
"sync": 1
"sync": 1,
"sha":"xxxxx"
}
```

View File

@ -2,7 +2,8 @@ class Ci::PipelinesController < Ci::BaseController
before_action :require_login, only: %i[list create]
skip_before_action :connect_to_ci_db
before_action :load_project, only: %i[content]
before_action :load_project, only: %i[content, create_trustie_pipeline]
before_action :load_repository, only: %i[create_trustie_pipeline]
# ======流水线相关接口========== #
def list
@ -84,6 +85,47 @@ class Ci::PipelinesController < Ci::BaseController
return file['sha']
end
end
def create_trustie_pipeline
pipeline = Ci::Pipeline.find(params[:id])
sha = get_pipeline_file_sha(pipeline.file_name)
if sha
pipeline.update!(sync: 1)
return update_trustie_pipeline(sha)
else
interactor = Gitea::CreateFileInteractor.call(current_user.gitea_token, @owner.login, content_params)
if interactor.success?
pipeline.update!(sync: 1)
else
render_error(interactor.error)
end
end
end
def update_trustie_pipeline(sha)
interactor = Gitea::UpdateFileInteractor.call(current_user.gitea_token, params[:owner], params.merge(identifier: @project.identifier,sha: sha))
if interactor.success?
return render_ok("更新成功")
else
return render_error(interactor.error)
end
end
def content_params
{
filepath: params[:filepath],
branch: params[:branch],
new_branch: params[:new_branch],
content: params[:content],
message: params[:message],
committer: {
email: current_user.mail,
name: current_user.login
},
identifier: @project.identifier
}
end
# =========阶段相关接口========= #
def stages
pipeline_id = params[:id]

View File

@ -46,6 +46,7 @@ Rails.application.routes.draw do
get :content
get :stages
post :create_stage
post :create_trustie_pipeline
delete :delete_stage, :path => ":stage_id/delete_stage", to: 'pipelines#delete_stage'
put :update_stage, :path => ":stage_id/update_stage", to: 'pipelines#update_stage'
get :stage_steps, :path => ":stage_id/steps", to: 'pipelines#steps'