travis_github_deployer 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -20,23 +20,25 @@ You can set up these environment variables in a secure way using the travis gem,
20
20
  {% highlight bash %}
21
21
  $ gem install travis
22
22
  $ cd <name of your repository>
23
- $ curl -u <your username> -d '{"scopes":["public_repo"],"note":"Travis CI deployer"}' https://api.github.com/authorizations
24
- $ travis encrypt 'GIT_NAME="<your name>" GIT_EMAIL=<your email> GH_TOKEN=<your token>' --add
23
+ $ curl -u <your username> -d '{"scopes":["public_repo"],"note":"Travis CI deployer"}' \
24
+ https://api.github.com/authorizations
25
+ $ travis encrypt 'GIT_NAME="<your name>" GIT_EMAIL=<your email> \
26
+ GH_TOKEN=<your token>' --add
25
27
  {% endhighlight %}
26
28
 
27
29
  ### How does this work?
28
30
 
29
31
  The following command:
30
32
 
31
- {% highlight bash %}
33
+ ```bash
32
34
  $ curl -u <your username> -d '{"scopes":["public_repo"],"note":"Travis CI deployer"}' https://api.github.com/authorizations
33
- {% endhighlight %}
35
+ ```
34
36
 
35
37
  This will get an authentication token. With it, Travis CI can commit under your name. So be careful with it. Then with the following command:
36
38
 
37
- {% highlight bash %}
39
+ ```bash
38
40
  $ travis encrypt 'GIT_NAME="<your name>" GIT_EMAIL=<your email> GH_TOKEN=<your token>' --add
39
- {% endhighlight %}
41
+ ```
40
42
 
41
43
  This will take the taken and add it to a 'secure' section in your travis.yml. The Travis Github Deployer will grab it from that section and use it to push up the changes to your repository
42
44
 
@@ -46,22 +48,38 @@ The Travis Github Deployer uses one config file: ".travis_github_deployer"
46
48
 
47
49
  A typical file looks like this:
48
50
 
49
- {% highlight yaml %}
50
-
51
+ ```yml
51
52
  destination_repository: https://github.com/basvodde/travis_github_deployer.git
52
53
 
53
54
  files_to_deploy:
54
55
  source_dir/source_file: destination_dir/destination_file
55
56
  another_file: another_dir/new_name
56
57
 
57
- {% endhighlight %}
58
+ ```
58
59
 
59
60
  This yaml file configures the repository to push to to be travis_github_deployer.git and it will copy 2 files from the build into the repository: source_dir/source_file and another_file. It will copy them to destination: destination_dir/destination_file and another_dir/new_name.
60
61
 
61
62
  ## Running Travis Github Deployer
62
63
 
64
+ Then... running the travis_github_deployer is all you need to do, that is, after installing the gem:
65
+
66
+ ```bash
67
+ $ gem install travis_github_deployer
68
+ $ travis_github_deployer
69
+ ```
70
+
71
+ By default, the deployer will check whether there is a pull request or not and skip deploying on a pull request
63
72
 
73
+ # Contributions
64
74
 
75
+ At the time I write this README, the project is at a very initial stage and just written to get something of myself to work. However, I've thought about more improvements...
65
76
 
77
+ * Support for putting configuration inside the .travis.yml instead
78
+ * Support for passing the configuration to the script as parameter
79
+ * Support for committing in the same repository as was checked out by travis CI (no need to clone)
80
+ * Support for wildcards on files
81
+ * Some integration tests
82
+ * More
66
83
 
84
+ Contributions are more than welcome, please send your pull requests. Do remember, code is test-driven and no code will be accepted without tests...
67
85
 
@@ -25,6 +25,11 @@ class TravisGithubDeployer
25
25
  ## Deployment
26
26
 
27
27
  def deploy
28
+ if (environment_variable_value('TRAVIS_PULL_REQUEST') != "false")
29
+ puts "In pull request and won't be deploying"
30
+ return
31
+ end
32
+
28
33
  load_configuration
29
34
  clone_destination_repository
30
35
  change_current_directory_to_cloned_repository
@@ -77,7 +82,7 @@ class TravisGithubDeployer
77
82
  value
78
83
  end
79
84
 
80
- def copy_files_to_deployment_repository
85
+ def copy_files_in_destination_repository
81
86
 
82
87
  files_to_deploy.each { |source_location, destination_location|
83
88
  source = Pathname.new(source_location)
@@ -1,4 +1,4 @@
1
1
 
2
2
  module TravisGithubDeployerVersion
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
@@ -11,6 +11,7 @@ describe "travis github deployer" do
11
11
  end
12
12
 
13
13
  it "can deploy to an destination repository" do
14
+ ENV['TRAVIS_PULL_REQUEST']="false"
14
15
  subject.should_receive(:load_configuration)
15
16
  subject.should_receive(:clone_destination_repository)
16
17
  subject.should_receive(:change_current_directory_to_cloned_repository)
@@ -20,6 +21,13 @@ describe "travis github deployer" do
20
21
  subject.deploy
21
22
  end
22
23
 
24
+ it "will not deploy on a pull request" do
25
+ ENV['TRAVIS_PULL_REQUEST']="10"
26
+ subject.should_not_receive(:load_configuration)
27
+ subject.should_receive(:puts).with("In pull request and won't be deploying")
28
+ subject.deploy
29
+ end
30
+
23
31
  context "Prepare repository for being able to commit" do
24
32
 
25
33
  it "can clone the destination repository" do
@@ -77,14 +85,14 @@ describe "travis github deployer" do
77
85
  it "should be able to copy a file from the root of the source repository to the root of the destination reportistory" do
78
86
  subject.should_receive(:files_to_deploy).and_return( { "sourcefile" => ""})
79
87
  FileUtils.should_receive(:copy).with(Pathname.new("sourcefile"), Pathname.new("github_pages/sourcefile"))
80
- subject.copy_files_to_deployment_repository
88
+ subject.copy_files_in_destination_repository
81
89
  end
82
90
 
83
91
  it "Should be able to copy multiple files" do
84
92
  subject.should_receive(:files_to_deploy).and_return({ "dir/onefile" => "destonefile", "twofile" => "dir/desttwofile"})
85
93
  FileUtils.should_receive(:copy).with(Pathname.new("dir/onefile"), Pathname.new("github_pages/destonefile"))
86
94
  FileUtils.should_receive(:copy).with(Pathname.new("twofile"), Pathname.new("github_pages/dir/desttwofile"))
87
- subject.copy_files_to_deployment_repository
95
+ subject.copy_files_in_destination_repository
88
96
  end
89
97
  end
90
98
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: travis_github_deployer
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Bas Vodde