Commit a41fb7b2 authored by Shinya Maeda's avatar Shinya Maeda

Merge branch 'master' into refactor-clusters

parents 1427bdca e54dd249
## Contributor license agreement ## Developer Certificate of Origin + License
By submitting code as an individual you agree to the By contributing to GitLab B.V., You accept and agree to the following terms and
[individual contributor license agreement](doc/legal/individual_contributor_license_agreement.md). conditions for Your present and future Contributions submitted to GitLab B.V.
By submitting code as an entity you agree to the Except for the license granted herein to GitLab B.V. and recipients of software
[corporate contributor license agreement](doc/legal/corporate_contributor_license_agreement.md). distributed by GitLab B.V., You reserve all right, title, and interest in and to
Your Contributions. All Contributions are subject to the following DCO + License
terms.
[DCO + License](https://gitlab.com/gitlab-org/dco/blob/master/README.md)
_This notice should stay as the first item in the CONTRIBUTING.md file._ _This notice should stay as the first item in the CONTRIBUTING.md file._
......
...@@ -291,7 +291,7 @@ GEM ...@@ -291,7 +291,7 @@ GEM
diff-lcs (~> 1.1) diff-lcs (~> 1.1)
mime-types (>= 1.16) mime-types (>= 1.16)
posix-spawn (~> 0.3) posix-spawn (~> 0.3)
gitlab-markup (1.6.2) gitlab-markup (1.6.3)
gitlab_omniauth-ldap (2.0.4) gitlab_omniauth-ldap (2.0.4)
net-ldap (~> 0.16) net-ldap (~> 0.16)
omniauth (~> 1.3) omniauth (~> 1.3)
......
/* eslint-disable comma-dangle, space-before-function-paren, no-new */ /* eslint-disable comma-dangle, space-before-function-paren, no-new */
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global LabelsSelect */
/* global Sidebar */ /* global Sidebar */
import Vue from 'vue'; import Vue from 'vue';
...@@ -11,6 +10,7 @@ import Assignees from '../../sidebar/components/assignees/assignees'; ...@@ -11,6 +10,7 @@ import Assignees from '../../sidebar/components/assignees/assignees';
import DueDateSelectors from '../../due_date_select'; import DueDateSelectors from '../../due_date_select';
import './sidebar/remove_issue'; import './sidebar/remove_issue';
import IssuableContext from '../../issuable_context'; import IssuableContext from '../../issuable_context';
import LabelsSelect from '../../labels_select';
const Store = gl.issueBoards.BoardsStore; const Store = gl.issueBoards.BoardsStore;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
import IssuableIndex from './issuable_index'; import IssuableIndex from './issuable_index';
/* global Milestone */ /* global Milestone */
import IssuableForm from './issuable_form'; import IssuableForm from './issuable_form';
/* global LabelsSelect */ import LabelsSelect from './labels_select';
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global NewBranchForm */ /* global NewBranchForm */
/* global NotificationsForm */ /* global NotificationsForm */
......
/* eslint-disable func-names, no-underscore-dangle, space-before-function-paren, no-var, one-var, one-var-declaration-per-line, prefer-rest-params, max-len, vars-on-top, wrap-iife, no-unused-vars, quotes, no-shadow, no-cond-assign, prefer-arrow-callback, no-return-assign, no-else-return, camelcase, comma-dangle, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, prefer-template, no-param-reassign, no-loop-func, no-mixed-operators */ /* eslint-disable func-names, no-underscore-dangle, space-before-function-paren, no-var, one-var, one-var-declaration-per-line, prefer-rest-params, max-len, vars-on-top, wrap-iife, no-unused-vars, quotes, no-shadow, no-cond-assign, prefer-arrow-callback, no-return-assign, no-else-return, camelcase, comma-dangle, no-lonely-if, guard-for-in, no-restricted-syntax, consistent-return, prefer-template, no-param-reassign, no-loop-func, no-mixed-operators */
/* global fuzzaldrinPlus */ /* global fuzzaldrinPlus */
import _ from 'underscore'; import _ from 'underscore';
import fuzzaldrinPlus from 'fuzzaldrin-plus';
import { isObject } from './lib/utils/type_utility'; import { isObject } from './lib/utils/type_utility';
var GitLabDropdown, GitLabDropdownFilter, GitLabDropdownRemote, GitLabDropdownInput; var GitLabDropdown, GitLabDropdownFilter, GitLabDropdownRemote, GitLabDropdownInput;
......
/* eslint-disable no-new */ /* eslint-disable no-new */
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global LabelsSelect */ import LabelsSelect from './labels_select';
import IssuableContext from './issuable_context'; import IssuableContext from './issuable_context';
/* global Sidebar */ /* global Sidebar */
......
/* eslint-disable no-new */ /* eslint-disable no-new */
/* global LabelsSelect */ import LabelsSelect from './labels_select';
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global SubscriptionSelect */ /* global SubscriptionSelect */
......
/* eslint-disable class-methods-use-this, no-new */ /* eslint-disable class-methods-use-this, no-new */
/* global LabelsSelect */
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global SubscriptionSelect */ /* global SubscriptionSelect */
...@@ -7,7 +6,7 @@ import IssuableBulkUpdateActions from './issuable_bulk_update_actions'; ...@@ -7,7 +6,7 @@ import IssuableBulkUpdateActions from './issuable_bulk_update_actions';
import './milestone_select'; import './milestone_select';
import issueStatusSelect from './issue_status_select'; import issueStatusSelect from './issue_status_select';
import './subscription_select'; import './subscription_select';
import './labels_select'; import LabelsSelect from './labels_select';
const HIDDEN_CLASS = 'hidden'; const HIDDEN_CLASS = 'hidden';
const DISABLED_CONTENT_CLASS = 'disabled-content'; const DISABLED_CONTENT_CLASS = 'disabled-content';
......
This diff is collapsed.
/* eslint-disable one-export, one-var, one-var-declaration-per-line */
import _ from 'underscore'; import _ from 'underscore';
export const placeholderImage = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; export const placeholderImage = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
...@@ -21,7 +19,10 @@ export default class LazyLoader { ...@@ -21,7 +19,10 @@ export default class LazyLoader {
} }
searchLazyImages() { searchLazyImages() {
this.lazyImages = [].slice.call(document.querySelectorAll('.lazy')); this.lazyImages = [].slice.call(document.querySelectorAll('.lazy'));
this.checkElementsInView();
if (this.lazyImages.length) {
this.checkElementsInView();
}
} }
startContentObserver() { startContentObserver() {
const contentNode = document.querySelector(this.observerNode) || document.querySelector('body'); const contentNode = document.querySelector(this.observerNode) || document.querySelector('body');
...@@ -45,15 +46,13 @@ export default class LazyLoader { ...@@ -45,15 +46,13 @@ export default class LazyLoader {
checkElementsInView() { checkElementsInView() {
const scrollTop = pageYOffset; const scrollTop = pageYOffset;
const visHeight = scrollTop + innerHeight + SCROLL_THRESHOLD; const visHeight = scrollTop + innerHeight + SCROLL_THRESHOLD;
let imgBoundRect, imgTop, imgBound;
// Loading Images which are in the current viewport or close to them // Loading Images which are in the current viewport or close to them
this.lazyImages = this.lazyImages.filter((selectedImage) => { this.lazyImages = this.lazyImages.filter((selectedImage) => {
if (selectedImage.getAttribute('data-src')) { if (selectedImage.getAttribute('data-src')) {
imgBoundRect = selectedImage.getBoundingClientRect(); const imgBoundRect = selectedImage.getBoundingClientRect();
const imgTop = scrollTop + imgBoundRect.top;
imgTop = scrollTop + imgBoundRect.top; const imgBound = imgTop + imgBoundRect.height;
imgBound = imgTop + imgBoundRect.height;
if (scrollTop < imgBound && visHeight > imgTop) { if (scrollTop < imgBound && visHeight > imgTop) {
LazyLoader.loadImage(selectedImage); LazyLoader.loadImage(selectedImage);
......
/* eslint-disable func-names, space-before-function-paren, prefer-arrow-callback */ export default function initLogoAnimation() {
window.addEventListener('beforeunload', () => {
(function() {
window.addEventListener('beforeunload', function() {
$('.tanuki-logo').addClass('animate'); $('.tanuki-logo').addClass('animate');
}); });
}).call(window); }
...@@ -12,7 +12,6 @@ import svg4everybody from 'svg4everybody'; ...@@ -12,7 +12,6 @@ import svg4everybody from 'svg4everybody';
// libraries with import side-effects // libraries with import side-effects
import 'mousetrap'; import 'mousetrap';
import 'mousetrap/plugins/pause/mousetrap-pause'; import 'mousetrap/plugins/pause/mousetrap-pause';
import 'vendor/fuzzaldrin-plus';
// expose common libraries as globals (TODO: remove these) // expose common libraries as globals (TODO: remove these)
window.jQuery = jQuery; window.jQuery = jQuery;
...@@ -56,11 +55,10 @@ import './gl_field_errors'; ...@@ -56,11 +55,10 @@ import './gl_field_errors';
import './gl_form'; import './gl_form';
import initTodoToggle from './header'; import initTodoToggle from './header';
import initImporterStatus from './importer_status'; import initImporterStatus from './importer_status';
import './labels_select';
import './layout_nav'; import './layout_nav';
import LazyLoader from './lazy_loader'; import LazyLoader from './lazy_loader';
import './line_highlighter'; import './line_highlighter';
import './logo'; import initLogoAnimation from './logo';
import './merge_request'; import './merge_request';
import './merge_request_tabs'; import './merge_request_tabs';
import './milestone'; import './milestone';
...@@ -135,6 +133,7 @@ $(function () { ...@@ -135,6 +133,7 @@ $(function () {
initBreadcrumbs(); initBreadcrumbs();
initImporterStatus(); initImporterStatus();
initTodoToggle(); initTodoToggle();
initLogoAnimation();
// Set the default path for all cookies to GitLab's root directory // Set the default path for all cookies to GitLab's root directory
Cookies.defaults.path = gon.relative_url_root || '/'; Cookies.defaults.path = gon.relative_url_root || '/';
......
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, quotes, consistent-return, one-var, one-var-declaration-per-line, no-cond-assign, max-len, object-shorthand, no-param-reassign, comma-dangle, prefer-template, no-unused-vars, no-return-assign */ /* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, quotes, consistent-return, one-var, one-var-declaration-per-line, no-cond-assign, max-len, object-shorthand, no-param-reassign, comma-dangle, prefer-template, no-unused-vars, no-return-assign */
/* global fuzzaldrinPlus */
import fuzzaldrinPlus from 'fuzzaldrin-plus';
(function() { (function() {
this.ProjectFindFile = (function() { this.ProjectFindFile = (function() {
......
...@@ -23,11 +23,16 @@ ...@@ -23,11 +23,16 @@
@include webkit-prefix(animation-duration, 2s); @include webkit-prefix(animation-duration, 2s);
} }
&.spin { &.spin-cw {
transform-origin: center; transform-origin: center;
animation: spin 4s linear infinite; animation: spin 4s linear infinite;
} }
&.spin-ccw {
transform-origin: center;
animation: spin 4s linear infinite reverse;
}
&.flipOutX, &.flipOutX,
&.flipOutY, &.flipOutY,
&.bounceIn, &.bounceIn,
......
...@@ -209,7 +209,6 @@ ...@@ -209,7 +209,6 @@
padding: 24px 0 0; padding: 24px 0 0;
.nav-links { .nav-links {
justify-content: center;
width: 100%; width: 100%;
float: none; float: none;
...@@ -217,6 +216,14 @@ ...@@ -217,6 +216,14 @@
float: none; float: none;
} }
} }
li:first-child {
margin-left: auto;
}
li:last-child {
margin-right: auto;
}
} }
.group-info { .group-info {
......
...@@ -50,3 +50,10 @@ ...@@ -50,3 +50,10 @@
font-size: 11px; font-size: 11px;
} }
} }
@media (max-width: $screen-md-max) {
.runners-content {
width: 100%;
overflow: auto;
}
}
...@@ -12,12 +12,7 @@ class Projects::GroupLinksController < Projects::ApplicationController ...@@ -12,12 +12,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
if group if group
return render_404 unless can?(current_user, :read_group, group) return render_404 unless can?(current_user, :read_group, group)
Projects::GroupLinks::CreateService.new(project, current_user, group_link_create_params).execute(group)
project.project_group_links.create(
group: group,
group_access: params[:link_group_access],
expires_at: params[:expires_at]
)
else else
flash[:alert] = 'Please select a group.' flash[:alert] = 'Please select a group.'
end end
...@@ -32,7 +27,9 @@ class Projects::GroupLinksController < Projects::ApplicationController ...@@ -32,7 +27,9 @@ class Projects::GroupLinksController < Projects::ApplicationController
end end
def destroy def destroy
project.project_group_links.find(params[:id]).destroy group_link = project.project_group_links.find(params[:id])
::Projects::GroupLinks::DestroyService.new(project, current_user).execute(group_link)
respond_to do |format| respond_to do |format|
format.html do format.html do
...@@ -47,4 +44,8 @@ class Projects::GroupLinksController < Projects::ApplicationController ...@@ -47,4 +44,8 @@ class Projects::GroupLinksController < Projects::ApplicationController
def group_link_params def group_link_params
params.require(:group_link).permit(:group_access, :expires_at) params.require(:group_link).permit(:group_access, :expires_at)
end end
def group_link_create_params
params.permit(:link_group_access, :expires_at)
end
end end
module Projects
module GroupLinks
class CreateService < BaseService
def execute(group)
return false unless group
project.project_group_links.create(
group: group,
group_access: params[:link_group_access],
expires_at: params[:expires_at]
)
end
end
end
end
module Projects
module GroupLinks
class DestroyService < BaseService
def execute(group_link)
return false unless group_link
group_link.destroy
end
end
end
end
...@@ -52,22 +52,23 @@ ...@@ -52,22 +52,23 @@
%br %br
- if @runners.any? - if @runners.any?
.table-holder .runners-content
%table.table .table-holder
%thead %table.table
%tr %thead
%th Type %tr
%th Runner token %th Type
%th Description %th Runner token
%th Version %th Description
%th Projects %th Version
%th Jobs %th Projects
%th Tags %th Jobs
%th= link_to 'Last contact', admin_runners_path(params.slice(:search).merge(sort: 'contacted_asc')) %th Tags
%th %th Last contact
%th
- @runners.each do |runner| - @runners.each do |runner|
= render "admin/runners/runner", runner: runner = render "admin/runners/runner", runner: runner
= paginate @runners, theme: "gitlab" = paginate @runners, theme: "gitlab"
- else - else
.nothing-here-block No runners found .nothing-here-block No runners found
This diff is collapsed.
...@@ -2,6 +2,10 @@ class UpdateMergeRequestsWorker ...@@ -2,6 +2,10 @@ class UpdateMergeRequestsWorker
include Sidekiq::Worker include Sidekiq::Worker
include DedicatedSidekiqQueue include DedicatedSidekiqQueue
def metrics_tags
@metrics_tags || {}
end
def perform(project_id, user_id, oldrev, newrev, ref) def perform(project_id, user_id, oldrev, newrev, ref)
project = Project.find_by(id: project_id) project = Project.find_by(id: project_id)
return unless project return unless project
...@@ -9,6 +13,11 @@ class UpdateMergeRequestsWorker ...@@ -9,6 +13,11 @@ class UpdateMergeRequestsWorker
user = User.find_by(id: user_id) user = User.find_by(id: user_id)
return unless user return unless user
@metrics_tags = {
project_id: project_id,
user_id: user_id
}
MergeRequests::RefreshService.new(project, user).execute(oldrev, newrev, ref) MergeRequests::RefreshService.new(project, user).execute(oldrev, newrev, ref)
end end
end end
---
title: Add metric tagging for sidekiq workers
merge_request: 15111
author:
type: added
---
title: Support show-all-refs for git over HTTP
merge_request: 14834
author:
type: added
---
title: 'Support uml:: and captions in reStructuredText'
merge_request: 15120
author: Markus Koller
type: changed
---
title: Fixed user profile activity tab being off-screen on mobile
merge_request:
author:
type: fixed
---
title: Returns a ssh url for go-get=1
merge_request: 14990
author: gvieira37
type: fixed
---
title: Mobile-friendly table on Admin Runners
merge_request:
author: Takuya Noguchi
type: fixed
---
title: Refactor GroupLinksController
merge_request:
author: 15121
type: other
---
title: Disable Unicorn sampling in Sidekiq since there are no Unicorn sockets to monitor
merge_request:
author:
type: performance
...@@ -123,7 +123,9 @@ def instrument_classes(instrumentation) ...@@ -123,7 +123,9 @@ def instrument_classes(instrumentation)
end end
# rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/AbcSize
Gitlab::Metrics::UnicornSampler.initialize_instance(Settings.monitoring.unicorn_sampler_interval).start unless Sidekiq.server?
Gitlab::Metrics::UnicornSampler.initialize_instance(Settings.monitoring.unicorn_sampler_interval).start
end
Gitlab::Application.configure do |config| Gitlab::Application.configure do |config|
# 0 should be Sentry to catch errors in this middleware # 0 should be Sentry to catch errors in this middleware
......
--- ---
toc: false toc: false
comments: false
--- ---
# GitLab Documentation # GitLab Documentation
......
---
comments: false
---
# Authentication and Authorization # Authentication and Authorization
GitLab integrates with the following external authentication and authorization GitLab integrates with the following external authentication and authorization
......
...@@ -56,29 +56,34 @@ that, login with an Admin account and do following: ...@@ -56,29 +56,34 @@ that, login with an Admin account and do following:
With PlantUML integration enabled and configured, we can start adding diagrams to With PlantUML integration enabled and configured, we can start adding diagrams to
our AsciiDoc snippets, wikis and repos using delimited blocks: our AsciiDoc snippets, wikis and repos using delimited blocks:
``` - **Markdown**
[plantuml, format="png", id="myDiagram", width="200px"]
-- ```plantuml
Bob->Alice : hello Bob -> Alice : hello
Alice -> Bob : Go Away Alice -> Bob : Go Away
-- ```
```
And in Markdown using fenced code blocks: - **AsciiDoc**
```plantuml ```
Bob -> Alice : hello [plantuml, format="png", id="myDiagram", width="200px"]
--
Bob->Alice : hello
Alice -> Bob : Go Away Alice -> Bob : Go Away
--
``` ```
And in reStructuredText using a directive: - **reStructuredText**
``` ```
.. plantuml:: .. plantuml::
:caption: Caption with **bold** and *italic*
Bob -> Alice: hello Bob -> Alice: hello
Alice -> Bob: Go Away Alice -> Bob: Go Away
``` ```
You can also use the `uml::` directive for compatibility with [sphinxcontrib-plantuml](https://pypi.python.org/pypi/sphinxcontrib-plantuml), but please note that we currently only support the `caption` option.
The above blocks will be converted to an HTML img tag with source pointing to the The above blocks will be converted to an HTML img tag with source pointing to the
PlantUML instance. If the PlantUML server is correctly configured, this should PlantUML instance. If the PlantUML server is correctly configured, this should
......
...@@ -76,7 +76,7 @@ To migrate your existing projects to the new storage type, check the specific [r ...@@ -76,7 +76,7 @@ To migrate your existing projects to the new storage type, check the specific [r
We are incrementally moving every storable object in GitLab to the Hashed Storage pattern. You can check the current We are incrementally moving every storable object in GitLab to the Hashed Storage pattern. You can check the current
coverage status below. coverage status below.
Not that things stored in S3 compatible endpoint, will not have the downsides mentioned earlier, if they are not Note that things stored in an S3 compatible endpoint will not have the downsides mentioned earlier, if they are not
prefixed with `#{namespace}/#{project_name}`, which is true for CI Cache and LFS Objects. prefixed with `#{namespace}/#{project_name}`, which is true for CI Cache and LFS Objects.
| Storable Object | Legacy Storage | Hashed Storage | S3 Compatible | GitLab Version | | Storable Object | Legacy Storage | Hashed Storage | S3 Compatible | GitLab Version |
......
---
comments: false
---
# GitLab Continuous Integration (GitLab CI) # GitLab Continuous Integration (GitLab CI)
![Pipeline graph](img/cicd_pipeline_infograph.png) ![Pipeline graph](img/cicd_pipeline_infograph.png)
......
---
comments: false
---
# Docker integration # Docker integration
- [Using Docker Images](using_docker_images.md) - [Using Docker Images](using_docker_images.md)
......
## Enable or disable GitLab CI/CD # How to enable or disable GitLab CI/CD
To effectively use GitLab CI/CD, you need a valid [`.gitlab-ci.yml`](yaml/README.md) To effectively use GitLab CI/CD, you need a valid [`.gitlab-ci.yml`](yaml/README.md)
file present at the root directory of your project and a file present at the root directory of your project and a
...@@ -21,7 +21,7 @@ individually under each project's settings, or site-wide by modifying the ...@@ -21,7 +21,7 @@ individually under each project's settings, or site-wide by modifying the
settings in `gitlab.yml` and `gitlab.rb` for source and Omnibus installations settings in `gitlab.yml` and `gitlab.rb` for source and Omnibus installations
respectively. respectively.
### Per-project user setting ## Per-project user setting
The setting to enable or disable GitLab CI/CD can be found under your project's The setting to enable or disable GitLab CI/CD can be found under your project's
**Settings > General > Permissions**. Choose one of "Disabled", "Only team members" **Settings > General > Permissions**. Choose one of "Disabled", "Only team members"
...@@ -29,7 +29,7 @@ or "Everyone with access" and hit **Save changes** for the settings to take effe ...@@ -29,7 +29,7 @@ or "Everyone with access" and hit **Save changes** for the settings to take effe
![Sharing & Permissions settings](../user/project/settings/img/sharing_and_permissions_settings.png) ![Sharing & Permissions settings](../user/project/settings/img/sharing_and_permissions_settings.png)
### Site-wide admin setting ## Site-wide admin setting
You can disable GitLab CI/CD site-wide, by modifying the settings in `gitlab.yml` You can disable GitLab CI/CD site-wide, by modifying the settings in `gitlab.yml`
and `gitlab.rb` for source and Omnibus installations respectively. and `gitlab.rb` for source and Omnibus installations respectively.
......
---
comments: false
---
# GitLab CI Examples # GitLab CI Examples
A collection of `.gitlab-ci.yml` files is maintained at the [GitLab CI Yml project][gitlab-ci-templates]. A collection of `.gitlab-ci.yml` files is maintained at the [GitLab CI Yml project][gitlab-ci-templates].
......
## Running Composer and NPM scripts with deployment via SCP # Running Composer and NPM scripts with deployment via SCP in GitLab CI/CD
This guide covers the building dependencies of a PHP project while compiling assets via an NPM script. This guide covers the building dependencies of a PHP project while compiling assets via an NPM script.
...@@ -39,13 +39,13 @@ In this particular case, the `npm deploy` script is a Gulp script that does the ...@@ -39,13 +39,13 @@ In this particular case, the `npm deploy` script is a Gulp script that does the
All these operations will put all files into a `build` folder, which is ready to be deployed to a live server. All these operations will put all files into a `build` folder, which is ready to be deployed to a live server.
### How to transfer files to a live server? ## How to transfer files to a live server
You have multiple options: rsync, scp, sftp and so on. For now, we will use scp. You have multiple options: rsync, scp, sftp and so on. For now, we will use scp.
To make this work, you need to add a GitLab Secret Variable (accessible on _gitlab.example/your-project-name/variables_). That variable will be called `STAGING_PRIVATE_KEY` and it's the **private** ssh key of your server. To make this work, you need to add a GitLab Secret Variable (accessible on _gitlab.example/your-project-name/variables_). That variable will be called `STAGING_PRIVATE_KEY` and it's the **private** ssh key of your server.
#### Security tip ### Security tip
Create a user that has access **only** to the folder that needs to be updated! Create a user that has access **only** to the folder that needs to be updated!
...@@ -69,7 +69,7 @@ In order, this means that: ...@@ -69,7 +69,7 @@ In order, this means that:
And this is basically all you need in the `before_script` section. And this is basically all you need in the `before_script` section.
## How to deploy things? ## How to deploy things
As we stated above, we need to deploy the `build` folder from the docker image to our server. To do so, we create a new job: As we stated above, we need to deploy the `build` folder from the docker image to our server. To do so, we create a new job:
...@@ -88,7 +88,7 @@ stage_deploy: ...@@ -88,7 +88,7 @@ stage_deploy:
- ssh -p22 server_user@server_host "rm -rf htdocs/wp-content/themes/_old" - ssh -p22 server_user@server_host "rm -rf htdocs/wp-content/themes/_old"
``` ```
### What's going on here? Here's the breakdown:
1. `only:dev` means that this build will run only when something is pushed to the `dev` branch. You can remove this block completely and have everything be ran on every push (but probably this is something you don't want) 1. `only:dev` means that this build will run only when something is pushed to the `dev` branch. You can remove this block completely and have everything be ran on every push (but probably this is something you don't want)
2. `ssh-add ...` we will add that private key you added on the web UI to the docker container 2. `ssh-add ...` we will add that private key you added on the web UI to the docker container
...@@ -99,7 +99,7 @@ stage_deploy: ...@@ -99,7 +99,7 @@ stage_deploy:
What's the deal with the artifacts? We just tell GitLab CI to keep the `build` directory (later on, you can download that as needed). What's the deal with the artifacts? We just tell GitLab CI to keep the `build` directory (later on, you can download that as needed).
#### Why we do it this way? ### Why we do it this way
If you're using this only for stage server, you could do this in two steps: If you're using this only for stage server, you could do this in two steps:
...@@ -112,7 +112,7 @@ The problem is that there will be a small period of time when you won't have the ...@@ -112,7 +112,7 @@ The problem is that there will be a small period of time when you won't have the
So we use so many steps because we want to make sure that at any given time we have a functional app in place. So we use so many steps because we want to make sure that at any given time we have a functional app in place.
## Where to go next? ## Where to go next
Since this was a WordPress project, I gave real life code snippets. Some ideas you can pursuit: Since this was a WordPress project, I gave real life code snippets. Some ideas you can pursuit:
......
## Test and Deploy a python application # Test and Deploy a python application with GitLab CI/CD
This example will guide you how to run tests in your Python application and deploy it automatically as Heroku application. This example will guide you how to run tests in your Python application and deploy it automatically as Heroku application.
You can checkout the example [source](https://gitlab.com/ayufan/python-getting-started) and check [CI status](https://gitlab.com/ayufan/python-getting-started/builds?scope=all). You can checkout the [example source](https://gitlab.com/ayufan/python-getting-started).
## Configure project
### Configure project
This is what the `.gitlab-ci.yml` file looks like for this project: This is what the `.gitlab-ci.yml` file looks like for this project:
```yaml ```yaml
test: test:
script: script:
...@@ -41,21 +44,25 @@ This project has three jobs: ...@@ -41,21 +44,25 @@ This project has three jobs:
2. `staging` - used to automatically deploy staging environment every push to `master` branch 2. `staging` - used to automatically deploy staging environment every push to `master` branch
3. `production` - used to automatically deploy production environmnet for every created tag 3. `production` - used to automatically deploy production environmnet for every created tag
### Store API keys ## Store API keys
You'll need to create two variables in `Project > Variables`: You'll need to create two variables in `Project > Variables`:
1. `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app, 1. `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app,
2. `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app. 2. `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app.
Find your Heroku API key in [Manage Account](https://dashboard.heroku.com/account). Find your Heroku API key in [Manage Account](https://dashboard.heroku.com/account).
### Create Heroku application ## Create Heroku application
For each of your environments, you'll need to create a new Heroku application. For each of your environments, you'll need to create a new Heroku application.
You can do this through the [Dashboard](https://dashboard.heroku.com/). You can do this through the [Dashboard](https://dashboard.heroku.com/).
### Create runner ## Create Runner
First install [Docker Engine](https://docs.docker.com/installation/). First install [Docker Engine](https://docs.docker.com/installation/).
To build this project you also need to have [GitLab Runner](https://about.gitlab.com/gitlab-ci/#gitlab-runner). To build this project you also need to have [GitLab Runner](https://docs.gitlab.com/runner).
You can use public runners available on `gitlab.com`, but you can register your own: You can use public runners available on `gitlab.com`, but you can register your own:
``` ```
gitlab-ci-multi-runner register \ gitlab-ci-multi-runner register \
--non-interactive \ --non-interactive \
......
## Test and Deploy a ruby application # Test and Deploy a ruby application with GitLab CI/CD
This example will guide you how to run tests in your Ruby on Rails application and deploy it automatically as Heroku application. This example will guide you how to run tests in your Ruby on Rails application and deploy it automatically as Heroku application.
You can checkout the example [source](https://gitlab.com/ayufan/ruby-getting-started) and check [CI status](https://gitlab.com/ayufan/ruby-getting-started/builds?scope=all). You can checkout the example [source](https://gitlab.com/ayufan/ruby-getting-started) and check [CI status](https://gitlab.com/ayufan/ruby-getting-started/builds?scope=all).
### Configure project ## Configure the project
This is what the `.gitlab-ci.yml` file looks like for this project: This is what the `.gitlab-ci.yml` file looks like for this project:
```yaml ```yaml
test: test:
script: script:
...@@ -36,23 +39,28 @@ This project has three jobs: ...@@ -36,23 +39,28 @@ This project has three jobs:
2. `staging` - used to automatically deploy staging environment every push to `master` branch 2. `staging` - used to automatically deploy staging environment every push to `master` branch
3. `production` - used to automatically deploy production environment for every created tag 3. `production` - used to automatically deploy production environment for every created tag
### Store API keys ## Store API keys
You'll need to create two variables in `Project > Variables`:
You'll need to create two variables in your project's **Settings > CI/CD > Variables**:
1. `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app, 1. `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app,
2. `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app. 2. `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app.
Find your Heroku API key in [Manage Account](https://dashboard.heroku.com/account). Find your Heroku API key in [Manage Account](https://dashboard.heroku.com/account).
### Create Heroku application ## Create Heroku application
For each of your environments, you'll need to create a new Heroku application. For each of your environments, you'll need to create a new Heroku application.
You can do this through the [Dashboard](https://dashboard.heroku.com/). You can do this through the [Dashboard](https://dashboard.heroku.com/).
### Create runner ## Create Runner
First install [Docker Engine](https://docs.docker.com/installation/). First install [Docker Engine](https://docs.docker.com/installation/).
To build this project you also need to have [GitLab Runner](https://about.gitlab.com/gitlab-ci/#gitlab-runner). To build this project you also need to have [GitLab Runner](https://about.gitlab.com/gitlab-ci/#gitlab-runner).
You can use public runners available on `gitlab.com`, but you can register your own: You can use public runners available on `gitlab.com`, but you can register your own:
``` ```
gitlab-ci-multi-runner register \ gitlab-runner register \
--non-interactive \ --non-interactive \
--url "https://gitlab.com/" \ --url "https://gitlab.com/" \
--registration-token "PROJECT_REGISTRATION_TOKEN" \ --registration-token "PROJECT_REGISTRATION_TOKEN" \
...@@ -62,6 +70,6 @@ gitlab-ci-multi-runner register \ ...@@ -62,6 +70,6 @@ gitlab-ci-multi-runner register \
--docker-postgres latest --docker-postgres latest
``` ```
With the command above, you create a runner that uses [ruby:2.2](https://hub.docker.com/r/_/ruby/) image and uses [postgres](https://hub.docker.com/r/_/postgres/) database. With the command above, you create a Runner that uses [ruby:2.2](https://hub.docker.com/r/_/ruby/) image and uses [postgres](https://hub.docker.com/r/_/postgres/) database.
To access PostgreSQL database you need to connect to `host: postgres` as user `postgres` without password. To access PostgreSQL database you need to connect to `host: postgres` as user `postgres` without password.
## Test a Clojure application # Test a Clojure application with GitLab CI/CD
This example will guide you how to run tests in your Clojure application. This example will guide you how to run tests in your Clojure application.
You can checkout the example [source](https://gitlab.com/dzaporozhets/clojure-web-application) and check [CI status](https://gitlab.com/dzaporozhets/clojure-web-application/builds?scope=all). You can checkout the example [source](https://gitlab.com/dzaporozhets/clojure-web-application) and check [CI status](https://gitlab.com/dzaporozhets/clojure-web-application/builds?scope=all).
### Configure project ## Configure the project
This is what the `.gitlab-ci.yml` file looks like for this project: This is what the `.gitlab-ci.yml` file looks like for this project:
...@@ -23,13 +23,13 @@ before_script: ...@@ -23,13 +23,13 @@ before_script:
- lein deps - lein deps
- lein migratus migrate - lein migratus migrate
test: test:
script: script:
- lein test - lein test
``` ```
In before script we install JRE and [Leiningen](http://leiningen.org/). In before script we install JRE and [Leiningen](http://leiningen.org/).
Sample project uses [migratus](https://github.com/yogthos/migratus) library to manage database migrations. Sample project uses [migratus](https://github.com/yogthos/migratus) library to manage database migrations.
So we added database migration as last step of `before_script` section So we added database migration as last step of `before_script` section
You can use public runners available on `gitlab.com` for testing your application with such configuration. You can use public runners available on `gitlab.com` for testing your application with such configuration.
## Test a Phoenix application # Test a Phoenix application with GitLab CI/CD
This example demonstrates the integration of Gitlab CI with Phoenix, Elixir and This example demonstrates the integration of Gitlab CI with Phoenix, Elixir and
Postgres. Postgres.
### Add `.gitlab-ci.yml` file to project ## Add `.gitlab-ci.yml` to project
The following `.gitlab-ci.yml` should be added in the root of your The following `.gitlab-ci.yml` should be added in the root of your
repository to trigger CI: repository to trigger CI:
...@@ -36,7 +36,7 @@ run your migrations. ...@@ -36,7 +36,7 @@ run your migrations.
Finally, the test `script` will run your tests. Finally, the test `script` will run your tests.
### Update the Config Settings ## Update the Config Settings
In `config/test.exs`, update the database hostname: In `config/test.exs`, update the database hostname:
...@@ -45,12 +45,12 @@ config :my_app, MyApp.Repo, ...@@ -45,12 +45,12 @@ config :my_app, MyApp.Repo,
hostname: if(System.get_env("CI"), do: "postgres", else: "localhost"), hostname: if(System.get_env("CI"), do: "postgres", else: "localhost"),
``` ```
### Add the Migrations Folder ## Add the Migrations Folder
If you do not have any migrations yet, you will need to create an empty If you do not have any migrations yet, you will need to create an empty
`.gitkeep` file in `priv/repo/migrations`. `.gitkeep` file in `priv/repo/migrations`.
### Sources ## Sources
- https://medium.com/@nahtnam/using-phoenix-on-gitlab-ci-5a51eec81142 - https://medium.com/@nahtnam/using-phoenix-on-gitlab-ci-5a51eec81142
- https://davejlong.com/ci-with-phoenix-and-gitlab/ - https://davejlong.com/ci-with-phoenix-and-gitlab/
# Users Permissions
This document was moved to [user/permissions.md](../../user/permissions.md#gitlab-ci). This document was moved to [user/permissions.md](../../user/permissions.md#gitlab-ci).
# Getting started with GitLab CI # Getting started with GitLab CI/CD
>**Note:** Starting from version 8.0, GitLab [Continuous Integration][ci] (CI) >**Note:** Starting from version 8.0, GitLab [Continuous Integration][ci] (CI)
is fully integrated into GitLab itself and is [enabled] by default on all is fully integrated into GitLab itself and is [enabled] by default on all
......
# Runners # Configuring GitLab Runners
In GitLab CI, Runners run the code defined in [`.gitlab-ci.yml`](../yaml/README.md). In GitLab CI, Runners run the code defined in [`.gitlab-ci.yml`](../yaml/README.md).
They are isolated (virtual) machines that pick up jobs through the coordinator They are isolated (virtual) machines that pick up jobs through the coordinator
......
## GitLab CI Services ---
comments: false
---
# GitLab CI Services
GitLab CI uses the `services` keyword to define what docker containers should GitLab CI uses the `services` keyword to define what docker containers should
be linked with your base image. Below is a list of examples you may use. be linked with your base image. Below is a list of examples you may use.
......
## GitLab CI Services ---
comments: false
---
+ [Using MySQL](mysql.md) # GitLab CI Services
+ [Using PostgreSQL](postgres.md)
+ [Using Redis](redis.md) - [Using MySQL](mysql.md)
- [Using PostgreSQL](postgres.md)
- [Using Redis](redis.md)
# Variables # GitLab CI/CD Variables
When receiving a job from GitLab CI, the [Runner] prepares the build environment. When receiving a job from GitLab CI, the [Runner] prepares the build environment.
It starts by setting a list of **predefined variables** (environment variables) It starts by setting a list of **predefined variables** (environment variables)
...@@ -43,7 +43,7 @@ future GitLab releases.** ...@@ -43,7 +43,7 @@ future GitLab releases.**
| **CI_COMMIT_TAG** | 9.0 | 0.5 | The commit tag name. Present only when building tags. | | **CI_COMMIT_TAG** | 9.0 | 0.5 | The commit tag name. Present only when building tags. |
| **CI_CONFIG_PATH** | 9.4 | 0.5 | The path to CI config file. Defaults to `.gitlab-ci.yml` | | **CI_CONFIG_PATH** | 9.4 | 0.5 | The path to CI config file. Defaults to `.gitlab-ci.yml` |
| **CI_DEBUG_TRACE** | all | 1.7 | Whether [debug tracing](#debug-tracing) is enabled | | **CI_DEBUG_TRACE** | all | 1.7 | Whether [debug tracing](#debug-tracing) is enabled |
| **CI_DISPOSABLE_ENVIRONMENT** | all | 10.1 | Mark that job is executed in a disposable environment (something that is created only for this job and disposed of/destroyed after the execution - all executors except `shell` and `ssh`). If the environment is disposable, it is set to true, otherwise it is not defined at all. | | **CI_DISPOSABLE_ENVIRONMENT** | all | 10.1 | Marks that the job is executed in a disposable environment (something that is created only for this job and disposed of/destroyed after the execution - all executors except `shell` and `ssh`). If the environment is disposable, it is set to true, otherwise it is not defined at all. |
| **CI_ENVIRONMENT_NAME** | 8.15 | all | The name of the environment for this job | | **CI_ENVIRONMENT_NAME** | 8.15 | all | The name of the environment for this job |
| **CI_ENVIRONMENT_SLUG** | 8.15 | all | A simplified version of the environment name, suitable for inclusion in DNS, URLs, Kubernetes labels, etc. | | **CI_ENVIRONMENT_SLUG** | 8.15 | all | A simplified version of the environment name, suitable for inclusion in DNS, URLs, Kubernetes labels, etc. |
| **CI_ENVIRONMENT_URL** | 9.3 | all | The URL of the environment for this job | | **CI_ENVIRONMENT_URL** | 9.3 | all | The URL of the environment for this job |
...@@ -74,7 +74,7 @@ future GitLab releases.** ...@@ -74,7 +74,7 @@ future GitLab releases.**
| **CI_SERVER_NAME** | all | all | The name of CI server that is used to coordinate jobs | | **CI_SERVER_NAME** | all | all | The name of CI server that is used to coordinate jobs |
| **CI_SERVER_REVISION** | all | all | GitLab revision that is used to schedule jobs | | **CI_SERVER_REVISION** | all | all | GitLab revision that is used to schedule jobs |
| **CI_SERVER_VERSION** | all | all | GitLab version that is used to schedule jobs | | **CI_SERVER_VERSION** | all | all | GitLab version that is used to schedule jobs |
| **CI_SHARED_ENVIRONMENT** | all | 10.1 | Mark that job is executed in a shared environment (something that is persisted across CI invocations like `shell` or `ssh` executor). If the environment is shared, it is set to true, otherwise it is not defined at all. | | **CI_SHARED_ENVIRONMENT** | all | 10.1 | Marks that the job is executed in a shared environment (something that is persisted across CI invocations like `shell` or `ssh` executor). If the environment is shared, it is set to true, otherwise it is not defined at all. |
| **ARTIFACT_DOWNLOAD_ATTEMPTS** | 8.15 | 1.9 | Number of attempts to download artifacts running a job | | **ARTIFACT_DOWNLOAD_ATTEMPTS** | 8.15 | 1.9 | Number of attempts to download artifacts running a job |
| **GET_SOURCES_ATTEMPTS** | 8.15 | 1.9 | Number of attempts to fetch sources running a job | | **GET_SOURCES_ATTEMPTS** | 8.15 | 1.9 | Number of attempts to fetch sources running a job |
| **GITLAB_CI** | all | all | Mark that job is executed in GitLab CI environment | | **GITLAB_CI** | all | all | Mark that job is executed in GitLab CI environment |
......
---
comments: false
---
# GitLab development guides # GitLab development guides
## Get started! ## Get started!
......
## Testing Rake tasks # Testing Rake tasks
To make testing Rake tasks a little easier, there is a helper that can be included To make testing Rake tasks a little easier, there is a helper that can be included
in lieu of the standard Spec helper. Instead of `require 'spec_helper'`, use in lieu of the standard Spec helper. Instead of `require 'spec_helper'`, use
......
This diff is collapsed.
---
comments: false
---
# GitLab basics # GitLab basics
Step-by-step guides on the basics of working with Git and GitLab. Step-by-step guides on the basics of working with Git and GitLab.
......
---
comments: false
---
# Installation # Installation
GitLab can be installed via various ways. Check the [installation methods][methods] GitLab can be installed via various ways. Check the [installation methods][methods]
......
## Install GitLab under a relative URL # Install GitLab under a relative URL
_**Note:** NOTE: **Note:**
This document describes how to run GitLab under a relative URL for installations This document describes how to run GitLab under a relative URL for installations
from source. If you are using an Omnibus package, from source. If you are using an Omnibus package,
[the steps are different][omnibus-rel]. Use this guide along with the [the steps are different][omnibus-rel]. Use this guide along with the
[installation guide](installation.md) if you are installing GitLab for the [installation guide](installation.md) if you are installing GitLab for the
first time._ first time.
--- ---
...@@ -33,7 +33,7 @@ serve GitLab under a relative URL is: ...@@ -33,7 +33,7 @@ serve GitLab under a relative URL is:
After all the changes you need to recompile the assets and [restart GitLab]. After all the changes you need to recompile the assets and [restart GitLab].
### Relative URL requirements ## Relative URL requirements
If you configure GitLab with a relative URL, the assets (JavaScript, CSS, fonts, If you configure GitLab with a relative URL, the assets (JavaScript, CSS, fonts,
images, etc.) will need to be recompiled, which is a task which consumes a lot images, etc.) will need to be recompiled, which is a task which consumes a lot
...@@ -43,11 +43,11 @@ least 2GB of RAM available on your system, while we recommend 4GB RAM, and 4 or ...@@ -43,11 +43,11 @@ least 2GB of RAM available on your system, while we recommend 4GB RAM, and 4 or
See the [requirements](requirements.md) document for more information. See the [requirements](requirements.md) document for more information.
### Enable relative URL in GitLab ## Enable relative URL in GitLab
_**Note:** NOTE: **Note:**
Do not make any changes to your web server configuration file regarding Do not make any changes to your web server configuration file regarding
relative URL. The relative URL support is implemented by GitLab Workhorse._ relative URL. The relative URL support is implemented by GitLab Workhorse.
--- ---
...@@ -115,7 +115,7 @@ Make sure to follow all steps below: ...@@ -115,7 +115,7 @@ Make sure to follow all steps below:
1. [Restart GitLab][] for the changes to take effect. 1. [Restart GitLab][] for the changes to take effect.
### Disable relative URL in GitLab ## Disable relative URL in GitLab
To disable the relative URL: To disable the relative URL:
......
...@@ -121,7 +121,7 @@ Existing users using GitLab with MySQL/MariaDB are advised to ...@@ -121,7 +121,7 @@ Existing users using GitLab with MySQL/MariaDB are advised to
### PostgreSQL Requirements ### PostgreSQL Requirements
As of GitLab 10.0, PostgreSQL 9.6 or newer is required, and earlier versions are As of GitLab 10.0, PostgreSQL 9.6 or newer (but less than 10) is required, and earlier versions are
not supported. We highly recommend users to use PostgreSQL 9.6 as this not supported. We highly recommend users to use PostgreSQL 9.6 as this
is the PostgreSQL version used for development and testing. is the PostgreSQL version used for development and testing.
......
---
comments: false
---
# GitLab Integration # GitLab Integration
GitLab integrates with multiple third-party services to allow external issue GitLab integrates with multiple third-party services to allow external issue
......
---
comments: false
---
# Get started with GitLab # Get started with GitLab
## Organize ## Organize
......
---
comments: false
---
# Legal # Legal
- [Corporate contributor license agreement](corporate_contributor_license_agreement.md) - [Corporate contributor license agreement](corporate_contributor_license_agreement.md)
......
# Corporate contributor license agreement This document has been replaced by a Developer Certificate of Origin and License,
as described in [Contributing.md](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md).
You accept and agree to the following terms and conditions for Your present and future Contributions submitted to GitLab B.V.. Except for the license granted herein to GitLab B.V. and recipients of software distributed by GitLab B.V., You reserve all right, title, and interest in and to Your Contributions. \ No newline at end of file
1. Definitions.
"You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with GitLab B.V.. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean the code, documentation or other original works of authorship, including any modifications or additions to an existing work, that is submitted by You to GitLab B.V. for inclusion in, or documentation of, any of the products owned or managed by GitLab B.V. (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to GitLab B.V. or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, GitLab B.V. for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
2. Grant of Copyright License.
Subject to the terms and conditions of this Agreement, You hereby grant to GitLab B.V. and to recipients of software distributed by GitLab B.V. a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
3. Grant of Patent License.
Subject to the terms and conditions of this Agreement, You hereby grant to GitLab B.V. and to recipients of software distributed by GitLab B.V. a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.
4. You represent that You are legally entitled to grant the above license. You represent further that each of Your employees is authorized to submit Contributions on Your behalf, but excluding employees that are designated in writing by You as "Not authorized to submit Contributions on behalf of [name of Your corporation here]." Such designations of exclusion for unauthorized employees are to be submitted via email to legal@gitlab.com.
5. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others).
6. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
7. Should You wish to submit work that is not Your original creation, You may submit it to GitLab B.V. separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".
8. It is Your responsibility to notify GitLab.com when any change is required to the list of designated employees excluded from submitting Contributions on Your behalf per Section 4. Such notification should be sent via email to legal@gitlab.com.
This text is licensed under the [Creative Commons Attribution 3.0 License](https://creativecommons.org/licenses/by/3.0/) and the original source is the Google Open Source Programs Office.
# Individual contributor license agreement This document has been replaced by a Developer Certificate of Origin and License,
as described in [Contributing.md](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md).
You accept and agree to the following terms and conditions for Your present and future Contributions submitted to GitLab B.V.. Except for the license granted herein to GitLab B.V. and recipients of software distributed by GitLab B.V., You reserve all right, title, and interest in and to Your Contributions. \ No newline at end of file
1. Definitions.
"You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with GitLab B.V.. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to GitLab B.V. for inclusion in, or documentation of, any of the products owned or managed by GitLab B.V. (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to GitLab B.V. or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, GitLab B.V. for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
2. Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby grant to GitLab B.V. and to recipients of software distributed by GitLab B.V. a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
3. Grant of Patent License. Subject to the terms and conditions of this Agreement, You hereby grant to GitLab B.V. and to recipients of software distributed by GitLab B.V. a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.
4. You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to GitLab B.V., or that your employer has executed a separate Corporate CLA with GitLab B.V..
5. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.
6. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
7. Should You wish to submit work that is not Your original creation, You may submit it to GitLab B.V. separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [insert_name_here]".
8. You agree to notify GitLab B.V. of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
This text is licensed under the [Creative Commons Attribution 3.0 License](https://creativecommons.org/licenses/by/3.0/) and the original source is the Google Open Source Programs Office.
...@@ -372,8 +372,10 @@ CREATE TABLE ...@@ -372,8 +372,10 @@ CREATE TABLE
``` ```
To fix that you need to apply this SQL statement before doing final backup: To fix that you need to apply this SQL statement before doing final backup:
```
# Omnibus ```sql
## Omnibus GitLab
gitlab-ci-rails dbconsole <<EOF gitlab-ci-rails dbconsole <<EOF
-- ALTER TABLES - DROP DEFAULTS -- ALTER TABLES - DROP DEFAULTS
ALTER TABLE ONLY ci_application_settings ALTER COLUMN id DROP DEFAULT; ALTER TABLE ONLY ci_application_settings ALTER COLUMN id DROP DEFAULT;
...@@ -427,7 +429,8 @@ ALTER TABLE ONLY ci_variables ALTER COLUMN id SET DEFAULT nextval('ci_variables_ ...@@ -427,7 +429,8 @@ ALTER TABLE ONLY ci_variables ALTER COLUMN id SET DEFAULT nextval('ci_variables_
ALTER TABLE ONLY ci_web_hooks ALTER COLUMN id SET DEFAULT nextval('ci_web_hooks_id_seq'::regclass); ALTER TABLE ONLY ci_web_hooks ALTER COLUMN id SET DEFAULT nextval('ci_web_hooks_id_seq'::regclass);
EOF EOF
# Source ## Source installations
cd /home/gitlab_ci/gitlab-ci cd /home/gitlab_ci/gitlab-ci
sudo -u gitlab_ci -H bundle exec rails dbconsole production <<EOF sudo -u gitlab_ci -H bundle exec rails dbconsole production <<EOF
... COPY SQL STATEMENTS FROM ABOVE ... ... COPY SQL STATEMENTS FROM ABOVE ...
......
---
comments: false
---
# Rake tasks # Rake tasks
- [Backup restore](backup_restore.md) - [Backup restore](backup_restore.md)
......
---
comments: false
---
# Security # Security
- [Password length limits](password_length_limits.md) - [Password length limits](password_length_limits.md)
......
# SSH # GitLab and SSH keys
Git is a distributed version control system, which means you can work locally Git is a distributed version control system, which means you can work locally
but you can also share or "push" your changes to other servers. but you can also share or "push" your changes to other servers.
...@@ -114,7 +114,7 @@ custom name continue onto the next step. ...@@ -114,7 +114,7 @@ custom name continue onto the next step.
If you manually copied your public SSH key make sure you copied the entire If you manually copied your public SSH key make sure you copied the entire
key starting with `ssh-rsa` and ending with your email. key starting with `ssh-rsa` and ending with your email.
1. Optionally you can test your setup by running `ssh -T git@example.com` 1. Optionally you can test your setup by running `ssh -T git@example.com`
(replacing `example.com` with your GitLab domain) and verifying that you (replacing `example.com` with your GitLab domain) and verifying that you
receive a `Welcome to GitLab` message. receive a `Welcome to GitLab` message.
...@@ -172,7 +172,7 @@ dummy user account. ...@@ -172,7 +172,7 @@ dummy user account.
If you are a project master or owner, you can add a deploy key in the If you are a project master or owner, you can add a deploy key in the
project settings under the section 'Repository'. Specify a title for the new project settings under the section 'Repository'. Specify a title for the new
deploy key and paste a public SSH key. After this, the machine that uses deploy key and paste a public SSH key. After this, the machine that uses
the corresponding private SSH key has read-only or read-write (if enabled) the corresponding private SSH key has read-only or read-write (if enabled)
access to the project. access to the project.
You can't add the same deploy key twice using the form. You can't add the same deploy key twice using the form.
...@@ -232,7 +232,7 @@ something is wrong with your SSH setup. ...@@ -232,7 +232,7 @@ something is wrong with your SSH setup.
- Ensure that you generated your SSH key pair correctly and added the public SSH - Ensure that you generated your SSH key pair correctly and added the public SSH
key to your GitLab profile key to your GitLab profile
- Try manually registering your private SSH key using `ssh-agent` as documented - Try manually registering your private SSH key using `ssh-agent` as documented
earlier in this document earlier in this document
- Try to debug the connection by running `ssh -Tv git@example.com` - Try to debug the connection by running `ssh -Tv git@example.com`
(replacing `example.com` with your GitLab domain) (replacing `example.com` with your GitLab domain)
---
comments: false
---
# GitLab University # GitLab University
GitLab University is the best place to learn about **Version Control with Git and GitLab**. GitLab University is the best place to learn about **Version Control with Git and GitLab**.
......
---
comments: false
---
# Books # Books
List of books and resources, that may be worth reading. List of books and resources, that may be worth reading.
......
---
comments: false
---
# The GitLab Book Club # The GitLab Book Club
The Book Club is a casual meet-up to read and discuss books we like. The Book Club is a casual meet-up to read and discuss books we like.
......
## What is the Glossary ---
comments: false
---
# What is the Glossary
This contains a simplified list and definitions of some of the terms that you will encounter in your day to day activities when working with GitLab. This contains a simplified list and definitions of some of the terms that you will encounter in your day to day activities when working with GitLab.
Please add any terms that you discover that you think would be useful for others. Please add any terms that you discover that you think would be useful for others.
......
---
comments: false
---
# High Availability on AWS # High Availability on AWS
......
---
comments: false
---
--- ---
title: University | Process title: University | Process
--- ---
## Suggesting improvements # Suggesting improvements
If you would like to teach a class or participate or help in any way please If you would like to teach a class or participate or help in any way please
submit a merge request and assign it to [Job](https://gitlab.com/u/JobV). submit a merge request and assign it to [Job](https://gitlab.com/u/JobV).
......
---
comments: false
---
## Support Boot Camp
# Support Boot Camp
**Goal:** Prepare new Service Engineers at GitLab **Goal:** Prepare new Service Engineers at GitLab
......
---
comments: false
---
# Training # Training
......
---
comments: false
---
# GitLab Flow # GitLab Flow
- A simplified branching strategy - A simplified branching strategy
......
---
comments: false
---
# GitLab Training Material # GitLab Training Material
All GitLab training material is stored in markdown format. Slides are All GitLab training material is stored in markdown format. Slides are
......
## Additional Resources ---
comments: false
---
# Additional Resources
1. GitLab Documentation [http://docs.gitlab.com](http://docs.gitlab.com/) 1. GitLab Documentation [http://docs.gitlab.com](http://docs.gitlab.com/)
2. GUI Clients [http://git-scm.com/downloads/guis](http://git-scm.com/downloads/guis) 2. GUI Clients [http://git-scm.com/downloads/guis](http://git-scm.com/downloads/guis)
......
---
comments: false
---
# Agile and Git # Agile and Git
---------- ----------
......
---
comments: false
---
# Bisect # Bisect
---------- ----------
......
---
comments: false
---
# Cherry Pick # Cherry Pick
---------- ----------
......
---
comments: false
---
# Configure your environment # Configure your environment
---------- ----------
......
---
comments: false
---
# Explore GitLab projects # Explore GitLab projects
---------- ----------
......
---
comments: false
---
# Feature branching # Feature branching
---------- ----------
......
---
comments: false
---
# Getting Started # Getting Started
---------- ----------
......
---
comments: false
---
# Git Add # Git Add
---------- ----------
......
---
comments: false
---
# Git introduction # Git introduction
---------- ----------
......
---
comments: false
---
# Git Log # Git Log
---------- ----------
......
---
comments: false
---
# GitLab Flow # GitLab Flow
---------- ----------
......
---
comments: false
---
# Merge conflicts # Merge conflicts
---------- ----------
......
---
comments: false
---
# Merge requests # Merge requests
---------- ----------
......
---
comments: false
---
# Rollback Commits # Rollback Commits
---------- ----------
......
---
comments: false
---
# Git Stash # Git Stash
---------- ----------
......
## Subtree ---
comments: false
---
---------- # Subtree
## Subtree
* Used when there are nested repositories. * Used when there are nested repositories.
* Not recommended when the amount of dependencies is too large * Not recommended when the amount of dependencies is too large
......
---
comments: false
---
# Tags # Tags
---------- ----------
......
---
comments: false
---
# Unstage # Unstage
---------- ----------
......
---
comments: false
---
# GitLab Git Workshop # GitLab Git Workshop
--- ---
......
---
comments: false
---
# From 10.0 to 10.1 # From 10.0 to 10.1
Make sure you view this update guide from the tag (version) of GitLab you would Make sure you view this update guide from the tag (version) of GitLab you would
......
---
comments: false
---
# From 2.6 to 3.0 # From 2.6 to 3.0
*Make sure you view this [upgrade guide from the `master` branch](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update/2.6-to-3.0.md) for the most up to date instructions.* *Make sure you view this [upgrade guide from the `master` branch](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update/2.6-to-3.0.md) for the most up to date instructions.*
......
---
comments: false
---
# From 2.9 to 3.0 # From 2.9 to 3.0
*Make sure you view this [upgrade guide from the `master` branch](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update/2.9-to-3.0.md) for the most up to date instructions.* *Make sure you view this [upgrade guide from the `master` branch](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update/2.9-to-3.0.md) for the most up to date instructions.*
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment