release_manager 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +32 -2
- data/docker-compose.yml +2 -2
- data/lib/release_manager/cli/deploy_r10k_cli.rb +1 -0
- data/lib/release_manager/cli/release_mod_cli.rb +1 -0
- data/lib/release_manager/cli/sandbox_create_cli.rb +5 -0
- data/lib/release_manager/git/utilites.rb +1 -0
- data/lib/release_manager/puppetfile.rb +6 -2
- data/lib/release_manager/r10k_deployer.rb +4 -1
- data/lib/release_manager/sandbox.rb +1 -1
- data/lib/release_manager/vcs_manager.rb +1 -1
- data/lib/release_manager/vcs_manager/gitlab_adapter.rb +12 -0
- data/lib/release_manager/vcs_manager/vcs_adapter.rb +13 -0
- data/lib/release_manager/version.rb +1 -1
- data/srv/gitlab/config/gitlab-secrets.json +5 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c5f092e245aea42b984105f438d28a7c08ee105
|
4
|
+
data.tar.gz: 2f33d50455fdf64fb2ad9f6292ab1d438c5791a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1652bfddb2ab6671ad58216507116eab5beda0622bb977d01ce9102e09c9d047d0d5af0002a84d8b5d5e7c26ac849195263be49d384eb469763e40783606329
|
7
|
+
data.tar.gz: 5de1534bd90dcd3a4c1f133bacb114dc376a604f2888702391d6332126576f456f93fafa1d095c4d5961bc492b99b41dda599457915effa9f4721c360d77640d
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## 0.8.2
|
6
|
+
* Fixes #7 - sandbox-create hangs when ssh does not have host id key
|
7
|
+
* Fixes #6 - sandbox-create hangs when ssh-agent does not have a key/id
|
8
|
+
* Fixes #10 - Add better error handling with a token is not set
|
9
|
+
* Add MERGE_REQUEST_URL environment variable when creating a MR for r10k
|
5
10
|
## 0.8.1
|
6
11
|
* Improves error handling when tags already exist
|
7
12
|
* Fixes #12 - deploy-r10k does not write a patch file
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -75,6 +75,15 @@ Or install it yourself as:
|
|
75
75
|
|
76
76
|
$ gem install release_manager
|
77
77
|
|
78
|
+
|
79
|
+
Release Manager depends on the Rugged gem which requires compilation and a few OS dependencies.
|
80
|
+
|
81
|
+
### Ubnutu / Debian
|
82
|
+
apt-get update && apt-get install libgit2-21 cmake libssh-dev
|
83
|
+
|
84
|
+
### RedHat Based
|
85
|
+
yum install cmake libssh2 libssh2-devel git
|
86
|
+
|
78
87
|
### Install directly from source
|
79
88
|
If you don't have access to a gem server you can use the `specific_install` gem. This will install the latest version
|
80
89
|
directly from source.
|
@@ -89,11 +98,32 @@ There are several cli utilities bundled with the gem, each one can be used indep
|
|
89
98
|
found further below in this document.
|
90
99
|
|
91
100
|
* `sandbox-create -n my_sandbox` - Sandbox creation and module repo forking (most popular)
|
92
|
-
* `deploy-mod` -
|
101
|
+
* `deploy-mod` - (module) Deploy the latest version of your mod to r10k-control Puppetfile
|
102
|
+
* `deploy-mod` - (r10k repo) Deploy the latest version (tags) of your r10k-control repo branch to other branches
|
93
103
|
* `deploy-r10k` - Deploying your r10k repo to other branches in the same repo using merge requests
|
94
|
-
* `release-mod` -
|
104
|
+
* `release-mod` - Increments version, tags, updates changelog and releases version to gitlab
|
95
105
|
* `bump-changelog` - for directly manipulating the changelog
|
96
106
|
|
107
|
+
## Automating the release process
|
108
|
+
Over the last few years I have adapted the build->release->deploy process to r10k environments. This is done by
|
109
|
+
treating all puppet modules as separate projects, and r10k-control as the AIO (all in one) project the encomposes all the modules.
|
110
|
+
|
111
|
+
Where as most people would only merge the changes from one branch to the production branch, Release Manager expects there are multiple stages to pass in order to get to production. This greatly reduces risk and follows a similar process to traditional software development.
|
112
|
+
|
113
|
+
Release Manager enforces this process and will version the r10k-control repo just like a module. Once that version is released, the version is then deployed to the other puppet environments by merging only the differences between the two branches. This is done purposely as we will be assured that the contents of v0.1.1 have been deployed to the dest branch (qa, staging, and production). Additionally, you can have multiple versions in flight at any given time. So a typical scenario can be something like:
|
114
|
+
|
115
|
+
- feature_branch ( dev + feature/bugfix)
|
116
|
+
- dev (bleeding edge)
|
117
|
+
- qa (v1.1.5)
|
118
|
+
- staging (v1.1.4)
|
119
|
+
- production (v1.0.0)
|
120
|
+
|
121
|
+
Because most people are accustomed to this release process, it becomes easy to trace where changes are at any given moment. Keeping a changelog in r10k-control helps immensely as well.
|
122
|
+
|
123
|
+
Futhermore, if you realize a problem with v1.1.4 and need a hotfix, just create a branch `git checkout -b hotfix upstream/v1.1.4` apply the fix, and release a new version. They deploy the hotfix to any branch you desire.
|
124
|
+
|
125
|
+
Keep in mind releases are immutable. So once you create a release, you have to cut another release to deploy any changes. This is by design so that you always know what is deployed.
|
126
|
+
|
97
127
|
## The workflow problem
|
98
128
|
R10k allows us to create a puppet environment for each branch on the r10k-control repository. This makes isolating code deployments
|
99
129
|
simple to use because each branch corresponds to a puppet environment. However, this workflow implies that you will fork
|
data/docker-compose.yml
CHANGED
@@ -20,7 +20,7 @@ services:
|
|
20
20
|
runner:
|
21
21
|
depends_on:
|
22
22
|
- web
|
23
|
-
image: 'gitlab/gitlab-runner:ubuntu-
|
23
|
+
image: 'gitlab/gitlab-runner:ubuntu-v10.5.0'
|
24
24
|
volumes:
|
25
25
|
- './srv/gitlab-runner/config:/etc/gitlab-runner'
|
26
26
|
- '/var/run/docker.sock:/var/run/docker.sock'
|
@@ -39,7 +39,7 @@ services:
|
|
39
39
|
- GITLAB_API_PRIVATE_TOKEN
|
40
40
|
#entrypoint:
|
41
41
|
web:
|
42
|
-
image: 'gitlab/gitlab-ce:
|
42
|
+
image: 'gitlab/gitlab-ce:10.5.4-ce.0'
|
43
43
|
restart: always
|
44
44
|
# environment:
|
45
45
|
# GITLAB_OMNIBUS_CONFIG: |
|
@@ -103,6 +103,7 @@ Options:
|
|
103
103
|
puts "expected major minor or patch for parameter -l, --level. You supplied #{options[:level]}.".fatal
|
104
104
|
exit 1
|
105
105
|
end
|
106
|
+
ReleaseManager::VCSManager.default_instance.validate_authorization
|
106
107
|
r = options[:remote] ?
|
107
108
|
RemoteRelease.new(options[:path], options) : Release.new(options[:path], options)
|
108
109
|
r.run
|
@@ -122,7 +122,12 @@ Options:
|
|
122
122
|
end
|
123
123
|
# check options to ensure all values are present
|
124
124
|
begin
|
125
|
+
ReleaseManager::VCSManager.default_instance.validate_authorization
|
125
126
|
s = Sandbox.create(options[:sandbox_name], options)
|
127
|
+
rescue Rugged::SshError => e
|
128
|
+
puts e.message.fatal
|
129
|
+
puts 'Please see https://github.com/nwops/release_manager#ssh-agent-usage for info on starting the ssh-agent'.fatal
|
130
|
+
exit 1
|
126
131
|
rescue InvalidToken => e
|
127
132
|
puts e.message.fatal
|
128
133
|
puts "Please update your Gitlab API token as it may be expired or incorrect".fatal
|
@@ -60,6 +60,7 @@ module ReleaseManager
|
|
60
60
|
# @return [Rugged::Remote] a rugged remote object
|
61
61
|
def add_remote(url, remote_name = 'upstream', reset_url = false )
|
62
62
|
return false unless git_url?(url)
|
63
|
+
url = url.gsub('"', '') # remove quotes if url contains quotes
|
63
64
|
if remote_exists?(remote_name)
|
64
65
|
# ensure the correct url is set
|
65
66
|
# this sets a non persistant fetch url
|
@@ -50,9 +50,13 @@ class Puppetfile
|
|
50
50
|
modules[name] = ControlMod.new(name, metadata)
|
51
51
|
end
|
52
52
|
|
53
|
-
|
53
|
+
# @param remote [String] - the remote name
|
54
|
+
# @param branch [String] - the branch to push
|
55
|
+
# @param force [Boolean] - force push , defaults to false
|
56
|
+
# @pram tags [Boolean] - push tags, defaults to true
|
57
|
+
def push(remote, branch, force = false, tags = true)
|
54
58
|
push_branch(remote, branch, force)
|
55
|
-
push_tags(remote)
|
59
|
+
push_tags(remote) if tags
|
56
60
|
end
|
57
61
|
|
58
62
|
def data
|
@@ -175,7 +175,7 @@ class Sandbox
|
|
175
175
|
# no need to push if we didn't commit anything
|
176
176
|
if committed
|
177
177
|
logger.info("Pushing new environment branch: #{name} to upstream")
|
178
|
-
puppetfile.push('upstream', name, true)
|
178
|
+
puppetfile.push('upstream', name, true, false)
|
179
179
|
end
|
180
180
|
logger.info("Sandbox created successfully")
|
181
181
|
return self
|
@@ -5,7 +5,7 @@ module ReleaseManager
|
|
5
5
|
extend Forwardable
|
6
6
|
attr_accessor :vcs
|
7
7
|
def_delegators :vcs, :add_ssh_key, :add_permission, :create_repo_fork, :swap_namespace, :create_tag,
|
8
|
-
:clone_repo, :create_repo_branch, :repo_exists?, :repo_id, :add_permissions,
|
8
|
+
:clone_repo, :create_repo_branch, :repo_exists?, :repo_id, :add_permissions, :validate_authorization,
|
9
9
|
:vcs_create_commit, :create_merge_request, :diff_2_commit, :vcs_create_branch, :rebase_mr,
|
10
10
|
:remote_tags, :remote_tag_names, :remote_tag_exists?
|
11
11
|
|
@@ -32,6 +32,18 @@ module ReleaseManager
|
|
32
32
|
client.projects(project_id)
|
33
33
|
end
|
34
34
|
|
35
|
+
# @param [Boolean] - returns true if the user has valid access by trying to access the api
|
36
|
+
def validate_authorization
|
37
|
+
begin
|
38
|
+
client.todos
|
39
|
+
true
|
40
|
+
rescue Gitlab::Error::Unauthorized
|
41
|
+
logger.fatal "Please set the GITLAB_API_PRIVATE_TOKEN environment variable with a valid token"
|
42
|
+
logger.fatal "Example: export GITLAB_API_PRIVATE_TOKEN=kdii2ljljijsldjfoa"
|
43
|
+
raise InvalidToken, "The gitlab token is invalid or expired"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
35
47
|
# https://docs.gitlab.com/ee/api/members.html
|
36
48
|
def add_permission(username, project_id, access_level = 20)
|
37
49
|
begin
|
@@ -102,6 +102,19 @@ module ReleaseManager
|
|
102
102
|
raise NotImplementedError
|
103
103
|
end
|
104
104
|
|
105
|
+
# @param hostname [String] - the hostname of the system you wnat to add keys for
|
106
|
+
def add_known_hosts_keys(hostname)
|
107
|
+
URI(ReleaseManager.gitlab_server)
|
108
|
+
known_hosts = File.expand_dir(File.join('~', '.ssh', 'ssh_known_hosts'))
|
109
|
+
`ssh-keygen -F #{hostname} -f #{known_hosts} > /dev/null`
|
110
|
+
`ssh-keyscan -H #{hostname} >> #{known_hosts}` unless $CHILD_STATUS.success?
|
111
|
+
end
|
112
|
+
|
113
|
+
# @param [Boolean] - returns true if the user has valid access by trying to access the api
|
114
|
+
def validate_authorization
|
115
|
+
raise NotImplementedError
|
116
|
+
end
|
117
|
+
|
105
118
|
# @param Array[Hash] the changed files in the commit or all the commits in the diff between src and dst
|
106
119
|
# @return Array[Hash]
|
107
120
|
def diff_2_commit(diff_obj)
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"secret_key_base": "2b9aa72b37a6680f7795c2532faa460f021a2c7727a489321f2f2d318869f09864305aad9e2556b6945c1404a2b383d99f2ccce09f23fd46a3ade40a33262ed1",
|
10
10
|
"db_key_base": "d7d621b72bb30cf09a7ed2c47f9ce648e292169f3294d14d59fd1adabd538b1003de51beca728084b67755f20ff12e15381916a9b495b63ed74f63e891e18b9d",
|
11
11
|
"otp_key_base": "5fc0b0ba5d959acf5e9c788b5241a043485c03c6c903fe84d8982de6eb20ced39ed9604885a55d5a82dd8cc0fd04d4415eeb3e534a5e6a9e0bf062a1b0d4cbb0",
|
12
|
-
"
|
12
|
+
"openid_connect_signing_key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n"
|
13
13
|
},
|
14
14
|
"registry": {
|
15
15
|
"http_secret": "7a50a3e7a4436e6887c33ddac7c078fcd2935be978c890164f2ce7b175b9161247fec3d7a5cae08b7a2fa0d0ff855ffcbc3dc7921485379b31bd22978fbdb607",
|
@@ -20,5 +20,9 @@
|
|
20
20
|
"email_invite_salt": "6fb3016ddce5827e8f5e9fb9d70f8566",
|
21
21
|
"file_public_link_salt": "a8064c9f949330baf43c62d03f2b94ac",
|
22
22
|
"sql_at_rest_encrypt_key": "f527b3c4910c6ea13e804cf96ce51d91"
|
23
|
+
},
|
24
|
+
"postgresql": {
|
25
|
+
"internal_certificate": "-----BEGIN CERTIFICATE-----\nMIIFBzCCAu+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBHMQwwCgYDVQQGEwNVU0Ex\nDzANBgNVBAoMBkdpdExhYjERMA8GA1UECwwIRGF0YWJhc2UxEzARBgNVBAMMClBv\nc3RncmVTUUwwHhcNMTgwMzE2MTcwMDQyWhcNMjgwMzEzMTcwMDQyWjBHMQwwCgYD\nVQQGEwNVU0ExDzANBgNVBAoMBkdpdExhYjERMA8GA1UECwwIRGF0YWJhc2UxEzAR\nBgNVBAMMClBvc3RncmVTUUwwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC\nAQC8kpZ9td9kCKbNHKP27Q2gnAdJvIO2j1lp5AIJA0Hf1QcW7dhekghJid4K+cak\nFzdhZClbuImIveAE+HRIeGC+xYFJqbVcdgezmNuq0aWOoAcDpSkDPxRkOiv8eVjh\nXow4lhT3w0AmS9/KZxuxLbSW34GTqvoRjIHQYLBjau7IkctHaQsKWx7o6OARQ7PV\nhnRmSp07PRydqqciRFrms45cPq3k/pBfxZAb9SEcEA0uk4l0gSRGGxe87gSGdtNZ\nnHW2kvFjZdhHC5W1BbM5G2CMcicmIsUVYoi7BB1Osg+QsKphk1F6kWGP1CaKKL0a\nVUcvCQiEbrEE6P4vHW4OPOXL4iSVtn1o/yZew7gjjd2mjr/k3MuPpTgEfF8xP1aL\ncd+fvqy9NMqj5my5Eol37A2n+bjVu8j2TNJ5fF2/7aN7tZWY7mdYt8lo8s0Cncxx\n/YMC/mo3JRFUxHgkTtkoeokkV3qKAEBHc8B7FB0bByBNNBnZG0VvcSR2ur9V5/gf\nX3A1R1TPvY/y+pyLTUsLf9gGIuu0QzKYm1R4ZhQTlhEhQ+3mHHovqUUCEJI0DkdN\nODxuh2ikRbg8Qi1msG89hP6EnigCufa71k/gsI/JiiMohXYezkXzdptkfCM54Dx/\nS02iK2ybFhl7SIt/TguG/lJFArV+6VSS0chrDSFXwCNclQIDAQABMA0GCSqGSIb3\nDQEBCwUAA4ICAQCRut64/FXtw7Uzw8yx61RvUCchWD2Sa7PZuprQm+vdDnpdouL7\nCOLpidH3Q/1MX7m8N/m/7nF3KyAFGQSlhoYEl8X0gcFh5pfjBmjt8P4ZKtfmF+n7\n+LO8j+VwlvIC3Zl7yM55Dm7uIaFVxEklZ+a4dquGGIFGPhS2WXJKI1tB4Ilz35Yg\nik4EbaLd7XnAAitSAhotPuxVoshRrbSn/kieHY2I6vJtmrX/V9YXPx03DTvtNT4A\nmQaWTkADAJ8a6Yz5pda+yaGJMC//Gd7TgmxpdonJWMfoktdHJ/wyTqveIqVRS9gF\nkwhbRcihQr2QfgxqnQ3XQucYHEk4JsXQcfIKZGWqui7fkxffchJ7PUGrDJR7ptiP\n1Uswnb4dxKtNCVGgqFqhW8dTTX9fGCSQL5hmgD3J4bZSugV/HcnkeKplN8FlbK05\nComEX/sid/iLN9YHS9cd7AKBs8LlnP4cT/2PLdQT/NiMXhJKzLKiwSjc0R6R7bdw\nhuyA13t1HXNYtJbKUZh5p1Cryysh3ZvnxJb7DP5X3vjy6vmQ+KCahB22ShRBM1KP\nD32C6EGDH1wLGRDag7yHY+Fcr3cGl3mZXdCIXVRSso9kRuKQPpK0d2cHaFoHkVJM\nj2ih5mdJ9vPtHT+HL/mk+kAf5UvpwqC4hLLbKiF5W/KUzVGPUNVbRNGfqQ==\n-----END CERTIFICATE-----\n",
|
26
|
+
"internal_key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n"
|
23
27
|
}
|
24
28
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: release_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gitlab
|