diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md
index 910ec01a49c..52f189f09f0 100644
--- a/.gitlab/issue_templates/Feature Flag Roll Out.md
+++ b/.gitlab/issue_templates/Feature Flag Roll Out.md
@@ -176,4 +176,3 @@ You can either [create a follow-up issue for Feature Flag Cleanup](https://gitla
```
/label ~"feature flag" ~"type::feature" ~"feature::addition"
-/assign DRI
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index a149f31c093..46ababbbca8 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-6b31501b13eae70aea5061edc8273c551ba4c349
+93762b621c011fe570339c1c247d5197c2cfefcc
diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION
index 373aea97570..79f82f6b8e0 100644
--- a/GITLAB_PAGES_VERSION
+++ b/GITLAB_PAGES_VERSION
@@ -1 +1 @@
-1.57.0
+1.58.0
diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js
index e47c3e7bb55..8d46ea76be1 100644
--- a/app/assets/javascripts/api.js
+++ b/app/assets/javascripts/api.js
@@ -93,6 +93,7 @@ const Api = {
groupNotificationSettingsPath: '/api/:version/groups/:id/notification_settings',
notificationSettingsPath: '/api/:version/notification_settings',
deployKeysPath: '/api/:version/deploy_keys',
+ secureFilePath: '/api/:version/projects/:project_id/secure_files/:secure_file_id',
secureFilesPath: '/api/:version/projects/:project_id/secure_files',
dependencyProxyPath: '/api/:version/groups/:id/dependency_proxy/cache',
@@ -978,6 +979,22 @@ const Api = {
return axios.get(url, { params: { per_page: DEFAULT_PER_PAGE, ...options } });
},
+ uploadProjectSecureFile(projectId, fileData) {
+ const url = Api.buildUrl(this.secureFilesPath).replace(':project_id', projectId);
+
+ const headers = { 'Content-Type': 'multipart/form-data' };
+
+ return axios.post(url, fileData, { headers });
+ },
+
+ deleteProjectSecureFile(projectId, secureFileId) {
+ const url = Api.buildUrl(this.secureFilePath)
+ .replace(':project_id', projectId)
+ .replace(':secure_file_id', secureFileId);
+
+ return axios.delete(url);
+ },
+
async updateNotificationSettings(projectId, groupId, data = {}) {
let url = Api.buildUrl(this.notificationSettingsPath);
diff --git a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue
index 1283db5c8eb..dbc4565b19d 100644
--- a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue
+++ b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue
@@ -1,22 +1,48 @@