giseldo/neodataset huggingface dataset:
Exclude VCR cassettes from Danger bot

### Problem
When Danger bot does it's evaluation of changes in an MR, VCR cassette changes are factored into the warning about if a MR is too large.  This can totally skew the perception of the MR being too large and can make the warning useless for any MR that includes VCR changes.

![Screen_Shot_2019-11-12_at_1.42.38_PM](/uploads/592c95b25c9f8813a72a6353f8c0364b/Screen_Shot_2019-11-12_at_1.42.38_PM.png)

### Proposal
We should update Danger bot to exclude VCR cassettes from this warning.  VCR cassette changes aren't generally a concern as we can/should re-record cassettes commonly.  These can largely be ignored by the reviewer.

### Result
Improved stats regarding MR size.

### Next steps (if any)

### How will we measure success?

Story points: 1.0
Redirect to `/subscriptions` on success instead of showing only the updated subscription

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Currently when you update a subscription you’re taken to a page that looks the same as the index, but some of your subscriptions go away.. like, toggle the auto-renew and boom, all your subscriptions go away except the one that you just clicked a toggle button on.

This is done to have the user focus in on the subscription that changed, but the `this page look an awful lot like where I was, where did my other subscriptions go?` feeling is hard to shake.

_Note that this is a dev account. Most users won't have this many subscriptions_

![page-redirect](/uploads/ba6726a886f9005566dbbd3c40a1c619/page-redirect.gif)

### Proposed solution

Redirect to `/subscriptions` instead. It's a fairly small change.

Story points: 1.0
Danger bot is inconsistent

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem
Danger bot did not fire for https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/652

Instead outputting

```
$ danger --fail-on-errors=true
Not a GitLabCI Pull Request - skipping `danger` run.

```

https://gitlab.com/gitlab-org/customers-gitlab-com/-/jobs/348252409

### Result
Danger bot should be consistent.

Story points: 1.0
Use docker image for running CI stages

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Current stages for CI pipelines take ~10 minutes to finish, most of that time will be spent on installing dependencies.

### Proposal

Add stage for building a docker image as a base image for running all other stages, so the stages won't need to install any dependencies and can start the actual job immediately.

### Result

- Faster CI run time => faster feedback on the MR.
- A step toward auto devops.

### Next steps (if any)

* [ ] Evaluate the proposal.
* [ ] Schedule the issue.


### How will we measure success?

With less time to get a feedback from the pipelines.

### Relevant links

- https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
- https://blog.daftcode.pl/make-your-ci-pipeline-fast-and-awesome-with-gitlab-container-registry-41ef244d1ce6
- https://docs.gitlab.com/ee/user/packages/container_registry/index.html
- https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#using-the-gitlab-container-registry

Story points: 2.0
[REST Update] Add ability to update Iron Bank records

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem
The iron bank gem does not provide an out of box solution to update records.

For e.g. previously with the `active_zuora` gem, an account could be updated as follows:

```ruby
account = customer.zuora_account
account.update_attributes(name: 'new_name')
```

This, is however, not possible with the Iron bank gem.

It provides `update`, `delete` and similar other CRUD classes to perform these operations: https://github.com/zendesk/iron_bank/tree/master/lib/iron_bank/actions

### Proposal
To start with, add an `update` method to update records, that would internally invoke Iron Bank's `update` api.

### Result
1. Iron Bank records can be easily updated using AR-like commands.
2. `errors` on failure should be available in `object.errors`

### Next steps (if any)

### How will we measure success?

Story points: 2.0
Huge gap between navbar and flash messages container

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "bug" label in relevant trackers:

- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug
- https://gitlab.com/gitlab-org/customers-gitlab-com/issues?label_name%5B%5D=bug

and verify the issue you're about to submit isn't a duplicate.

Do not include confidential information! 
--->

### Summary

After upgrade to BS4 we have a huge gap now between the navigation bar and the container for flash messages. 

### Steps to reproduce

1. Enable Pajamas via Rails console: `Feature.enable(:pajamas_design_system)`
2. Sign out from the customer portal
3. Navigate to any page that requires authentication, for example, `/payment_methods`
4. Scroll to the top to see the gap.

### What is the current *bug* behavior?

Huge gap between navbar and flash messages container

### What is the expected *correct* behavior?

No gap between navbar and flash messages container

### Relevant logs and/or screenshots

![image](/uploads/bcac4e59f81a2ff50716d7e28404db7b/image.png)

### Workarounds

(Ways to get around the issue)

### Reported examples

1. 
1. 
1. 

<!---
Please add both severity and priority level according to: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html#severity-labels
--->

Story points: 1.0
Inconsistency between forms on same page

### Summary

There are two form on a page and they are behaving differently when sending them with a blank required field.

### Steps to reproduce

Go to `customers/edit` and send the "Account Details" form with a blank first name. Then send the "Change Password" form with a  blank current password.

### What is the current *bug* behavior?

The "Account Details" form shows a html5 require validation for the blank field and therefore the form can't be sent to the server.
The "Change Password" form is sent directly to the server for validations.

### What is the expected *correct* behavior?

Both forms should respond with a html5 require validation.

@tipyn @jackib 

Story points: 1.0
Active navigation item is lost on send empty "Change Password" form

### Summary

No active navigation item is diplayed after sending an empty "Change Password" form.

### Steps to reproduce

Go to `customers/edit` and send a blank "Change Password" form.

### What is the current *bug* behavior?

The active navigation item (My Account) is lost. 

### What is the expected *correct* behavior?

The navigation item "My Account" should still be active.

### Relevant logs and/or screenshots

When calling the page:
![Active navigation item](/uploads/c58fa47e36faae496a3cc4871ac7b3b4/Screenshot_2019-11-04_at_12.42.29_PM.png)

After sending the form:
![No active navigation item](/uploads/02e20354606697c5c7f614321f0557b8/Screenshot_2019-11-04_at_12.42.20_PM.png)

@tipyn @jackib 

Story points: 1.0
Pajamas Update: Portal "Plan" Page

| Main Page | Modal popup (multi-choice) |
| ------ | ------ |
| ![Buy_Products_-_v2_-1](/uploads/b7cd3bac9390cd8b1f96bc8eae77254b/Buy_Products_-_v2_-1.png) | ![Buy_Products_-_v2_-2](/uploads/4fca61938a90458cfe992ecc0ea36b96/Buy_Products_-_v2_-2.png) | 

### Design Specs

https://gitlab-org.gitlab.io/gitlab-design/hosted/tim/&1886-customers-portal-pages-redesigns/plan-page

Story points: 5.0
Don't generate valid Gitlab licenses through https://customers.stg.gitlab.com

**[HackerOne report #726223](https://hackerone.com/reports/726223)** by `rpadovani` on 2019-10-31, assigned to @cmaxim:

### Summary

I can create valid Gitlab licenses through https://customers.stg.gitlab.com

### Steps to reproduce

1. Register as standard user to `https://customers.stg.gitlab.com`  
2. Buy a license for Gitlab Ultimate  
3. When asked for a credit card, insert one of these:  https://stripe.com/docs/testing#cards  
4. You now have a license and a invoice from Gitlab (that could be used also for tax frauds)  
5. Insert the license in a instance  
6. Free Gitlab Ultimate!

### Impact

Free Gitlab Ultimate

### What is the current *bug* behavior?

Staging is accessible and generates valid licenses

### What is the expected *correct* behavior?

Staging shouldn't be accessible

### Relevant logs and/or screenshots

Attached the license and the invoice

## Impact

Free Gitlab Ultimate, valid invoices when nothing was paid

## Attachments

**Warning:** Attachments received through HackerOne, please exercise caution!

* [Test.gitlab-license](https://[edited.license]](https://h1.sec.gitlab.net/a/[edited.pdf])
* [Screenshot_[edited]_License___Admin_Area.png](https://h1.sec.gitlab.net/a/[edited].png)

Story points: 1.0
Using Subscription name instead of Zuora Subscription ID breaks reassociation of some accounts

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

in #551 we deprecated using the Zuora Subscription ID, but for accounts that have a manually assigned subscription name (e.g. "Corporation- 33 gitlab.com Gold") attempting to associate (or re-associate) the subscription results in a 404.

An example is in https://customers.gitlab.com/admin/customer/125776/ - if you impersonate this customer and attempt to re-associate the subscription, you'll get taken to 
`https://customers.gitlab.com/subscriptions/redacted-subscription--name/edit?transaction=change_gitlab_group`


### Proposal

### Result

### Next steps (if any)

### How will we measure success?

Story points: 2.0
Add Tax ID/VAT field on checkout in customer portal

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem: 
We are missing `VAT ID` and `Company Country of Establishment` on EU orders and we don't ask for Tax ID certificates

### Potential Workflow
* Current Customers
  * Checkbox: Field: I am Tax or VAT exempt (true/false), if marked true, then show the next field values:
    * Show them their ID on file: then they select:
        - "Use ID on file" or "My ID has changed", if they choose "I have a new ID" then show a dependent field:
            * Company Country of Origin: If EU country, we show field "VAT ID" (Account.taxinfo.VATid (objectified)) and we run a check on their VAT ID; if anything else, we show field "Tax ID" (Account.taxinfo.TaxExemptCertificateID (objectified))
* New Customers
  * Checkbox: Field: I have a Tax or VAT ID (true/false), if marked true, then show:
    * Company Country of Origin: If EU country, we show field "VAT ID" (Account.taxinfo.VATid (objectified)) and we run a check on their VAT ID; if anything else, we show field "Tax ID" (Account.taxinfo.TaxExemptCertificateID (objectified))

### Result:
GitLab has the proper documentation to comply with tax regulation.

### Next steps (if any)
* [x]  signoff from salesops and financeops that we can submit directly to these fields; address any risk of overwriting existing data
* [x]  get field API names for Zuora to submit order
   - `Account.taxinfo.VATid (objectified)` according to [Zuora SOAP API documentation](https://knowledgecenter.zuora.com/DC_Developers/G_SOAP_API/E1_SOAP_API_Object_Reference/Account) and [other Zuora API documentation](https://www.zuora.com/developer/api-reference/#operation/Object_PUTAccount)
   - Jamie opened a support ticket to request access to the Zuora API field since it's required for this field specifically
* [x]  get API field name for Company Tax ID field Account.taxinfo.TaxExemptCertificateID (objectified)
* [x]  @annapiaseczna @igroenewegenmackintosh provide list of countries that use VAT ID
```
Austria, Italy, Belgium, Latvia, Bulgaria, Lithuania, Croatia, Luxembourg, Cyprus, Malta, Czechia, Netherlands, Denmark, Poland, Estonia,	Portugal, Finland, Romania, France, Slovakia, Germany, Slovenia, Greece, Spain, Hungary, Sweden, Ireland, United Kingdom
```

### How will we measure success?
Reduction of VAT and Tax ID fields with no value

cc @igroenewegenmackintosh @annapiaseczna

Story points: 3.0
Follow-up from "Register customers via API"

Classes should use `module` instead of adding the module in front of the classname.
E.g. [`OmniAuthController`](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/app%2Fcontrollers%2Fcustomers%2Fomniauth_callbacks_controller.rb#L1)

should be

```ruby
module Customers
 class OmniauthCallbacksController
end
```


The following discussion from !567 should be addressed:

- [ ] @tyleramos started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/567#note_238065910):  (+3 comments)

    > Sort of nitpicky, but you might want to break this out like the following:
    > ```
    > module Api
    >   class CustomersController < ActionController::Base
    > ```
    > 
    > I don't think we have this Rubocop setting activated just yet, but [here's a ruby style guide](https://rubystyle.guide/#namespace-definition) describing the problems that sometimes arise without the explicit nesting.

Story points: 1.0
Append Add-on Users to Total User Count on Billing Page for Gitlab.com Subscriptions

### Summary

Sales is conducting an initiative to contact accounts who have exceeded their users/seats and attempt to collect on the overage. Note, this is happening mid-cycle and not at the renewal period.

#### PROBLEM: Affecting GitLab.com Accounts

- When the add-on users are booked, they are coming into the customers portal as a separate line item and not appending to the total user count on the billing page of their namespace on GitLab.com.
- GitLab.com is getting updated with the new add-on users instead of the total of the existing + add-on.
- This is not a blocker for the user, but displays incorrect information on the billing page (i.e. their original user count) thereby causing user confusion and a poor experience.
- We haven’t found a work-around for this.

Story points: 3.0
Company field is not a required html5 field

### Summary

Company field is not a html5 requirement when filling out the sign up form but after submitting a rails validation is shown that it can't be blank.

### Steps to reproduce
When signing up for a new account (Starter tier) you have to fill out the registration form. Fill out the required fields before company and then hit send. No validation html5 validation is shown for the company field. So leave it blank and fill out the rest of the form. After submit the valid form you come to a new page and then a validation with "company can't be blank" is shown.

### What is the current *bug* behavior?

Othere fields show a html5 require validation but not the company field - missing consistency.

### What is the expected *correct* behavior?

Show a html5 require validation.

### Relevant logs and/or screenshots

![Screenshot_2019-10-31_at_8.36.30_AM](/uploads/5542e16a76d9c5c8297c9a289cda1a95/Screenshot_2019-10-31_at_8.36.30_AM.png)

![Screenshot_2019-10-31_at_8.36.04_AM](/uploads/7db8ef9e78f0fd2d986c04551093d2e9/Screenshot_2019-10-31_at_8.36.04_AM.png)

<!---
Please add both severity and priority level according to: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html#severity-labels
--->

@tipyn @jackib 

Story points: 1.0
Rubyzip's dependency issue with selenium-webdriver

### Summary

Bundle update doesn't work due to a dependency issue with rubyzip. The Gemfile speficies rubyzip ~> 2.0 and selenium-webdriver requires ~> 1.2, >= 1.2.2.

### Steps to reproduce

`bundle update ANY_GEMNAME`

### What is the current *bug* behavior?

bundle update can't be run because it throws an error

### What is the expected *correct* behavior?

bundle update should be executable.

Story points: 2.0
Update gems to latest versions

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

With ruby upgrade to 2.6, few gems were found to be upgradable: 
https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/587#note_236182236

Updating gems would require thorough testing to ensure nothing breaks.

Diff patch: [gem-version-diff.patch](/uploads/f1d4e37a58a396198315b4406d3fa9ed/gem-version-diff.patch)

### Proposal

### Result

### Next steps (if any)

### How will we measure success?

Story points: 2.0
Remove monkey patch spec file on upgrading Rails to latest

The following discussion from !587 should be addressed:

- [ ] @asubramanian1 started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/587#note_235432148):  (+2 comments)

    > We could maybe add a follow-up issue to remove this file, once the [Rails version is updated](https://gitlab.com/gitlab-org/customers-gitlab-com/issues/498).

Story points: 1.0
Automate download of bulk invoice

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Following discussions on https://gitlab.com/gitlab-org/customers-gitlab-com/issues/504#note_236278173,

  1.  Add a cron job to download invoices on the 3rd of every month for the entity `GmbH` and send it to apiaseczna@gitlab.com, with CC to [wilson@gitlab.com](mailto:wilson@gitlab.com).

### Proposal

### Result

This task would avoid any intervention from engineering team to download and send invoices.

### Next steps (if any)

* [x]  @annapiaseczna Could you provide the recipient to whom the invoices should be sent to?

### How will we measure success?

Story points: 1.0
90 day password expiration for for customers.gitlab.com team member accounts

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

For PCI compliance purposes, we need to have a 90 password expiration for `customers.gitlab.com` on all team member accounts. **This shouldn't be applied to customer user accounts, only GitLab team member accounts.** This would remediate a [compliance gap](https://gitlab.com/gitlab-com/gl-security/compliance/compliance/issues/498) we found during our gap analysis project.

Please see the exchange below [this comment](https://gitlab.com/gitlab-com/gl-security/compliance/compliance/issues/498#note_219082240) for more context.

### Proposal

Add 90 day password experiation for all GitLab team member accounts on or that provide access to the data of `customers.gitlab.com` (e.g., accounts on the app itself, database accounts, etc). After those 90 days, the password cannot be used to log in and must be changed.

### Result

`customers.gitlab.com` has a 90 day password expiration for all GitLab team member accounts on or that provide access to the data of `customers.gitlab.com` (e.g., accounts on the app itself, database accounts, etc)

Story points: 2.0
Investigate apis that use GL.com admin token instead of user token

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem
Couple of api calls made from subscription portal to GL.com use the admin token. 

For e.g. Updating of namespace could utilize `user` token, instead of admin token since its a user specific action: https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/app/services/gitlab/namespace/update_service.rb#L26

### Proposal
Investigate and fix apis that can use GL user token instead of admin token.

### Result

### Next steps (if any)

### How will we measure success?

Story points: 3.0