diff --git a/docs/img/read_only.png b/docs/img/read_only.png new file mode 100644 index 000000000..85e55a8f5 Binary files /dev/null and b/docs/img/read_only.png differ diff --git a/docs/img/read_only_enable.png b/docs/img/read_only_enable.png new file mode 100644 index 000000000..29ad806d1 Binary files /dev/null and b/docs/img/read_only_enable.png differ diff --git a/docs/user_guide.md b/docs/user_guide.md index a791d8aa3..79034d06c 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -15,6 +15,7 @@ This guide walks you through the fundamentals of using Harbor. You'll learn how * [Manage project creation.](#managing-project-creation) * [Manage self-registration.](#managing-self-registration) * [Manage email settings.](#managing-email-settings) + * [Manage registry read only.](#managing-registry-read-only) * [Pull and push images using Docker client.](#pulling-and-pushing-images-using-docker-client) * [Add description to repositories](#add-description-to-repositories) * [Delete repositories and images.](#deleting-repositories) @@ -225,6 +226,20 @@ You can manage whether a user can sign up for a new account. This option is not You can change Harbor's email settings, the mail server is used to send out responses to users who request to reset their password. ![browse project](img/new_config_email.png) +### Managing registry read only +You can change Harbor's registry read only settings, read only mode will allow 'docker pull' while preventing 'docker push' and the deletion of repository and tag. +![browse project](img/read_only.png) + +If it set to true, deleting repository, tag and pushing image will be disabled. +![browse project](img/read_only_enable.png) + +``` +$ docker push 10.117.169.182/demo/ubuntu:14.04 +The push refers to a repository [10.117.169.182/demo/ubuntu] +0271b8eebde3: Preparing +denied: The system is in read only mode. Any modification is prohibited. +``` + ## Pulling and pushing images using Docker client **NOTE: Harbor only supports Registry V2 API. You need to use Docker client 1.6.0 or higher.** diff --git a/src/ui_ng/lib/package.json b/src/ui_ng/lib/package.json index 3349775b9..b4aefed86 100644 --- a/src/ui_ng/lib/package.json +++ b/src/ui_ng/lib/package.json @@ -1,6 +1,6 @@ { "name": "harbor-ui", - "version": "0.7.1", + "version": "0.7.2", "description": "Harbor shared UI components based on Clarity and Angular4", "scripts": { "start": "ng serve --host 0.0.0.0 --port 4500 --proxy-config proxy.config.json", diff --git a/src/ui_ng/lib/pkg/package.json b/src/ui_ng/lib/pkg/package.json index 1b9a124b5..187bf8bd4 100644 --- a/src/ui_ng/lib/pkg/package.json +++ b/src/ui_ng/lib/pkg/package.json @@ -1,6 +1,6 @@ { "name": "harbor-ui", - "version": "0.7.1", + "version": "0.7.2", "description": "Harbor shared UI components based on Clarity and Angular4", "author": "VMware", "module": "index.js", diff --git a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.css.ts b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.css.ts index b0b8539e5..acb48ccbd 100644 --- a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.css.ts +++ b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.css.ts @@ -36,16 +36,20 @@ export const REPOSITORY_GRIDVIEW_STYLE = ` width: 100px; } - -.card-media-block { - margin-top: 12px; - margin-bottom: 12px; -} - .card-media-block > img { height: 45px; width: 45px; } + +.card-media-title { + overflow: hidden; + height: 24px; +} +.card-media-text { + overflow: hidden; + height: 21px +} + .card-media-description { height: 45px; } diff --git a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.html.ts b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.html.ts index 4d56b3396..409b119e2 100644 --- a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.html.ts +++ b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.html.ts @@ -50,12 +50,10 @@ export const REPOSITORY_GRIDVIEW_TEMPLATE = `
-
+
- - {{ (item.name?.length>29) ? (item.name | slice:0:29) + '...' : (item.name)}} - + {{item.name}}

{{registryUrl}}

diff --git a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.ts b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.ts index 5fd234578..09a6a9af6 100644 --- a/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.ts +++ b/src/ui_ng/lib/src/repository-gridview/repository-gridview.component.ts @@ -32,6 +32,7 @@ export class RepositoryGridviewComponent implements OnChanges, OnInit { @Input() urlPrefix: string; @Input() hasSignedIn: boolean; @Input() hasProjectAdminRole: boolean; + @Input() mode = 'admiral'; @Output() repoClickEvent = new EventEmitter(); @Output() repoProvisionEvent = new EventEmitter(); @Output() addInfoEvent = new EventEmitter(); @@ -87,7 +88,7 @@ export class RepositoryGridviewComponent implements OnChanges, OnInit { } public get withAdmiral(): boolean { - return this.systemInfo ? this.systemInfo.with_admiral : false; + return this.mode === 'admiral' } public get showDBStatusWarning(): boolean { @@ -106,7 +107,7 @@ export class RepositoryGridviewComponent implements OnChanges, OnInit { .then(systemInfo => this.systemInfo = systemInfo) .catch(error => this.errorHandler.error(error)); - if (this.withAdmiral) { + if (this.mode === 'admiral') { this.isCardView = true; } else { this.isCardView = false; diff --git a/src/ui_ng/package.json b/src/ui_ng/package.json index bcc7b1e97..5821269f3 100644 --- a/src/ui_ng/package.json +++ b/src/ui_ng/package.json @@ -30,7 +30,7 @@ "clarity-icons": "0.10.24", "clarity-ui": "0.10.24", "core-js": "^2.4.1", - "harbor-ui": "0.6.83", + "harbor-ui": "0.7.2", "intl": "^1.2.5", "mutationobserver-shim": "^0.3.2", "ngx-cookie": "^1.0.0", diff --git a/src/ui_ng/src/app/repository/repository-page.component.html b/src/ui_ng/src/app/repository/repository-page.component.html index 449b67ca9..a073468a7 100644 --- a/src/ui_ng/src/app/repository/repository-page.component.html +++ b/src/ui_ng/src/app/repository/repository-page.component.html @@ -1,5 +1,5 @@
\ No newline at end of file diff --git a/src/ui_ng/src/app/repository/repository-page.component.ts b/src/ui_ng/src/app/repository/repository-page.component.ts index 5e77fb926..8d6e6ce07 100644 --- a/src/ui_ng/src/app/repository/repository-page.component.ts +++ b/src/ui_ng/src/app/repository/repository-page.component.ts @@ -28,6 +28,7 @@ export class RepositoryPageComponent implements OnInit { hasProjectAdminRole: boolean; hasSignedIn: boolean; projectName: string; + mode = 'standalone'; constructor( private route: ActivatedRoute,