gitlab-org--gitlab-foss/app/serializers
Shinya Maeda b9a9e69d39 Squashed commit of the following:
commit 1095f6636db1c9bcd200c9c59e4b14ae70c0884b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 14:25:45 2018 +0900

    Fix spec

commit dd3e46ee15712b046ca83600c9f2694fbdc3a5f8
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 14:14:59 2018 +0900

    Fix static analysis

commit 32f46f402b53fc23770224f5c890bd4acfc39e60
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 11:34:05 2018 +0900

    Add spec for preventing N+1 querires. Add spec for merge request controller.

commit 7e12ef867b3e20bf1d35421a3b82350e9c673962
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 10:22:45 2018 +0900

    Add spec for test reports comparer serializer

commit 6d69bb297afc90386bb847cf0fd1e75fc377e9d7
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 09:27:41 2018 +0900

    Remove unnecessary comments

commit aca76ded6abf65d1f54008f9865ec7055f51300c
Merge: f6cf7c1c98b 9812e5dd7c
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 09:26:57 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit f6cf7c1c98b29c6a9a2e59d0a438bf77972e0aee
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Aug 2 09:23:08 2018 +0900

    Use iid for making unique key for reactive cache

commit 642a3d9215fc004ceaa431648a44d3a7671fb9e3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 23:39:14 2018 +0900

    Mkae reactive cache key unique per pipeline ids

commit 24ca34107837375364560e83b37fce8e4f7edfbd
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 21:41:30 2018 +0900

    Add spec for entity

commit e761d9d3e9a56d878d6e71a636a29f0f13c9c78f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 19:32:41 2018 +0900

    Add spec for merge request model

commit 3c740854b9ac348993c715f24eeb5e6487d57ad6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 16:19:01 2018 +0900

    Add spec for build and pipeline model

commit 027a553badc080195f3b3aceba931407939e1535
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 15:17:00 2018 +0900

    Add specs for test reports comparer

commit f4a63066e5517605c40b526b3085097e885c6051
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 14:00:46 2018 +0900

    Add test_reports_spec

commit 18a285a52b064dc894200925af15a2b1f02e7840
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 11:16:57 2018 +0900

    Simpolify reactive cache usage. Improve code structure.

commit faaa41e5bcf4c6c76881957e96e4b3b278aee460
Merge: 9a6b3b7f0ab d799da4a18e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 09:19:26 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 9a6b3b7f0ab32a70f63b1fe81d78616e6f88f4cc
Merge: 04cd0ed8812 b690c268c2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 09:18:48 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit d799da4a18ec9f0d91dd48ac1c9abc3283235b99
Merge: dc874468571 04cd0ed8812
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Tue Jul 31 17:49:53 2018 +0100

    Merge branch 'artifact-format-v2-with-parser' of https://gitlab.com/gitlab-org/gitlab-ce into artifact-format-v2-with-parser

    * 'artifact-format-v2-with-parser' of https://gitlab.com/gitlab-org/gitlab-ce:
      Remove debuggable fixtures

commit dc8744685713a8ab9d3eb7987c7fcf898e8dcd38
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Tue Jul 31 17:49:35 2018 +0100

    Removes frontend code

commit 04cd0ed8812f5fdd9cd00540155ec01edc0b42de
Merge: 8003540237e 0295e478b22
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 00:13:58 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 8003540237e9070a93ccd1b89a65b1f45ba8234d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Aug 1 00:13:39 2018 +0900

    Remove debuggable fixtures

commit 0295e478b2267c10186c7b9aa9e3bb1bfa8a1b43
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Tue Jul 31 16:12:25 2018 +0100

    Fixes broken tests

commit 4fa50ca7fc1e3ab5d0995dc85245fc8ba013d2ce
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Tue Jul 31 10:59:44 2018 +0100

    Ports EE css into CE code base
    Creates unit tests

    Creates code block component

commit 2dc45f714f449bd71b03f34585724e46be9bee4f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 18:20:22 2018 +0900

    Remove unnecessary parameters from build#each_test_report

commit 89d7398ae71bff15a397c2b10eb5134e2bc43a7b
Merge: 08d6ac5262c 02e35a0d26
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 18:09:49 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit 08d6ac5262c14f1d67d74238927bcaf62d8efab5
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 17:57:02 2018 +0900

    Add spec for test case and test suite

commit 9d6da7c97fea6ce2086225500a04663b10339b6b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 16:35:31 2018 +0900

    Add spec for gzip parser and adapter

commit 4c29079c4aeda0bde7c3ce6d9f1d5d5da9ffd657
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 11:41:33 2018 +0900

    Include status at each level. Refactor back to success/failed

commit 3fa747db101f4d421e539b7c591a85db02011d2e
Merge: 4f7e9d54d52 69c87c3d1f0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 10:18:51 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 4f7e9d54d5298bfb1566028f59009cc2b665ae3b
Merge: 18ed332734a 7758fdf1ad
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 31 10:18:18 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit 69c87c3d1f0559ea21bb8b5f1005685db59aded5
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Mon Jul 30 15:58:11 2018 +0100

    Removes create issue handlers
    Hides grey block when no issues are present

commit 18ed332734a2c95a9f93bc7d173c8b76d22867fe
Merge: 05944862e9c 2c15e359c38
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 23:14:44 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 05944862e9ce9983ed258b7795166faffb38522a
Merge: c1bef2ee559 3d2dad449d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 23:13:50 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit 2c15e359c38d208cab16852489d9317657bd805c
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Mon Jul 30 11:14:48 2018 +0100

     Patched a weird status issue

commit 5a76071b91aa40de9dc1b0e5537fa3f8f081fdcd
Merge: 6a2c69f8ab6 c1bef2ee559
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Mon Jul 30 11:14:06 2018 +0100

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit c1bef2ee559c0f3c263daf2d3e92a4485cdd010e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 17:23:58 2018 +0900

    Add fixtures to check the behavior with multi patterns

commit b2ccce593b578c434febdd2f945a665a6652fd4e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 10:40:37 2018 +0900

    Fix a fixture in spec - merge request widget json

commit 29dfd45264427f6bd064aa62401c6be5ac4c4e14
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 10:35:34 2018 +0900

    Update old changes

commit c26dae72f28939e1ee2e884c260278035fa0549a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 10:26:39 2018 +0900

    Fix static analysis

commit e9ad9df37d09330c1a6d23ac46d0923cb24fe636
Merge: fda5e9bd986 1f9992625e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 30 10:20:16 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit 6a2c69f8ab643960e434af867e8b61399b1dafc2
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Fri Jul 27 15:54:02 2018 +0100

    Auto fixes with eslint

commit c7b9fa252b9726903ef808d1bf02441527f88c7b
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Fri Jul 27 15:53:30 2018 +0100

    Updates the textGenerator for reports

commit fda5e9bd9864be7fba8f576bd9af4e58a5929e98
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 27 16:20:15 2018 +0900

    Remove unnecessary schema change

commit 06e0967508e1fea5934bd68c490f505d8f7233d0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 27 16:06:28 2018 +0900

    Fix schema version

commit e63cc95742eac125691f8d3aac2820bbcc6113ec
Merge: 8a734c3d933 8b3c7f57b2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 27 16:03:31 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit 0d613f03203a84f91efaec9b6e0244cfc6603457
Author: Sam Beckham <sbeckham@gitlab.com>
Date:   Thu Jul 26 16:24:48 2018 +0000

    Full list of vulnerabilities

commit 8a734c3d9333415707fe73a233278d2dbafabc38
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Thu Jul 26 17:20:07 2018 +0100

    Cherry picks an update to the report component and updates the codebase to use it

commit e16a2ddd47066521220c045daf3a55367d008edf
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 18:00:39 2018 +0100

    Adds the 'new' badge to the issues list

commit ac9bc3a293724c6729a2b58273344dc920fffa8b
Merge: f013f0219cf 44904f34593
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 16:44:25 2018 +0100

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit f013f0219cf2ac52fc4a7c8937c1cadd750adeae
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 15:47:30 2018 +0100

    Fixes some missed conflicts

commit 44904f34593d62d3b68a57e54118b6c31b050a6f
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 15:47:30 2018 +0100

    Fixes a missed conflict

commit 735a49154075b4824421c4c1180ef6428b6fe64c
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 15:44:04 2018 +0100

    Fixes some merge conflicts

commit ef5c9a5853b3cff1f5a952e5a87593c187834019
Merge: 181f98f695e 8f3b9c0d313
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 15:31:48 2018 +0100

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 181f98f695eac05ffc6b5d57d665f4bd52d43f21
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 15:27:48 2018 +0100

    Adds a proper check for loading errors

commit 24b108d4b15c87c1dd530ccd9bf7ed1b1a44faa3
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 14:09:57 2018 +0100

    Adds a fake conditional for checking if we should render the modal footer or not

commit 5f4b682afae624feebeea101cae2517f673467f4
Author: samdbeckham <sbeckham@gitlab.com>
Date:   Wed Jul 25 13:43:24 2018 +0100

    Adds a patch to get this working again after the rebase

commit 0252d861556cf66098e7e589f5889887b7b0309b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 25 16:25:05 2018 +0900

    Skip comparison if head and base pipelines are the same as before

commit b8207fae37cd035010e66c158211913f41790bf8
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 25 16:24:05 2018 +0900

    Fix N+1 problem at collect_test_reports

commit 297e51fed1ad30be6207f244e97a678c9275aa76
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 21:00:03 2018 +0900

    Implement reactive cache worker

commit b20da289fb6c45466bf47a09ac6c33625806936b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 16:58:56 2018 +0900

    Refactoring test_results to test_reports

commit f1cef58465f5936a74c0cb23167b5d4a51ecc46c
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 14:12:58 2018 +0900

    Revert archive_metadata refactoring

commit c2387c534c11a29cc0db815cb3219dd80bb6ed03
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 22:57:01 2018 +0100

    Adds action to handle the create issue button
    Moves component to inside mr widget
    Fixes eslint errors

commit 761aec1dc095c30e1eee0bf2a3ea7eceb19a5e06
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 18:57:10 2018 +0100

    Removes mocked data

commit da01a9748c764e2d1ca4cc669417ef14ff11a195
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 18:54:06 2018 +0100

    Render grouped test report in MR widget

commit 8a8678f58e86f29a69d052978b3b76fcb9baeacc
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 13:15:35 2018 +0100

    Follow up after review: Clear Vuex actions and mutations

commit d84e1b0be459b314f4fb706e381f1c36235135e8
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 09:37:45 2018 +0100

    Moves payload to the correct action

commit 1a8490ffe81f1e8a9173a50a3c0a8b017e968697
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 16:10:25 2018 +0100

    Adds payload to the fetchReports success spec

commit b38389fa0e576d76f90075cb5a606260dd87cf95
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 14:48:54 2018 +0100

    Updates documentation and test mock endpoint

commit c6a1a39efefb7b8e938ec679c57ca6810a8f8919
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 12:49:44 2018 +0100

    Adds Vuex store for reports section in MR widget

commit f0077c4708c246eedb6f9259c3b3b23c29755b26
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 12:44:16 2018 +0100

    Initial structure for reports app

commit a76c54543e945b4f1644a4db151e639e2a000e0e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 19:06:46 2018 +0900

    Check pipeline status at has_test_results?

commit 10475fab64d2fc13e52edf8bef83031e44232f15
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:19:46 2018 +0900

    Specify DOWNTIME=false

commit 6332df56993b28ce57713571df36ff03473993e7
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:14:44 2018 +0900

    Wrap long lines

commit f507f19e42941b2f01b4dda62b94e5b6ae546135
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:05:31 2018 +0900

    Checking filr_format and file_type paring

commit 364242eebe35946d2d2ff6face693af8da2a953f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 16:07:21 2018 +0900

    Fix build presenter spec

commit 5149115670f2afc57820cb564794d2452290763b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 16:02:09 2018 +0900

    Erase test reports at the proper timing

commit cb70174fe7624a3dc128ab085e6ae529563b7f49
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 15:46:56 2018 +0900

    Make GENERAL_ARCHIVE_FILE_TYPE as a single entry

commit dceb8b58a13396d9181be0e8be49a0b35509c039
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 15:42:16 2018 +0900

    Implement config artifact presenter

commit d492832d30408d5f475910c8ccdd6f34108e7c61
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 14:27:54 2018 +0900

    Introduce ARCHIVE_LEGACY_TRACES_MIGRATION_VERSION check

commit f432fd975a0b2428c89dc0274be307bdf6b68438
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 21:00:40 2018 +0900

    Revert unnecessary change

commit f83de3fe4ba42a0e64dcdcb950aecdd632f94076
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:57:03 2018 +0900

    Remove scattering around erase_test_reports!

commit 575be347d8d29c8216b7ee5b449ac8adc5cbd349
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:53:00 2018 +0900

    Rever archive_metadata refactoring  (For simplifying)

commit f04fc5766ae45b3b7941c4447fd3d32a5e262245
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:45:19 2018 +0900

    Use array_of_strings_or_string in Command

commit 1511f7052aeb8f32b533fe56034f54ead3139f79
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:40:06 2018 +0900

    Fix spec

commit 78b3ba38298c6e7ca838e34bd0a3897a9ce78568
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:27:11 2018 +0900

    Fix presenter spec

commit ab583ce712314648900033de48b3a1e6a13f08d0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:23:41 2018 +0900

    Fix artifact migratable

commit d432f1665b8146527721b667d4b6abe61d8c57f6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:15:41 2018 +0900

    Increment migration version to use `file_format` when archiving traces

commit 7523168a1e9612e17c55d0b42d2d9c664d0d942d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 17:57:15 2018 +0900

    Impolement job_artifact.test_reports method

commit 55b9340539ac1ac69490d8c0e58a81c157964799
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 16:49:27 2018 +0900

    Fix erase method

commit b98c907a9cc5c165cf26b0297914ae57d202f715
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 16:28:00 2018 +0900

    Fix spec

commit 49d196a0d4964b23027bd429092c78ab05d28658
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 15:31:42 2018 +0900

    Add java ant Junit test report in fixtures

commit 292e10b98628abc554c53a8d7b0345edcb5dbd66
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 20:59:01 2018 +0900

    Add fixtures which can export all kind of reports (new/resolved/exisiting)

commit b59d68c9b9a39aeb4a25f19e27b2495c7e2b2f85
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Wed Jul 18 12:17:49 2018 +0200

    Add summary to test results json

commit 67137d6159e194290c2bb2fb2c25e6373453596d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 16:43:20 2018 +0900

    Fix fixtures for development

commit 2184358cfcc93394ed2bb5d6ace09101439596ea
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 15:43:28 2018 +0900

    Evaluate artifact_format

commit 618e023055f229d908c68213f456a7797156f7cf
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Tue Jul 17 18:00:59 2018 +0200

    Expose all data with API on Merge Request

commit 0b5f9ff76f87b5d3b9c2eebd4ab8c69de5d4c201
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Tue Jul 17 17:18:19 2018 +0200

    Improve code of JUnit reports

commit 5fa026db0baa32cd063fbff3ec2532144f089236
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 20:13:31 2018 +0900

    Refactoring suites. Adding gurad clause at collect_test_results

commit b4dcab7b7f89ed0bf3103a5b0022343620a0dec4
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 19:52:01 2018 +0900

    Implement comprare failed tests

commit 4f3c9f152e432c7d7fd18e21988a9c371cac4617
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 18:50:03 2018 +0900

    Objectize each test suit and summary

commit 1477d1a09bb3ba1fc6d82241f1414708a93a269d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 17:55:34 2018 +0900

    Pass build.group_name as testsuite name

commit 26d0d36671b3e6adb3d224a854f0eefe75cfc86c
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 16:35:06 2018 +0900

    Remove unnecessary files

commit 00487d2d0e29b7713a8e4d66d0b29c3fa98ed901
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 16:26:37 2018 +0900

    Add parser and testresults

commit 33c42f2185a1cc959ab4d2823be437cb81d4f144
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 22:27:46 2018 +0900

    Fix sending junit.xml

commit a53aa6539700a5719c87eb11be974384277d5d24
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 19:02:06 2018 +0900

    Add spec for Gitlab::Ci::Config::Entry::Artifacts

commit d4f837fe925171453c52b076b8a23231f72a9d4b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:58:28 2018 +0900

    Revert refactoring

commit c4223e29138440f8debfe486d6a7bf8645930dbf
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:57:31 2018 +0900

    Revert refactoring

commit 3a50b86d147734ccf406991309d86ebb41a828c8
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:55:41 2018 +0900

    Add spec for file format. Add spec for config_artifacts

commit 0dd37009c4e202422746577cb95651b32def8c46
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:20:28 2018 +0900

    Add file_format to factory

commit 4db135e362ac05d71112d654334bd57271d23fd8
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:12:52 2018 +0900

    Rename migration file properly

commit 0f7a011aa7c2c996919653fd64cdc71f98d68bc4
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:09:57 2018 +0900

    Revert artifacts_archive_file refactoring

commit cd3d10e572f6036e46b96f760f1f8ab26099d2cc
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 16:03:26 2018 +0900

    Dry up the converion in Entry::Reports

commit cab90b2a5aac6f72ef5817ed568b002742039798
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 15:50:42 2018 +0900

    Set file_format at callers

commit 50780a664021ec5abe55d79541cc6b47a33c421b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 15:47:51 2018 +0900

    Use presenter for presenting artifacts hash to runner

commit e6310b515c0a7d6bf02c58342f35dd327afbb3aa
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 14:59:09 2018 +0900

    Support deleting junit artifact. Make wording explicit

commit 0eb356b93d1834c6a32ee11b4bd488387406b257
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 14:35:12 2018 +0900

    Add changelog

commit 35f350d18de8df0bda6a27cf9cf5f88784108a5f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 17:33:07 2018 +0900

    Fix static analysis

commit 2db42fd6115ebc5710f89bd542a0cb724d480f25
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 16:43:02 2018 +0900

    Fix Config::Entry::Artifacts

commit fa73365d10ff56ceb9c19d2f0d17b8847059026f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 14:40:20 2018 +0900

    Generalized by DEFAULT_FILE_FORMAT

commit ac76ad67871225abf1830a87f05639296a4bf07d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 13:55:02 2018 +0900

    Cleanup API::Entities::JobRequest::Artifacts

commit 32d25b13914cb4e6e7d5293b181c2bbf2a083978
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 13:25:52 2018 +0900

    Simplified file_type relations

commit b62faddf033bcbf964e161b484b9b6ca8adbddd6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 18:16:52 2018 +0900

    Remove unnecessary change

commit 314ac2baf2192a466a2873889798d4b90f27adc6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 17:41:35 2018 +0900

    Add gzip XML parser

commit 37cbfbde7048bf5bc36c87d57bdf34399d7365c0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 17:40:35 2018 +0900

    Fix errors typo

commit 2dc2d704366ca600e7fa064fb7db75a73a3b3149
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:32:35 2018 +0900

    Use the correct type name

commit 66edd04c62a6b33dfa12962b8e7ccc7132c49fa1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:29:21 2018 +0900

    Refactor job_artifacts_metadata to job_artifacts_archive_metadata

commit d586f03067678457223c8ea4e6ed925e05a19c92
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:23:55 2018 +0900

    Add job_artifacts_junit relation

commit 58aef7a7a8944d0bbb0a87b86cad2bc250d759d8
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:14:03 2018 +0900

    Fix raw to raw?

commit f14e1b19af5e2657e5956815453525c2d1489e0f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 19:05:51 2018 +0900

    Temporaly use type Hash for reports

commit 05e4967af37ed8a211099a7a3623069a41c3d078
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:27:21 2018 +0900

    Revert unnecessary change

commit 8a7267c79ed0499a8352338170564d4a5f008cc5
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:21:46 2018 +0900

    Use file_format raw for trace

commit ca6820a76a00f56f851154ca4792e243b5df3ffd
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:20:10 2018 +0900

    Check the presence of the file_format

commit 9c78003f6d5d15da2074622007ca117b8b54226e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:16:19 2018 +0900

    Add format_restriction validation

commit 9168513e33fa4b5bb40eb1a3af65535520ae4309
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 20:23:54 2018 +0900

    Artifacts presenter (Halfway)

commit d83cf2163a71c6606eafdbc79cc753cbd139ab77
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 20:22:52 2018 +0900

    Fix schema.rb

commit e64af496b4b147d221fd99ef6b2343c4fcbfef1d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 19:26:03 2018 +0900

    Allow reports type under artifacts. Allow junit keyword in it.

commit 20c333c9cb2cc66daaa000af5178c3d700a85e95
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 19:25:10 2018 +0900

    Change column name to artifact_format

commit 16b670f42daf3a3fc6ca1443b6a50e4473231c46
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 18:02:21 2018 +0900

    Rename metadata to archive_metadata, and compress to file_format

commit 808355fae0c9869a26c95a90b0efe17a7b6e26d2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 17:47:18 2018 +0900

    Validate compression. Clean up schema

commit 8e2048603f94b29af55884edc3113b99af910dfa
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 5 19:06:54 2018 +0900

    Make compression params at the first level

commit 3331af0ab1761868a9daa1c8ab3dad7f2017f511
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 5 16:31:03 2018 +0900

    Reorganize components

commit 8f3b9c0d313f9eeef1b6e6b5eccf622156e960bd
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 25 16:25:05 2018 +0900

    Skip comparison if head and base pipelines are the same as before

commit 9cabd787fc392c7a442cd8b2de798da36c8b67bc
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 25 16:24:05 2018 +0900

    Fix N+1 problem at collect_test_reports

commit 21de18bf9fecdfadadb80c5a071ff5d7af6ff524
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 21:00:03 2018 +0900

    Implement reactive cache worker

commit 09c2fa31897bf8a42183a23bf98d5163c5e95860
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 16:58:56 2018 +0900

    Refactoring test_results to test_reports

commit 41a439c75983a8bd200e0728b231487ff6e1699c
Merge: bc959fffb1a 7105b37a558
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 14:23:29 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit bc959fffb1a1e8937078a1399dad2f698534ac84
Merge: 291a9236547 1ebaaaf2094
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 14:23:01 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit 1ebaaaf2094c47c03e16745d2f8af736ec102b76
Merge: bfdf565800b dc7b4b7bb9
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 14:22:29 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2

commit 291a923654714b6c24fd654c41c5b0caa90daff2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 23 14:12:58 2018 +0900

    Revert archive_metadata refactoring

commit 7105b37a558acf22a23125cddfefc517c040a0fb
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 22:57:01 2018 +0100

    Adds action to handle the create issue button
    Moves component to inside mr widget
    Fixes eslint errors

commit d82efd8fa8329758dd3a956d5d47956ccb3ce643
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 18:57:10 2018 +0100

    Removes mocked data

commit 5cfe99006ed539fbc9e0a184b09af4be63e6d91b
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 18:54:06 2018 +0100

    Render grouped test report in MR widget

commit 8e74f14c26b9df6a4fdc4fb79322b13b06c3c509
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 13:15:35 2018 +0100

    Follow up after review: Clear Vuex actions and mutations

commit 570e7713c76b247c6da886dc60edce10657558b1
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 09:37:45 2018 +0100

    Moves payload to the correct action

commit 04b473b68969a57d7c5fa33fe46c18bd9ee6bddf
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 16:10:25 2018 +0100

    Adds payload to the fetchReports success spec

commit a3eb4001181d6d0ae8f3a62d0452a06f67500cc6
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 14:48:54 2018 +0100

    Updates documentation and test mock endpoint

commit 920b74f519091000dc73a3be02c472ea226aa451
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Thu Jul 19 12:49:44 2018 +0100

    Adds Vuex store for reports section in MR widget

commit ebebf4042bbcdcc32d5aa65b0da470ddc52f0f8e
Author: Filipa Lacerda <filipa@gitlab.com>
Date:   Fri Jul 20 12:44:16 2018 +0100

    Initial structure for reports app

commit 746c260d5e4ae4604a3b072e9c58e6c2ee1e114e
Merge: 82a8d55742f bfdf565800b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 19:15:32 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit bfdf565800b58e838a760aa01d2fadb64e2d768f
Merge: 681bd6a878a 44dbeccbe1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 19:10:47 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2

commit 82a8d55742f73a43c5281af8245f5e5873985344
Merge: b2183151e6a 44dbeccbe1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 19:07:30 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit b2183151e6a7344a327883a2658030920e256e47
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 19:06:46 2018 +0900

    Check pipeline status at has_test_results?

commit 681bd6a878ad2a77c278f5619b51c542d7382aa2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:19:46 2018 +0900

    Specify DOWNTIME=false

commit 59c4e31390e0d616d69babf8ac857e98f2dc774e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:14:44 2018 +0900

    Wrap long lines

commit 3d85788edbe73fc74c72854508e47fe259d99236
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 18:05:31 2018 +0900

    Checking filr_format and file_type paring

commit 3c92a22faf6278e7a2d1ee13bd978bc659b72452
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 16:07:21 2018 +0900

    Fix build presenter spec

commit 36e69897b0524cdee6060c928c03af734afae664
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 16:02:09 2018 +0900

    Erase test reports at the proper timing

commit 402ae97ecf7f9e3fe541f2d6abef6e47ab740452
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 15:46:56 2018 +0900

    Make GENERAL_ARCHIVE_FILE_TYPE as a single entry

commit 75f75b3f5988398fff0660ca5f04aec756ab03bb
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 15:42:16 2018 +0900

    Implement config artifact presenter

commit 9ecaee914defba5f12a7a06375ea2876b4328d7f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 14:27:54 2018 +0900

    Introduce ARCHIVE_LEGACY_TRACES_MIGRATION_VERSION check

commit 34ea9610ab9a249a576ee435f365b9e1fcca7f00
Merge: d88523ca884 b60364c0f3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 20 13:46:52 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2

commit d88523ca88420354f61bd36f533c62a6ca474423
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 21:00:40 2018 +0900

    Revert unnecessary change

commit d9beb10ede5e4e8abe388fadbd6412640293917a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:57:03 2018 +0900

    Remove scattering around erase_test_reports!

commit c79f361ca01f8dbc0d395edee5fab7f5a0697934
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:53:00 2018 +0900

    Rever archive_metadata refactoring  (For simplifying)

commit 55bc71a404d8cf5fa87e187f6e88da92ab95afa9
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:45:19 2018 +0900

    Use array_of_strings_or_string in Command

commit 8a576b18c8ab8ead2344e2885aaf2fde11af0328
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 20:40:06 2018 +0900

    Fix spec

commit a2cda62fb922184aaf0e78699e06846c96565e0d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:27:11 2018 +0900

    Fix presenter spec

commit 95502e605af9bcf1a61dbeb26f9be4d181f8a7ba
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:23:41 2018 +0900

    Fix artifact migratable

commit a3930853c93862007ba6814511bc32042c7f4986
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 18:15:41 2018 +0900

    Increment migration version to use `file_format` when archiving traces

commit e31121cb5e617b0f05e375c2150ece0e38e5e0d6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 17:57:15 2018 +0900

    Impolement job_artifact.test_reports method

commit e54707fdf97392839cb2c4711160bd3bc89da196
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 16:49:27 2018 +0900

    Fix erase method

commit 20e95824341af1ebc5877d28dc5eba26f73eddf9
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 16:28:00 2018 +0900

    Fix spec

commit be2083ff9cceacd6bdd64a9521081278111400a7
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 15:31:42 2018 +0900

    Add java ant Junit test report in fixtures

commit d47efe84ff6dda79edd00c9b055d752872af1e11
Merge: e0dc7d97efd 7ade498101d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 12:37:57 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit 7ade498101d02573b20a2405ebe0bdb8efd8aa3b
Merge: e7be6b2b362 98eccfc44c
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 19 12:37:22 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2

commit e0dc7d97efdc0a3ddeb29f8b29f7d18e34607960
Merge: 26578902d09 1859a0f9e0c
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 20:59:20 2018 +0900

    Merge branch 'artifact-format-v2-with-parser' of gitlab.com:gitlab-org/gitlab-ce into artifact-format-v2-with-parser

commit 26578902d097979ca32a6453a33d699209077aa5
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 20:59:01 2018 +0900

    Add fixtures which can export all kind of reports (new/resolved/exisiting)

commit 1859a0f9e0c0f8f10ba640a8826b9ccade9fd15f
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Wed Jul 18 12:17:49 2018 +0200

    Add summary to test results json

commit 47dfdc732e850fd1390d25d50b1ef7a99491770a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 16:43:20 2018 +0900

    Fix fixtures for development

commit 8b761adfb85d0631d2a78169f8440aca3b40c86d
Merge: 84c64a792bf e7be6b2b362
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 15:44:10 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit e7be6b2b3624ba44d56143084731cb9a6168f974
Merge: 5a8d4930e01 9bdc9b1ae6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 15:43:36 2018 +0900

    Merge branch 'master' into artifact-format-v2

commit 5a8d4930e0127aae311bfa3da70d9ab9637791e3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 15:43:28 2018 +0900

    Evaluate artifact_format

commit 84c64a792bf5d3a42bd8000eaa9fc6f5aeacc604
Merge: e2670a3c642 9bdc9b1ae6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 18 13:28:42 2018 +0900

    Merge branch 'master-ce' into artifact-format-v2-with-parser

commit e2670a3c642ba33e79202fc9adb044a78260c515
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Tue Jul 17 18:00:59 2018 +0200

    Expose all data with API on Merge Request

commit 5ea46ce5cd6d0f74802216d1c63d274a48d3cd08
Author: Kamil Trzciński <ayufan@ayufan.eu>
Date:   Tue Jul 17 17:18:19 2018 +0200

    Improve code of JUnit reports

commit 0553827fff5e1796bbfcdd7a5daf324a7dd16ea0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 20:13:31 2018 +0900

    Refactoring suites. Adding gurad clause at collect_test_results

commit 55edde40b15b3499cfc7ecbbe08f15cae9f6661a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 19:52:01 2018 +0900

    Implement comprare failed tests

commit 612c44a39099edfb258cc3c1c8e650ab192d9a8b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 18:50:03 2018 +0900

    Objectize each test suit and summary

commit 598b34072c2c7b417e47945389b88e5103fc4b17
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 17:55:34 2018 +0900

    Pass build.group_name as testsuite name

commit d0ad35fcc4b1d9c58d798775e13623026900ed27
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 16:35:06 2018 +0900

    Remove unnecessary files

commit 541292c37e5ad24f4d137454743808cfc1f3c216
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Jul 17 16:26:37 2018 +0900

    Add parser and testresults

commit c61465b962dd2774cf08ef7db81ab358a2c08ba5
Merge: da6e141e7b9 c3ce06aa9bc
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 22:28:12 2018 +0900

    Merge branch 'artifact-format-v2' into artifact-format-v2-with-parser

commit c3ce06aa9bc6481b37a16d175adf0fd1c37a1bc0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 22:27:46 2018 +0900

    Fix sending junit.xml

commit e5ce3668ee65217aba610d5311efd5e82bacddf3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 19:02:06 2018 +0900

    Add spec for Gitlab::Ci::Config::Entry::Artifacts

commit ede107caf13fb215045576dcce18e20eec776df1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:58:28 2018 +0900

    Revert refactoring

commit 15531ba9feff669b2ac05936e0feaee1856c1571
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:57:31 2018 +0900

    Revert refactoring

commit 14821f3babcc210bc52e4e825adc8333752fbc88
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:55:41 2018 +0900

    Add spec for file format. Add spec for config_artifacts

commit 882faeab57ab39d18f72abd9b65d286db92e1011
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:20:28 2018 +0900

    Add file_format to factory

commit 3cd0513e254db15141cd748f6209179f462974f2
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:12:52 2018 +0900

    Rename migration file properly

commit f511933b5f618fc47d1512554878913922dfba61
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 17:09:57 2018 +0900

    Revert artifacts_archive_file refactoring

commit e295e8cbdee065ee3af6dd82f512729554237cad
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 16:03:26 2018 +0900

    Dry up the converion in Entry::Reports

commit b0ffa42f6410be4718e7a36cb21f7b585421750e
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 15:50:42 2018 +0900

    Set file_format at callers

commit f3dc7a2e02901c79a9e572514a1b731c680e43cc
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 15:47:51 2018 +0900

    Use presenter for presenting artifacts hash to runner

commit e5299526138be90d65cf13368134e734b46f7597
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 14:59:09 2018 +0900

    Support deleting junit artifact. Make wording explicit

commit cc81c34acf23323257d190c23030d0a89265bccc
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 14:35:12 2018 +0900

    Add changelog

commit abde0f2ab5c5c1d99b2f94a049984877bb5a4d77
Merge: 4c87e5b388f fabf6a5634
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Jul 16 13:22:22 2018 +0900

    Merge branch 'master' into artifact-format-v2

commit 4c87e5b388fb098fb6da71e17a47fa204033e4ac
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 17:33:07 2018 +0900

    Fix static analysis

commit bc96346be6990b75da9a36055814b24b5b805707
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 16:43:02 2018 +0900

    Fix Config::Entry::Artifacts

commit aac284613b9db43e3021198dc5b43b81806f1bce
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 14:40:20 2018 +0900

    Generalized by DEFAULT_FILE_FORMAT

commit a79299fdbb0ed74000ca37cff8fef8268cd29b13
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 13:55:02 2018 +0900

    Cleanup API::Entities::JobRequest::Artifacts

commit 1650249214768c23f6f46ec62c0c54448017eeb5
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 13:25:52 2018 +0900

    Simplified file_type relations

commit 981da91bc4c255ff992870e4e4c4393696f5bece
Merge: e79808425eb 924146a8d6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 13 13:18:20 2018 +0900

    Merge branch 'master' into artifact-format-v2

commit e79808425eb63c322a997e71d606d97b85e42048
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 18:16:52 2018 +0900

    Remove unnecessary change

commit da6e141e7b9ff28cc1fb25ab42c979b0dee46277
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 17:41:35 2018 +0900

    Add gzip XML parser

commit a531bd7487955143489d286a0fb2e5d0984acc52
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 17:40:35 2018 +0900

    Fix errors typo

commit 57d6f21821c8ad934874c1aac3f627335c64c80d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:32:35 2018 +0900

    Use the correct type name

commit da4ca63f25a27a1268317952061c81a28516653f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:29:21 2018 +0900

    Refactor job_artifacts_metadata to job_artifacts_archive_metadata

commit 4098a8f10f92a6efa48080f8925809e251066f9d
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:23:55 2018 +0900

    Add job_artifacts_junit relation

commit 5342f07e100253713dbf50eb303da1977484077f
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:14:03 2018 +0900

    Fix raw to raw?

commit 15e0abcb22d9db3d8ef955e647f0a5d0a49c26b6
Merge: 31252fe8d75 ba38931d90
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 12 13:12:38 2018 +0900

    Merge branch 'master' into artifact-format-v2

commit 31252fe8d751319c5390f898f66f0af4a8581013
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 19:05:51 2018 +0900

    Temporaly use type Hash for reports

commit 583165c0349f40e7be16a8039dbffb4139f94921
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:27:21 2018 +0900

    Revert unnecessary change

commit eb48369b8311b538f46f59a31f4a6d3f8c9e68e1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:21:46 2018 +0900

    Use file_format raw for trace

commit fb69ae8349d58499ad21965c0d1cf95e2b79a8e3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:20:10 2018 +0900

    Check the presence of the file_format

commit c0840224bc8789d35da032c2a0ee48aa9f2232aa
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:16:19 2018 +0900

    Add format_restriction validation

commit d64fbd388cb2294447df5185366d8b5016591949
Merge: 7ec81e7c7d1 c2a0a3ab1a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Jul 11 15:11:44 2018 +0900

    Merge branch 'master' into artifact-format-v2

commit 7ec81e7c7d115f77d712892dfc79db72b9f5bc7a
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 20:23:54 2018 +0900

    Artifacts presenter (Halfway)

commit a3ccbe4c3a9b7d3095fe1929dee5fd9c57e168e0
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 20:22:52 2018 +0900

    Fix schema.rb

commit b630c670c707548799c6852e4465ef94fb4a0572
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 19:26:03 2018 +0900

    Allow reports type under artifacts. Allow junit keyword in it.

commit e7e37612487b556320d27f4fe0de32cd4ec20720
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 19:25:10 2018 +0900

    Change column name to artifact_format

commit f3f25d56a7c627f4bb9d91d19de175273a7a6a81
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 18:02:21 2018 +0900

    Rename metadata to archive_metadata, and compress to file_format

commit d7e0709319ab8fe35a2598a3d484eb89b1885934
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Jul 6 17:47:18 2018 +0900

    Validate compression. Clean up schema

commit beb5990e7e3bfbb308245dc97284aaf9700bd982
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 5 19:06:54 2018 +0900

    Make compression params at the first level

commit 1e2e1c0db5412e1aed3bf47562350c20c69dc1a6
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Jul 5 16:31:03 2018 +0900

    Reorganize components
2018-08-02 15:06:39 +09:00
..
concerns Show the status of a user in interactions 2018-07-30 15:01:26 +02:00
analytics_build_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_build_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_commit_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_commit_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_generic_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_issue_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_issue_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_merge_request_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_merge_request_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_stage_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_stage_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_summary_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
analytics_summary_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
award_emoji_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
base_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
blob_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
build_action_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
build_artifact_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
build_details_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
build_metadata_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
build_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cluster_application_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cluster_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cluster_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cohort_activity_month_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cohort_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cohorts_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
cohorts_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
commit_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
container_repositories_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
container_repository_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
container_tag_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
container_tags_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
deploy_key_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
deploy_key_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
deploy_keys_project_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
deployment_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
deployment_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
diff_file_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
diffs_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
diffs_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
discussion_entity.rb Revert "Merge branch '_acet-fix-outdated-discussions' into 'master'" 2018-08-01 13:45:16 +01:00
discussion_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
entity_date_helper.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
entity_request.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
environment_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
environment_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_child_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_child_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_variable_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
group_variable_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
issuable_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
issuable_sidebar_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
issue_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
issue_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
issue_sidebar_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
job_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
job_group_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
label_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
label_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
lfs_file_lock_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
lfs_file_lock_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_basic_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_basic_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_create_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_create_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_diff_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_metrics_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_user_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
merge_request_widget_entity.rb Squashed commit of the following: 2018-08-02 15:06:39 +09:00
note_attachment_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
note_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
note_user_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
pipeline_details_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
pipeline_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
pipeline_serializer.rb Remove code for dynamically generating routes 2018-07-25 16:41:29 +02:00
project_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
project_mirror_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
project_note_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
project_note_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
project_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
README.md
request_aware_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
runner_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
stage_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
stage_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
status_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
submodule_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
test_case_entity.rb Squashed commit of the following: 2018-08-02 15:06:39 +09:00
test_reports_comparer_entity.rb Squashed commit of the following: 2018-08-02 15:06:39 +09:00
test_reports_comparer_serializer.rb Squashed commit of the following: 2018-08-02 15:06:39 +09:00
test_suite_comparer_entity.rb Squashed commit of the following: 2018-08-02 15:06:39 +09:00
time_trackable_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
tree_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
tree_root_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
tree_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
user_entity.rb Show the status of a user in interactions 2018-07-30 15:01:26 +02:00
user_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
variable_entity.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00
variable_serializer.rb Enable frozen string in app/serializers/**/*.rb 2018-07-23 11:27:39 -07:00

Serializers

This is a documentation for classes located in app/serializers directory.

In GitLab, we use grape-entities, accompanied by a serializer, to convert a Ruby object to its JSON representation.

Serializers are typically used in controllers to build a JSON response that is usually consumed by a frontend code.

Why using a serializer is important?

Using serializers, instead of to_json method, has several benefits:

  • it helps to prevent exposure of a sensitive data stored in the database
  • it makes it easier to test what should and should not be exposed
  • it makes it easier to reuse serialization entities that are building blocks
  • it makes it easier to move complexity from controllers to easily testable classes
  • it encourages hiding complexity behind intentions-revealing interfaces
  • it makes it easier to take care about serialization performance concerns
  • it makes it easier to reduce merge conflicts between CE -> EE
  • it makes it easier to benefit from domain driven development techniques

What is a serializer?

A serializer is a class that encapsulates all business rules for building a JSON response using serialization entities.

It is designed to be testable and to support passing additional context from the controller.

What is a serialization entity?

Entities are lightweight structures that allow to represent domain models in a consistent and abstracted way, and reuse them as building blocks to create a payload.

Entities located in app/serializers are usually derived from a Grape::Entity class.

Serialization entities that do require to have a knowledge about specific elements of the request, need to mix RequestAwareEntity in.

A serialization entity usually maps a domain model class into its JSON representation. It rarely happens that a serialization entity exists without a corresponding domain model class. As an example, we have an Issue class and a corresponding IssueSerializer.

Serialization entites are designed to reuse other serialization entities, which is a convenient way to create a multi-level JSON representation of a piece of a domain model you want to serialize.

See documentation for Grape Entites for more details.

How to implement a serializer?

Base implementation

In order to effectively implement a serializer it is necessary to create a new class in app/serializers. See existing serializers as an example.

A new serializer should inherit from a BaseSerializer class. It is necessary to specify which serialization entity will be used to serialize a resource.

class MyResourceSerializer < BaseSerialize
  entity MyResourceEntity
end

The example above shows how a most simple serializer can look like.

Given that the entity MyResourceEntity exists, you can now use MyResourceSerializer in the controller by creating an instance of it, and calling MyResourceSerializer#represent(resource) method.

Note that a resource can be either a single object, an array of objects or an ActiveRecord::Relation object. A serialization entity should be smart enough to accurately represent each of these.

It should not be necessary to use Enumerable#map, and it should be avoided from the performance reasons.

Choosing what gets serialized

It often happens that you might want to use the same serializer in many places, but sometimes the intention is to only expose a small subset of object's attributes in one place, and a different subset in another.

BaseSerializer#represent(resource, opts = {}) method can take an additional hash argument, opts, that defines what is going to be serialized.

BaseSerializer will pass these options to a serialization entity. See how it is documented in the upstream project.

With this approach you can extend the serializer to respond to methods that will create a JSON response according to your needs.

class PipelineSerializer < BaseSerializer
  entity PipelineEntity

  def represent_details(resource)
    represent(resource, only: [:details])
  end

  def represent_status(resource)
    represent(resource, only: [:status])
  end
end

It is possible to use only and except keywords. Both keywords do support nested attributes, like except: [:id, { user: [:id] }].

Passing only and except to the represent method from a controller is possible, but it defies principles of encapsulation and testability, and it is better to avoid it, and to add a specific method to the serializer instead.

Reusing serialization entities from the API

Public API in GitLab is implemented using Grape.

Under the hood it also uses Grape::Entity classes. This means that it is possible to reuse these classes to implement internal serializers.

You can either use such entity directly:

class MyResourceSerializer < BaseSerializer
  entity API::Entities::SomeEntity
end

Or derive a new serialization entity class from it:

class MyEntity < API::Entities::SomeEntity
  include RequestAwareEntity

  unexpose :something
end

It might be a good idea to write specs for entities that do inherit from the API, because when API payloads are changed / extended, it is easy to forget about the impact on the internal API through a serializer that reuses API entities.

It is usually safe to do that, because API entities rarely break backward compatibility, but additional exposure may have a performance impact when API gets extended significantly. Write tests that check if only necessary data is exposed.

How to write tests for a serializer?

Like every other class in the project, creating a serializer warrants writing tests for it.

It is usually a good idea to test each public method in the serializer against a valid payload. BaseSerializer#represent returns a hash, so it is possible to use usual RSpec matchers like include.

Sometimes, when the payload is large, it makes sense to validate it entirely using match_response_schema matcher along with a new fixture that can be stored in spec/fixtures/api/schemas/. This matcher is using a json-schema gem, which is quite flexible, see a documentation for it.

How to use a serializer in a controller?

Once a new serializer is implemented, it is possible to use it in a controller.

Create an instance of the serializer and render the response.

def index
  format.json do
    render json: MyResourceSerializer
      .new(current_user: @current_user)
      .represent_details(@project.resources)
  nd
end

If it is necessary to include additional information in the payload, it is possible to extend what is going to be rendered, the usual way:

def index
  format.json do
    render json: {
      resources: MyResourceSerializer
        .new(current_user: @current_user)
        .represent_details(@project.resources),
      count: @project.resources.count
    }
  nd
end

Note that in these examples an additional context is being passed to the serializer (current_user: @current_user).

How to pass an additional context from the controller?

It is possible to pass an additional context from a controller to a serializer and each serialization entity that is used in the process.

Serialization entities that do require an additional context have RequestAwareEntity concern mixed in. This piece of the code exposes a method called request in every serialization entity that is instantiated during serialization.

An object returned by this method is an instance of EntityRequest, which behaves like an OpenStruct object, with the difference that it will raise an error if an unknown method is called.

In other words, in the previous example, request method will return an instance of EntityRequest that responds to current_user method. It will be available in every serialization entity instantiated by MyResourceSerializer.

EntityRequest is a workaround for #20045 and is meant to be refactored soon. Please avoid passing an additional context that is not required by a serialization entity.

At the moment, the context that is passed to entities most often is current_user and project.

Payload created by a serializer is usually a representation of the backed code, combined with the current request data. Therefore, technically, serializers are presenters that create payload consumed by a frontend code, usually Vue components.

In GitLab, it is possible to use presenters, but BaseSerializer still needs to learn how to use it, see #30898.

It is possible to use presenters when serializer is used to represent only a single object. It is not supported when ActiveRecord::Relation is being serialized.

MyObjectSerializer.new.represent(object.present)

Best practices

  1. Do not invoke a serializer from within a serialization entity.

    If you need to use a serializer from within a serialization entity, it is possible that you are missing a class for an important domain concept.

    Consider creating a new domain class and a corresponding serialization entity for it.

  2. Use only one approach to switch behavior of the serializer.

    It is possible to use a few approaches to switch a behavior of the serializer. Most common are using a Fluent Interface and creating a separate represent_something methods.

    Whatever you choose, it might be better to use only one approach at a time.

  3. Do not forget about creating specs for serialization entities.

    Writing tests for the serializer indeed does cover testing a behavior of serialization entities that the serializer instantiates. However it might be a good idea to write separate tests for entities as well, because these are meant to be reused in different serializers, and a serializer can change a behavior of a serialization entity.

  4. Use ActiveRecord::Relation where possible

    Using an ActiveRecord::Relation might help from the performance perspective.

  5. Be diligent about passing an additional context from the controller.

    Using EntityRequest and RequestAwareEntity is a workaround for the lack of high-level mechanism. It is meant to be refactored, and current implementation is error prone. Imagine the situation that one serialization entity requires request.user attribute, but the second one wants request.current_user. When it happens that these two entities are used in the same serialization request, you might need to pass both parameters to the serializer, which is obviously not a perfect situation.

    When in doubt, pass only current_user and project if these are required.

  6. Keep performance concerns in mind

    Using a serializer incorrectly can have significant impact on the performance.

    Because serializers are technically presenters, it is often necessary to calculate, for example, paths to various controller-actions. Since using URL helpers usually involve passing project and namespace adding includes(project: :namespace) in the serializer, can help to avoid N+1 queries.

    Also, try to avoid using Enumerable#map or other methods that will execute a database query eagerly.

  7. Avoid passing only and except from the controller.

  8. Write tests checking for N+1 queries.

  9. Write controller tests for actions / formats using serializers.

  10. Write tests that check if only necessary data is exposed.

  11. Write tests that check if no sensitive data is exposed.

Future