Merge branch 'zj-save-environment-deployment-refs' into 'master'
Save a fetchable ref per deployement cc @DouweM @ayufan See merge request !6618
This commit is contained in:
commit
385817a11f
6 changed files with 41 additions and 3 deletions
|
@ -8,6 +8,7 @@ v 8.13.0 (unreleased)
|
|||
- Replaced the check sign to arrow in the show build view. !6501
|
||||
- Add a /wip slash command to toggle the Work In Progress status of a merge request. !6259 (tbalthazar)
|
||||
- Speed-up group milestones show page
|
||||
- Keep refs for each deployment
|
||||
- Log LDAP lookup errors and don't swallow unrelated exceptions. !6103 (Markus Koller)
|
||||
- Add more tests for calendar contribution (ClemMakesApps)
|
||||
- Avoid database queries on Banzai::ReferenceParser::BaseParser for nodes without references
|
||||
|
|
|
@ -11,7 +11,7 @@ class Deployment < ActiveRecord::Base
|
|||
|
||||
delegate :name, to: :environment, prefix: true
|
||||
|
||||
after_save :keep_around_commit
|
||||
after_save :create_ref
|
||||
|
||||
def commit
|
||||
project.commit(sha)
|
||||
|
@ -29,8 +29,8 @@ class Deployment < ActiveRecord::Base
|
|||
self == environment.last_deployment
|
||||
end
|
||||
|
||||
def keep_around_commit
|
||||
project.repository.keep_around(self.sha)
|
||||
def create_ref
|
||||
project.repository.create_ref(ref, ref_path)
|
||||
end
|
||||
|
||||
def manual_actions
|
||||
|
@ -76,4 +76,10 @@ class Deployment < ActiveRecord::Base
|
|||
where.not(id: self.id).
|
||||
take
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ref_path
|
||||
File.join(environment.ref_path, 'deployments', id.to_s)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -47,4 +47,8 @@ class Environment < ActiveRecord::Base
|
|||
def update_merge_request_metrics?
|
||||
self.name == "production"
|
||||
end
|
||||
|
||||
def ref_path
|
||||
"refs/environments/#{Shellwords.shellescape(name)}"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -997,6 +997,10 @@ class Repository
|
|||
Gitlab::Popen.popen(args, path_to_repo)
|
||||
end
|
||||
|
||||
def create_ref(ref, ref_path)
|
||||
fetch_ref(path_to_repo, ref, ref_path)
|
||||
end
|
||||
|
||||
def update_branch_with_hooks(current_user, branch)
|
||||
update_autocrlf_option
|
||||
|
||||
|
|
|
@ -14,6 +14,19 @@ Defining environments in a project's `.gitlab-ci.yml` lets developers track
|
|||
|
||||
Deployments are created when [jobs] deploy versions of code to [environments].
|
||||
|
||||
### Checkout deployments locally
|
||||
|
||||
Since 8.13, a reference in the git repository is saved for each deployment. So
|
||||
knowing what the state is of your current environments is only a `git fetch`
|
||||
away.
|
||||
|
||||
In your git config, append the `[remote "<your-remote>"]` block with an extra
|
||||
fetch line:
|
||||
|
||||
```
|
||||
fetch = +refs/environments/*:refs/remotes/origin/environments/*
|
||||
```
|
||||
|
||||
## Defining environments
|
||||
|
||||
You can create and delete environments manually in the web interface, but we
|
||||
|
|
|
@ -320,6 +320,16 @@ describe Repository, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#create_ref' do
|
||||
it 'redirects the call to fetch_ref' do
|
||||
ref, ref_path = '1', '2'
|
||||
|
||||
expect(repository).to receive(:fetch_ref).with(repository.path_to_repo, ref, ref_path)
|
||||
|
||||
repository.create_ref(ref, ref_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#changelog" do
|
||||
before do
|
||||
repository.send(:cache).expire(:changelog)
|
||||
|
|
Loading…
Reference in a new issue