Merge branch '14669-bugzilla-integration' into 'master'
Bugzilla Integration ## What does this MR do? Adds Bugzilla as a project service for external issue tracking ## Are there points in the code the reviewer needs to double check? ## Why was this MR needed? Provides a notable Bugzilla option for use as an external issue tracker. Existing Custom Issue tracker can be used to setup Bugzilla but this makes it clear that Bugzilla is an option. ## What are the relevant issue numbers? Closes #14669 ## Screenshots (if relevant) ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md) - [ ] API support added - Tests - [x] Added for this feature/bug - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !4930
This commit is contained in:
commit
a4b1fe4de9
|
@ -18,6 +18,7 @@ v 8.10.0 (unreleased)
|
|||
- Check for conflicts with existing Project's wiki path when creating a new project.
|
||||
- Remove unused front-end variable -> default_issues_tracker
|
||||
- Add API endpoint for a group issues !4520 (mahcsig)
|
||||
- Add Bugzilla integration !4930 (iamtjg)
|
||||
- Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w)
|
||||
- Add basic system information like memory and disk usage to the admin panel
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ class Project < ActiveRecord::Base
|
|||
has_one :jira_service, dependent: :destroy
|
||||
has_one :redmine_service, dependent: :destroy
|
||||
has_one :custom_issue_tracker_service, dependent: :destroy
|
||||
has_one :bugzilla_service, dependent: :destroy
|
||||
has_one :gitlab_issue_tracker_service, dependent: :destroy, inverse_of: :project
|
||||
has_one :external_wiki_service, dependent: :destroy
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
class BugzillaService < IssueTrackerService
|
||||
|
||||
prop_accessor :title, :description, :project_url, :issues_url, :new_issue_url
|
||||
|
||||
def title
|
||||
if self.properties && self.properties['title'].present?
|
||||
self.properties['title']
|
||||
else
|
||||
'Bugzilla'
|
||||
end
|
||||
end
|
||||
|
||||
def description
|
||||
if self.properties && self.properties['description'].present?
|
||||
self.properties['description']
|
||||
else
|
||||
'Bugzilla issue tracker'
|
||||
end
|
||||
end
|
||||
|
||||
def to_param
|
||||
'bugzilla'
|
||||
end
|
||||
|
||||
end
|
|
@ -32,7 +32,4 @@ class CustomIssueTrackerService < IssueTrackerService
|
|||
]
|
||||
end
|
||||
|
||||
def initialize_properties
|
||||
self.properties = {} if properties.nil?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -170,6 +170,7 @@ class Service < ActiveRecord::Base
|
|||
bamboo
|
||||
buildkite
|
||||
builds_email
|
||||
bugzilla
|
||||
campfire
|
||||
custom_issue_tracker
|
||||
drone_ci
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# External issue tracker
|
||||
|
||||
GitLab has a great issue tracker but you can also use an external one such as
|
||||
Jira or Redmine. Issue trackers are configurable per GitLab project and allow
|
||||
Jira, Redmine, or Bugzilla. Issue trackers are configurable per GitLab project and allow
|
||||
you to do the following:
|
||||
|
||||
- the **Issues** link on the GitLab project pages takes you to the appropriate
|
||||
|
@ -20,6 +20,7 @@ Visit the links below for details:
|
|||
|
||||
- [Redmine](../project_services/redmine.md)
|
||||
- [Jira](../project_services/jira.md)
|
||||
- [Bugzilla](../project_services/bugzilla.md)
|
||||
|
||||
### Service Template
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# Bugzilla Service
|
||||
|
||||
Go to your project's **Settings > Services > Bugzilla** and fill in the required
|
||||
details as described in the table below.
|
||||
|
||||
| Field | Description |
|
||||
| ----- | ----------- |
|
||||
| `description` | A name for the issue tracker (to differentiate between instances, for example) |
|
||||
| `project_url` | The URL to the project in Bugzilla which is being linked to this GitLab project. Note that the `project_url` requires PRODUCT_NAME to be updated with the product/project name in Bugzilla. |
|
||||
| `issues_url` | The URL to the issue in Bugzilla project that is linked to this GitLab project. Note that the `issues_url` requires `:id` in the URL. This ID is used by GitLab as a placeholder to replace the issue number. |
|
||||
| `new_issue_url` | This is the URL to create a new issue in Bugzilla for the project linked to this GitLab project. Note that the `new_issue_url` requires PRODUCT_NAME to be updated with the product/project name in Bugzilla. |
|
||||
|
||||
Once you have configured and enabled Bugzilla:
|
||||
|
||||
- the **Issues** link on the GitLab project pages takes you to the appropriate
|
||||
Bugzilla product page
|
||||
- clicking **New issue** on the project dashboard takes you to Bugzilla for entering a new issue
|
|
@ -30,6 +30,7 @@ further configuration instructions and details. Contributions are welcome.
|
|||
| [Atlassian Bamboo CI](bamboo.md) | A continuous integration and build server |
|
||||
| Buildkite | Continuous integration and deployments |
|
||||
| [Builds emails](builds_emails.md) | Email the builds status to a list of recipients |
|
||||
| [Bugzilla](bugzilla.md) | Bugzilla issue tracker |
|
||||
| Campfire | Simple web-based real-time group chat |
|
||||
| Custom Issue Tracker | Custom issue tracker |
|
||||
| Drone CI | Continuous Integration platform built on Docker, written in Go |
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
# == Schema Information
|
||||
#
|
||||
# Table name: services
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# project_id :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# properties :text
|
||||
# template :boolean default(FALSE)
|
||||
# push_events :boolean default(TRUE)
|
||||
# issues_events :boolean default(TRUE)
|
||||
# merge_requests_events :boolean default(TRUE)
|
||||
# tag_push_events :boolean default(TRUE)
|
||||
# note_events :boolean default(TRUE), not null
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe BugzillaService, models: true do
|
||||
describe 'Associations' do
|
||||
it { is_expected.to belong_to :project }
|
||||
it { is_expected.to have_one :service_hook }
|
||||
end
|
||||
|
||||
describe 'Validations' do
|
||||
context 'when service is active' do
|
||||
before { subject.active = true }
|
||||
|
||||
it { is_expected.to validate_presence_of(:project_url) }
|
||||
it { is_expected.to validate_presence_of(:issues_url) }
|
||||
it { is_expected.to validate_presence_of(:new_issue_url) }
|
||||
it_behaves_like 'issue tracker service URL attribute', :project_url
|
||||
it_behaves_like 'issue tracker service URL attribute', :issues_url
|
||||
it_behaves_like 'issue tracker service URL attribute', :new_issue_url
|
||||
end
|
||||
|
||||
context 'when service is inactive' do
|
||||
before { subject.active = false }
|
||||
|
||||
it { is_expected.not_to validate_presence_of(:project_url) }
|
||||
it { is_expected.not_to validate_presence_of(:issues_url) }
|
||||
it { is_expected.not_to validate_presence_of(:new_issue_url) }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue