synchronised_migration 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9881480f34d86d8a177756df3a12e3ec54d1f6b9cfa80d2847084101749bca5a
4
- data.tar.gz: e79ad9a4ceddcd69a1936789d485c50daa3bbdc95ef74f2052eac8aef08d65b2
3
+ metadata.gz: 178cde6a23ffc12e5074df16e0c8b2f5503ce460727607fc3af824c98a92bce1
4
+ data.tar.gz: 0e3ebd525d0e55ffeabe3565f811ed3ff57ea272d042a3b72386ae6a627ba03c
5
5
  SHA512:
6
- metadata.gz: b921a8a53758ec6a7654c3decd2b86b2e60baf58336ce31a1eaded4cf7a266ad35e1603c2bc81547b94fc4617f7e5175e5bae7e052013c68004c410d6f410263
7
- data.tar.gz: 2f934aebd9d2c5978fe368be30e606622861480ed2fd61d1a422c70d33ad8a391b7d19802743c29c3e16cff9e61972bc80051a3a460928d0f195169ce0c8d0de
6
+ metadata.gz: bc7a499baac225c7f3e11467f84c44eae41a2af3ef6c016b3a8b674fdd177c53930efb86ec5951da2ce5b220fb697ff87faa62ba557a3de14767293a10a71371
7
+ data.tar.gz: 6d07aad5e40d68ac72c240f39875e2686416c1d2c38e1fb7555fe18626a47dbdc510116d51e6c19776ed5c22a3ef4e3bcc77b20b5c3672ed94098768dffdd35c
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "daily"
@@ -0,0 +1,59 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ name: Build
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ bundler-cache: true
18
+ - run: bundle exec rake
19
+
20
+ release:
21
+ needs: build
22
+ name: Release
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - name: Checkout
26
+ uses: actions/checkout@v2
27
+
28
+ - name: Generate Changelog
29
+ run: |
30
+ # Get version from github ref (remove 'refs/tags/' and prefix 'v')
31
+ version="${GITHUB_REF#refs/tags/v}"
32
+ npx changelog-parser CHANGELOG.md | jq -cr ".versions | .[] | select(.version == \"$version\") | .body" > ${{ github.workflow }}-CHANGELOG.txt
33
+
34
+ - name: Release
35
+ uses: softprops/action-gh-release@v1
36
+ with:
37
+ body_path: ${{ github.workflow }}-CHANGELOG.txt
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+
41
+ publish:
42
+ needs: [build, release]
43
+ name: Publish
44
+ runs-on: ubuntu-latest
45
+
46
+ steps:
47
+ - uses: actions/checkout@v2
48
+ - uses: ruby/setup-ruby@v1
49
+
50
+ - name: Publish to RubyGems
51
+ run: |
52
+ mkdir -p $HOME/.gem
53
+ touch $HOME/.gem/credentials
54
+ chmod 0600 $HOME/.gem/credentials
55
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
56
+ gem build *.gemspec
57
+ gem push *.gem
58
+ env:
59
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,16 @@
1
+ name: Build and Test
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ ruby: ["2.6", "2.7", "3.0"]
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v2
12
+ - uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: ${{ matrix.ruby }}
15
+ bundler-cache: true
16
+ - run: bundle exec rake
@@ -1 +1 @@
1
- 2.6.3
1
+ 3.0.0
@@ -1,5 +1,9 @@
1
1
  # Synchronised Migration
2
2
 
3
+ ## 2.2.0
4
+
5
+ - [TT-8617] Update to build with github actions / ruby 3.0
6
+
3
7
  ## 2.1.2
4
8
 
5
9
  * [TT-7511] Use the correct `ex` option for key value expiry times instead of `ttl`
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Synchronised Migration
2
2
 
3
- [![Build Status](https://travis-ci.org/sealink/synchronised-migration-rb.svg?branch=master)](https://travis-ci.org/sealink/synchronised-migration-rb)
3
+ [![Gem Version](https://badge.fury.io/rb/synchronised_migration.svg)](http://badge.fury.io/rb/synchronised_migration)
4
+ [![Build Status](https://github.com/sealink/synchronised-migration-rb/workflows/Build%20and%20Test/badge.svg?branch=master)](https://github.com/sealink/synchronised-migration-rb/actions)
4
5
 
5
6
  This gem makes it possible to deploy multiple instances with data migration
6
7
  simultaneously. It uses Redis to ensure that there will be only one migration
@@ -17,7 +18,7 @@ Docker](https://github.com/sealink/craft-docker) project.
17
18
 
18
19
  Module `SynchronisedMigration` needs to be configured as below.
19
20
 
20
- ```
21
+ ```ruby
21
22
  SynchronisedMigration.configure do |config|
22
23
  config.host = 'example.com'
23
24
  config.port = 6379
@@ -45,6 +46,14 @@ Run this before you launch the application during deployment.
45
46
  $ rake synchronised_migrate:execute
46
47
  ```
47
48
 
48
- ## Testing
49
+ ## Release
50
+
51
+ To publish a new version of this gem the following steps must be taken.
49
52
 
50
- Please refer to `.travis.yml` for testing.
53
+ * Update the version in the following files
54
+ ```
55
+ CHANGELOG.md
56
+ lib/synchronised_migration/version.rb
57
+ ````
58
+ * Create a tag using the format v0.1.0
59
+ * Follow build progress in GitHub actions
data/Rakefile CHANGED
@@ -1,2 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ desc 'Default: run specs.'
4
+ task :default => :spec
5
+
2
6
  require 'rspec/core/rake_task'
7
+
8
+ desc "Run specs"
9
+ RSpec::Core::RakeTask.new do |t|
10
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
11
+ # Put spec opts in a file named .rspec in root
12
+ end
@@ -1,3 +1,3 @@
1
1
  module SynchronisedMigration
2
- VERSION = '2.1.2'
2
+ VERSION = '2.2.0'
3
3
  end
@@ -122,11 +122,10 @@ describe SynchronisedMigration::Main do
122
122
  end
123
123
 
124
124
  context 'when the task crashed' do
125
- before do
126
- allow_any_instance_of(Process::Status).to receive(:success?).and_return(false)
127
- end
128
-
129
125
  it 'marks the failure in Redis' do
126
+ fork { exit 1 }
127
+ Process.wait
128
+
130
129
  expect(result).not_to be_success
131
130
  expect(redis).to have_received(:set).with('migration-failed-bork', 123456789, ex: 3600)
132
131
  expect(redis).not_to have_received(:del)
@@ -138,6 +137,9 @@ describe SynchronisedMigration::Main do
138
137
 
139
138
  context 'in the happy path' do
140
139
  it 'executes the migration successfully' do
140
+ fork { exit 0 }
141
+ Process.wait
142
+
141
143
  expect(result).to be_success
142
144
  expect(redlock).to have_received(:lock!)
143
145
  expect(redis).to have_received(:get).with('migration-failed')
@@ -149,11 +151,10 @@ describe SynchronisedMigration::Main do
149
151
  end
150
152
 
151
153
  context 'when the task crashed' do
152
- before do
153
- allow_any_instance_of(Process::Status).to receive(:success?).and_return(false)
154
- end
155
-
156
154
  it 'marks the failure in Redis' do
155
+ fork { exit 1 }
156
+ Process.wait
157
+
157
158
  expect(result).not_to be_success
158
159
  expect(redis).to have_received(:set).with('migration-failed', 123456789, ex: 3600)
159
160
  expect(redis).not_to have_received(:del)
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ['lib']
18
+ spec.required_ruby_version = '>= 2.6.0'
18
19
 
19
20
  spec.add_dependency 'redlock', '>= 0.2'
20
21
  spec.add_dependency 'redis'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synchronised_migration
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alvin Yim
8
8
  - Stefan Cooper
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-25 00:00:00.000000000 Z
12
+ date: 2021-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redlock
@@ -101,9 +101,11 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - ".github/dependabot.yml"
105
+ - ".github/workflows/release.yml"
106
+ - ".github/workflows/ruby.yml"
104
107
  - ".gitignore"
105
108
  - ".ruby-version"
106
- - ".travis.yml"
107
109
  - CHANGELOG.md
108
110
  - Gemfile
109
111
  - LICENSE
@@ -121,7 +123,7 @@ files:
121
123
  homepage: https://github.com/sealink/synchronised-migration-rb
122
124
  licenses: []
123
125
  metadata: {}
124
- post_install_message:
126
+ post_install_message:
125
127
  rdoc_options: []
126
128
  require_paths:
127
129
  - lib
@@ -129,15 +131,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
131
  requirements:
130
132
  - - ">="
131
133
  - !ruby/object:Gem::Version
132
- version: '0'
134
+ version: 2.6.0
133
135
  required_rubygems_version: !ruby/object:Gem::Requirement
134
136
  requirements:
135
137
  - - ">="
136
138
  - !ruby/object:Gem::Version
137
139
  version: '0'
138
140
  requirements: []
139
- rubygems_version: 3.0.3
140
- signing_key:
141
+ rubygems_version: 3.2.3
142
+ signing_key:
141
143
  specification_version: 4
142
144
  summary: For deploying to multiple instances simultaneously
143
145
  test_files:
@@ -1,10 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4
4
- - 2.5
5
- - 2.6
6
- script: bundle exec rspec
7
- sudo: false
8
- cache: bundler
9
- before_install:
10
- - gem install bundler