Currently, we are showing all uploaded images 1:1, which is of course not ideal. To improve performance greatly we will add image resizing to the backend. There are two main areas of image resizing to consider; avatars and content images. The MVC for this implementation will focus on Avatars. Avatars requests consist of approximately 70% of total image requests. There is an identified set of sizes we intend to support which makes the scope of this first MVC very narrow. Content image resizing has many more considerations for size and features. It is entirely possible that we have two separate development efforts with the same goal of increasing performance via image resizing.
Currently, we are showing all uploaded images 1:1, which is of course not ideal. To improve performance greatly, add image resizing to the backend. There are two main areas of image resizing to consider; avatars and content images. The MVC for this implementation focuses on Avatars. Avatars requests consist of approximately 70% of total image requests. There is an identified set of sizes we intend to support which makes the scope of this first MVC very narrow. Content image resizing has many more considerations for size and features. It is entirely possible that we have two separate development efforts with the same goal of increasing performance via image resizing.
## MVC Avatar Resizing
## MVC Avatar Resizing
We will implement a dynamic image resizing solution. This means image should be resized and optimized on the fly so that if we define new targeted sizes later we can add them dynamically. This would mean a huge improvement in performance as some of the measurements suggest that we can save up to 95% of our current load size. Our initial investigations indicate that we have uploaded approximately 1.65 million avatars totaling approximately 80GB in size and averaging approximately 48kb each. Early measurements indicate we can reduce the most common avatar dimensions to between 1-3kb in size, netting us a greater than 90% size reduction. For the MVC we will not consider application level caching and rely purely on HTTP based caches as implemented in CDNs and browsers, but might revisit this decision later on. To easily mitigate performance issues with avatar resizing, especially in the case of self managed, an operations feature flag will be implemented to disable dynamic image resizing.
When implementing a dynamic image resizing solution, images should be resized and optimized on the fly so that if we define new targeted sizes later we can add them dynamically. This would mean a huge improvement in performance as some of the measurements suggest that we can save up to 95% of our current load size. Our initial investigations indicate that we have uploaded approximately 1.65 million avatars totaling approximately 80GB in size and averaging approximately 48kb each. Early measurements indicate we can reduce the most common avatar dimensions to between 1-3kb in size, netting us a greater than 90% size reduction. For the MVC we don't consider application level caching and rely purely on HTTP based caches as implemented in CDNs and browsers, but might revisit this decision later on. To easily mitigate performance issues with avatar resizing, especially in the case of self managed, an operations feature flag is implemented to disable dynamic image resizing.
1. Link your GitLab.com account with your Customers Portal account.
1. Link your GitLab.com account with your Customers Portal account.
Once a plan has been selected, if your account is not
Once a plan has been selected, if your account is not
already linked, you will be prompted to link your account with a
already linked, GitLab prompts you to link your account with a
**Sign in to GitLab.com** button.
**Sign in to GitLab.com** button.
1. Select the namespace from the drop-down list to associate the subscription.
1. Select the namespace from the drop-down list to associate the subscription.
1. Proceed to checkout.
1. Proceed to checkout.
...
@@ -109,9 +109,9 @@ to the **Billing** section of the relevant namespace:
...
@@ -109,9 +109,9 @@ to the **Billing** section of the relevant namespace:
| **Seats in subscription** | If this is a paid plan, represents the number of seats you've paid to support in your group. |
| **Seats in subscription** | If this is a paid plan, represents the number of seats you've paid to support in your group. |
| **Seats currently in use** | Number of active seats currently in use. |
| **Seats currently in use** | Number of active seats currently in use. |
| **Max seats used** | Highest number of seats you've used. If this exceeds the seats in subscription, you may owe an additional fee for the additional users. |
| **Max seats used** | Highest number of seats you've used. If this exceeds the seats in subscription, you may owe an additional fee for the additional users. |
| **Seats owed** | If your maximum seats used exceeds the seats in your subscription, you'll owe an additional fee for the users you've added. |
| **Seats owed** | If your maximum seats used exceeds the seats in your subscription, you owe an additional fee for the users you've added. |
| **Subscription start date** | Date your subscription started. If this is for a Free plan, is the date you transitioned off your group's paid plan. |
| **Subscription start date** | Date your subscription started. If this is for a Free plan, is the date you transitioned off your group's paid plan. |
| **Subscription end date** | Date your current subscription will end. Does not apply to Free plans. |
| **Subscription end date** | Date your current subscription ends. Does not apply to Free plans. |
## Renew your GitLab.com subscription
## Renew your GitLab.com subscription
...
@@ -136,8 +136,8 @@ the contact person who manages your subscription.
...
@@ -136,8 +136,8 @@ the contact person who manages your subscription.
It's important to regularly review your user accounts, because:
It's important to regularly review your user accounts, because:
- A GitLab subscription is based on the number of users. You will pay more than
- A GitLab subscription is based on the number of users. You could pay more than
you should if you renew for too many users, while the renewal will fail if you
you should if you renew for too many users, while the renewal fails if you
attempt to renew a subscription for too few users.
attempt to renew a subscription for too few users.
- Stale user accounts can be a security risk. A regular review helps reduce this risk.
- Stale user accounts can be a security risk. A regular review helps reduce this risk.
...
@@ -172,8 +172,8 @@ previous period), log in to the [Customers Portal](https://customers.gitlab.com/
...
@@ -172,8 +172,8 @@ previous period), log in to the [Customers Portal](https://customers.gitlab.com/
- If you see **Cancel subscription**, your subscription is set to automatically
- If you see **Cancel subscription**, your subscription is set to automatically
renew at the end of the subscription period. Click it to cancel automatic renewal.
renew at the end of the subscription period. Click it to cancel automatic renewal.
With automatic renewal enabled, the subscription will automatically renew on the
With automatic renewal enabled, the subscription automatically renews on the
expiration date and there will be no gap in available service. An invoice will be
expiration date without a gap in available service. An invoice is
generated for the renewal and available for viewing or download in the
generated for the renewal and available for viewing or download in the
[View invoices](https://customers.gitlab.com/receipts) page. If you have difficulty
[View invoices](https://customers.gitlab.com/receipts) page. If you have difficulty
during the renewal process, contact our
during the renewal process, contact our
...
@@ -193,10 +193,10 @@ To add users to a subscription:
...
@@ -193,10 +193,10 @@ To add users to a subscription:
1. Enter the number of additional users.
1. Enter the number of additional users.
1. Select **Proceed to checkout**.
1. Select **Proceed to checkout**.
1. Review the **Subscription Upgrade Detail**. The system lists the total price for all users on the
1. Review the **Subscription Upgrade Detail**. The system lists the total price for all users on the
system and a credit for what you've already paid. You will only be charged for the net change.
system and a credit for what you've already paid. You are only be charged for the net change.
1. Select **Confirm Upgrade**.
1. Select **Confirm Upgrade**.
The following will be emailed to you:
The following is emailed to you:
- A payment receipt. You can also access this information in the Customers Portal under
- A payment receipt. You can also access this information in the Customers Portal under
@@ -268,9 +268,9 @@ main quota. You can find pricing for additional CI/CD minutes in the
...
@@ -268,9 +268,9 @@ main quota. You can find pricing for additional CI/CD minutes in the
To purchase additional minutes for your group on GitLab.com:
To purchase additional minutes for your group on GitLab.com:
1. From your group, go to **Settings > Usage Quotas**.
1. From your group, go to **Settings > Usage Quotas**.
1. Select **Buy additional minutes** and you will be directed to the Customers Portal.
1. Select **Buy additional minutes** and GitLab directs you to the Customers Portal.
1. Locate the subscription card that's linked to your group on GitLab.com, click **Buy more CI minutes**, and complete the details about the transaction.
1. Locate the subscription card that's linked to your group on GitLab.com, click **Buy more CI minutes**, and complete the details about the transaction.
1. Once we have processed your payment, the extra CI minutes will be synced to your group namespace.
1. Once we have processed your payment, the extra CI minutes are synced to your group namespace.
1. To confirm the available CI minutes, go to your group, then **Settings > Usage Quotas**.
1. To confirm the available CI minutes, go to your group, then **Settings > Usage Quotas**.
The **Additional minutes** displayed now includes the purchased additional CI minutes, plus any minutes rolled over from last month.
The **Additional minutes** displayed now includes the purchased additional CI minutes, plus any minutes rolled over from last month.
...
@@ -278,8 +278,8 @@ To purchase additional minutes for your group on GitLab.com:
...
@@ -278,8 +278,8 @@ To purchase additional minutes for your group on GitLab.com:
To purchase additional minutes for your personal namespace:
To purchase additional minutes for your personal namespace:
1. Click your avatar, then go to **Settings > Usage Quotas**.
1. Click your avatar, then go to **Settings > Usage Quotas**.
1. Select **Buy additional minutes** and you will be directed to the Customers Portal.
1. Select **Buy additional minutes** and GitLab redirects you to the Customers Portal.
1. Locate the subscription card that's linked to your personal namespace on GitLab.com, click **Buy more CI minutes**, and complete the details about the transaction. Once we have processed your payment, the extra CI minutes will be synced to your personal namespace.
1. Locate the subscription card that's linked to your personal namespace on GitLab.com, click **Buy more CI minutes**, and complete the details about the transaction. Once we have processed your payment, the extra CI minutes are synced to your personal namespace.
1. To confirm the available CI minutes for your personal projects, click your avatar, then go to **Settings > Usage Quotas**.
1. To confirm the available CI minutes for your personal projects, click your avatar, then go to **Settings > Usage Quotas**.
The **Additional minutes** displayed now includes the purchased additional CI minutes, plus any minutes rolled over from last month.
The **Additional minutes** displayed now includes the purchased additional CI minutes, plus any minutes rolled over from last month.
...
@@ -287,7 +287,7 @@ To purchase additional minutes for your personal namespace:
...
@@ -287,7 +287,7 @@ To purchase additional minutes for your personal namespace:
Be aware that:
Be aware that:
- If you have purchased extra CI minutes before the purchase of a paid plan,
- If you have purchased extra CI minutes before the purchase of a paid plan,
we will calculate a pro-rated charge for your paid plan. That means you may
we calculate a pro-rated charge for your paid plan. That means you may
be charged for less than one year since your subscription was previously
be charged for less than one year since your subscription was previously
created with the extra CI minutes.
created with the extra CI minutes.
- Once the extra CI minutes have been assigned to a Group, they can't be transferred
- Once the extra CI minutes have been assigned to a Group, they can't be transferred
@@ -152,7 +152,7 @@ With a linked GitLab.com account:
...
@@ -152,7 +152,7 @@ With a linked GitLab.com account:
1. Select the desired group from the **This subscription is for** dropdown.
1. Select the desired group from the **This subscription is for** dropdown.
1. Click **Proceed to checkout**.
1. Click **Proceed to checkout**.
Subscription charges are calculated based on the total number of users in a group, including its subgroups and nested projects. If the total number of users exceeds the number of seats in your subscription, you will be charged for the additional users.
Subscription charges are calculated based on the total number of users in a group, including its subgroups and nested projects. If the total number of users exceeds the number of seats in your subscription, your account is charged for the additional users.
@@ -116,8 +116,8 @@ the contact person who manages your subscription.
...
@@ -116,8 +116,8 @@ the contact person who manages your subscription.
It's important to regularly review your user accounts, because:
It's important to regularly review your user accounts, because:
- A GitLab subscription is based on the number of users. You will pay more than
- A GitLab subscription is based on the number of users. You pay more than
you should if you renew for too many users, while the renewal will fail if you
you should if you renew for too many users, while the renewal fail if you
attempt to renew a subscription for too few users.
attempt to renew a subscription for too few users.
- Stale user accounts can be a security risk. A regular review helps reduce this risk.
- Stale user accounts can be a security risk. A regular review helps reduce this risk.
...
@@ -140,10 +140,10 @@ To add users to a subscription:
...
@@ -140,10 +140,10 @@ To add users to a subscription:
1. Select **Add more seats** on the relevant subscription card.
1. Select **Add more seats** on the relevant subscription card.
1. Enter the number of additional users.
1. Enter the number of additional users.
1. Select **Proceed to checkout**.
1. Select **Proceed to checkout**.
1. Review the **Subscription Upgrade Detail**. The system lists the total price for all users on the system and a credit for what you've already paid. You will only be charged for the net change.
1. Review the **Subscription Upgrade Detail**. The system lists the total price for all users on the system and a credit for what you've already paid. You are only be charged for the net change.
1. Select **Confirm Upgrade**.
1. Select **Confirm Upgrade**.
The following will be emailed to you:
The following items are emailed to you:
- A payment receipt. You can also access this information in the Customers Portal under [**View invoices**](https://customers.gitlab.com/receipts).
- A payment receipt. You can also access this information in the Customers Portal under [**View invoices**](https://customers.gitlab.com/receipts).
- A new license. [Upload this license](../../user/admin_area/license.md#uploading-your-license) to your instance to use it.
- A new license. [Upload this license](../../user/admin_area/license.md#uploading-your-license) to your instance to use it.
...
@@ -165,7 +165,7 @@ We recommend following these steps during renewal:
...
@@ -165,7 +165,7 @@ We recommend following these steps during renewal:
1. Enter the number of [users over license](#users-over-license) in the second box for the user overage incurred in your previous subscription term.
1. Enter the number of [users over license](#users-over-license) in the second box for the user overage incurred in your previous subscription term.
TIP: **Tip:**
TIP: **Tip:**
You can find the _users over license_ in your instance's **Admin** dashboard by clicking on the **Admin Area** in the top bar, or going to `/admin`.
You can find the _users over license_ in your instance's **Admin** dashboard by clicking on the **Admin Area** in the top bar, or navigating to `/admin`.
The following table describes details of your admin dashboard and renewal terms:
The following table describes details of your admin dashboard and renewal terms:
...
@@ -174,13 +174,13 @@ We recommend following these steps during renewal:
...
@@ -174,13 +174,13 @@ We recommend following these steps during renewal:
| Users in License | The number of users you've paid for in the current license loaded on the system. This does not include the amount you've paid for `Users over license` during renewal. |
| Users in License | The number of users you've paid for in the current license loaded on the system. This does not include the amount you've paid for `Users over license` during renewal. |
| Active users | The daily count of active users on your system. |
| Active users | The daily count of active users on your system. |
| Maximum users | The highest number of active users on your system during the term of the loaded license. If this number exceeds your users in license count at any point, you incur users over license. |
| Maximum users | The highest number of active users on your system during the term of the loaded license. If this number exceeds your users in license count at any point, you incur users over license. |
| Users over license | The number of users that exceed the `Users in License` for the current license term. Charges for this number of users will be incurred at the next renewal. |
| Users over license | The number of users that exceed the `Users in License` for the current license term. Charges for this number of users are incurred at the next renewal. |
1. Review your renewal details and complete the payment process.
1. Review your renewal details and complete the payment process.
1. A license for the renewal term will be available for download on the [Manage Purchases](https://customers.gitlab.com/subscriptions) page on the relevant subscription card. Select **Copy license to clipboard** or **Download license** to get a copy.
1. A license for the renewal term is available for download on the [Manage Purchases](https://customers.gitlab.com/subscriptions) page on the relevant subscription card. Select **Copy license to clipboard** or **Download license** to get a copy.
1.[Upload](../../user/admin_area/license.md#uploading-your-license) your new license to your instance.
1.[Upload](../../user/admin_area/license.md#uploading-your-license) your new license to your instance.
An invoice will be generated for the renewal and available for viewing or download on the [View invoices](https://customers.gitlab.com/receipts) page. If you have difficulty during the renewal process, contact our [support team](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=360000071293) for assistance.
An invoice is generated for the renewal and available for viewing or download on the [View invoices](https://customers.gitlab.com/receipts) page. If you have difficulty during the renewal process, contact our [support team](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=360000071293) for assistance.
### Seat Link
### Seat Link
...
@@ -197,7 +197,7 @@ Seat Link provides **only** the following information to GitLab:
...
@@ -197,7 +197,7 @@ Seat Link provides **only** the following information to GitLab:
- Historical maximum user count
- Historical maximum user count
- Active users count
- Active users count
For offline or closed network customers, the existing [true-up model](#users-over-license)will be used. Prorated charges are not possible without user count data.
For offline or closed network customers, the existing [true-up model](#users-over-license)is used. Prorated charges are not possible without user count data.
<details>
<details>
<summary>Click here to view example content of a Seat Link POST request.</summary>
<summary>Click here to view example content of a Seat Link POST request.</summary>
...
@@ -306,14 +306,14 @@ When your subscription or trial expires, GitLab does not delete your data, but i
...
@@ -306,14 +306,14 @@ When your subscription or trial expires, GitLab does not delete your data, but i
may become inaccessible, depending on the tier at expiry. Some features may not
may become inaccessible, depending on the tier at expiry. Some features may not
behave as expected if you're not prepared for the expiry. For example,
behave as expected if you're not prepared for the expiry. For example,
[environment specific variables not being passed](https://gitlab.com/gitlab-org/gitlab/-/issues/24759).
[environment specific variables not being passed](https://gitlab.com/gitlab-org/gitlab/-/issues/24759).
If you renew or upgrade, your data will again be accessible.
If you renew or upgrade, your data is again accessible.
For self-managed customers, there is a 14-day grace period when your features
For self-managed customers, there is a 14-day grace period when your features
will continue to work as-is, after which the entire instance will become read
continue to work as-is, after which the entire instance becomes read
only.
only.
However, if you remove the license, you will immediately revert to Core
However, if you remove the license, you immediately revert to Core
features, and the instance will be read / write again.
features, and the instance become read / write again.
- To remove files from stage use reset HEAD where HEAD is the last commit of the current branch. This will unstage the file but maintain the modifications.
- To remove files from stage use reset HEAD where HEAD is the last commit of the current branch. This unstages the file but maintain the modifications.
@@ -26,7 +26,7 @@ To add a project to the dashboard:
...
@@ -26,7 +26,7 @@ To add a project to the dashboard:
1. Search and add one or more projects using the **Search your projects** field.
1. Search and add one or more projects using the **Search your projects** field.
1. Click the **Add projects** button.
1. Click the **Add projects** button.
Once added, the dashboard will display the project's number of active alerts,
Once added, the dashboard displays the project's number of active alerts,
last commit, pipeline status, and when it was last deployed.
last commit, pipeline status, and when it was last deployed.
The Operations and [Environments](../../ci/environments/environments_dashboard.md) dashboards share the same list of projects. Adding or removing a project from one adds or removes the project from the other.
The Operations and [Environments](../../ci/environments/environments_dashboard.md) dashboards share the same list of projects. Adding or removing a project from one adds or removes the project from the other.
...
@@ -35,7 +35,7 @@ The Operations and [Environments](../../ci/environments/environments_dashboard.m
...
@@ -35,7 +35,7 @@ The Operations and [Environments](../../ci/environments/environments_dashboard.m
## Arranging projects on a dashboard
## Arranging projects on a dashboard
You can drag project cards to change their order. The card order is currently only saved to your browser, so will not change the dashboard for other people.
You can drag project cards to change their order. The card order is currently only saved to your browser, so it doesn't change the dashboard for other people.
## Making it the default dashboard when you sign in
## Making it the default dashboard when you sign in
@@ -35,11 +35,11 @@ Among numerous use cases for exporting issues for CSV, we can name a few:
...
@@ -35,11 +35,11 @@ Among numerous use cases for exporting issues for CSV, we can name a few:
## Choosing which issues to include
## Choosing which issues to include
After selecting a project, from the issues page you can narrow down which issues to export using the search bar, along with the All/Open/Closed tabs. All issues returned will be exported, including those not shown on the first page.
After selecting a project, from the issues page you can narrow down which issues to export using the search bar, along with the All/Open/Closed tabs. All issues returned are exported, including those not shown on the first page.
@@ -53,7 +53,7 @@ Exported issues are always sorted by `Issue ID`.
...
@@ -53,7 +53,7 @@ Exported issues are always sorted by `Issue ID`.
>
>
> **Weight** and **Locked** columns were [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/5300) in GitLab Starter 10.8.
> **Weight** and **Locked** columns were [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/5300) in GitLab Starter 10.8.
Data will be encoded with a comma as the column delimiter, with `"` used to quote fields if needed, and newlines to separate rows. The first row will be the headers, which are listed in the following table along with a description of the values:
Data wis encoded with a comma as the column delimiter, with `"` used to quote fields if needed, and newlines to separate rows. The first row contains the headers, which are listed in the following table along with a description of the values:
| Column | Description |
| Column | Description |
|---------|-------------|
|---------|-------------|
...
@@ -82,4 +82,4 @@ Data will be encoded with a comma as the column delimiter, with `"` used to quot
...
@@ -82,4 +82,4 @@ Data will be encoded with a comma as the column delimiter, with `"` used to quot
## Limitations
## Limitations
- Export Issues to CSV is not available at the Group's Issues List.
- Export Issues to CSV is not available at the Group's Issues List.
- As the issues will be sent as an email attachment, there is a limit on how much data can be exported. Currently this limit is 15MB to ensure successful delivery across a range of email providers. If this limit is reached we suggest narrowing the search before export, perhaps by exporting open and closed issues separately.
- As the issues are sent as an email attachment, there is a limit on how much data can be exported. Currently this limit is 15MB to ensure successful delivery across a range of email providers. If this limit is reached we suggest narrowing the search before export, perhaps by exporting open and closed issues separately.