summaryrefslogtreecommitdiff
path: root/docs/deployment.rst
blob: ca12e56d46a99bfcc1304d62ddcfd5533c53448b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
===================
Deployment Protocol
===================

------
Wallet
------

.. code-block:: none

  $ cd wallet-webex

  # check dependencies
  $ ./configure

  # edit version and version_name
  $ $EDITOR manifest.json

  $ make package-stable

The built wallet is now ready in `taler-wallet-stable-${version_name}${version}.zip`.

FIXME:  here, we should do some semi-automated testing with selenium, to see
that everything works against `demo.taler.net`.

The package can now be uploaded to https://chrome.google.com/webstore/developer/dashboard

FIXME:  include asset links and descriptions we use in the webstore in this document

FIXME:  include instructions for other app stores

-----------------
Deploying to test
-----------------

1. From a clean home directory, first clone the deployment repository

.. note::
  in case you clean some existing environment, make sure the ``~/.config``
  and other hidden directories are deleted as well.  Make also sure that
  a symlink to /test/shared-data exists before going on with the deployment.

.. code-block:: none
  
  $ git clone /var/git/deployment.git

2. Run the bootstrap script; this will checkout any needed repository

.. code-block:: none
  
  $ deployment/bootstrap-bluegreen test

3. Compile the project

.. code-block:: none
  
  $ source activate
  $ taler-deployment-build

4. Create configuration file

.. code-block:: none

  $ taler-deployment-config-generate

5. Create denomination and signing keys

.. note::
  This step takes care of creating auditor's signature too.

.. code-block:: none

  $ taler-deployment-keyup

6. Sign exchange's /wire response file

.. code-block::

  taler-deployment-config-sign


--------------------
Deploying to stable
--------------------

First, make sure that the deployment *AND* the deployment scripts work on the `test.taler.net` deployment.

For all repositories that have a separate stable branch (currently exchange.git,
merchant.git, merchant-frontends.git, bank.git, landing.git) do:

.. code-block:: none

  $ cd $REPO
  $ git pull origin master stable
  $ git checkout stable

  # option a: resolve conflicts resulting from hotfixes
  $ git merge master
  $ ...

  # option b: force stable to master
  $ git update-ref refs/heads/stable master

  $ git push # possibly with --force

  # continue development
  $ git checkout master


Log into taler.net with the account that is *not* active by looking
at the `sockets` symlink of the `demo` account.

The following instructions wipe out the old deployment completely.

.. code-block:: none

  $ ls -l ~demo/sockets

  [...] sockets -> /home/demo-green/sockets/

In this case, `demo-green` is the active deployment, and `demo-blue` should be updated.
After the update is over, the `/home/demo/sockets` symlink will be pointed to `demo-blue`.

.. code-block:: none

  # Remove all existing files
  $ find $HOME -exec rm -fr {} \;

  $ git clone /var/git/deployment.git
  $ ./deployment/bootstrap-bluegreen demo

  # set environment appropriately
  $ . activate
  $ taler-deployment-build

  # upgrade the database!  this
  # process depends on the specific version

  $ taler-deployment-start

  # look at the logs, verify that everything is okay

Now the symlink can be updated.

----------------------------------------
Deploying to developer personal homepage
----------------------------------------

.. note::
  Specific to the `tripwire` machine.  Ask for a personal Taler
  development environment at taler@gnu.org!

1. From your clean homepage, clone the deployment repository

.. code-block:: none

  $ git clone /var/git/deployment.git

Please, *IGNORE* the message saying to start the database in the following way:
`/usr/lib/postgresql/9.5/bin/pg_ctl -D talerdb -l logfile start`.  This is Postgres
specific and overridden by our method of starting services.

2. Run the bootstrap script; this will checkout any needed repository

.. code-block:: none
  
  $ deployment/bootstrap-standalone

3. Build the project

.. code-block:: none

  $ source activate
  $ taler-deployment-build

4. Generate configuration

.. code-block:: none

  $ taler-deployment-config-generate
  # This will sign exchange's /wire response
  $ taler-deployment-config-sign

5. Generate denomination keys

.. code-block:: none

  # This will also get denomination keys signed by
  # the auditor.
  $ taler-deployment-keyup

6. Start all services

.. note::
  Notify the sysadmin to add the user 'www-data' to your group,
  otherwise nginx won't be able to open your unix domain sockets.

.. code-block:: none

  # NOTE: some services might need an explicit reset of the DB.
  # For example, the exchange might need 'taler-exchange-dbinit -r'
  # to be run before being launched.
  $ taler-deployment-start