Development Workflow¶
DataSpace and the Open Access Repository¶
When collaborating upon an update or repairing a bug within the code bases for DataSpace and the OAR, there exists a workflow for deploying, testing, and releasing updates for the code bases.
For more details on the dev workflow, see Atmire’s DSpace Documentation.
DEV
Builds (dev
Environment)¶
Currently, there are two DEV
branches for the DSpace implementations:
dataspace-client-DEV
oar-client-DEV
Both of these are deployed to the dev
environments:
From the shell on one’s local environment, a typical approach for beginning new sets of improvements is the following:
ssh -J pulsys@$PROXY dspace@$DEV_HOST
dspace@$DEV_HOST:~$ cd src/
dspace@$DEV_HOST:~$ git checkout dataspace-client-DEV
dspace@$DEV_HOST:~$ git pull --rebase origin dataspace-client-DEV
dspace@$DEV_HOST:~$ git checkout -b dataspace-DEV-my-new-branch
At this point, one may then freely modify the files on the server using vim
or emacs
. Alternatively, one may also create and push to this branch within their local development environment.
In order to preview the state of a build, one then invokes the following:
dspace@$DEV_HOST:~$ dsbounce
This command triggers a rebuild of the DataSpace or OAR code base on the server environment. One must rebuild using dsbounce
for every change which is introduced into the code base before the updated changes can be viewed in one’s web browser.
Once one has finished the changes on the feature branch, one should git push
to the Atmire GitLab repository. Further one should also perform the following for later testing in the staging
environment:
dspace@$DEV_HOST:~$ git checkout -b dataspace-TEST-my-new-branch
This should also be pushed using git push
.
One should then look to offer a Merge Request
between the new feature branch (dataspace-DEV-my-new-branch
) and either the base dataspace-client-DEV
or oar-client-DEV
branch. After creating the Merge Request
, another member of the DSpace contributors may be requested to review and merge the Merge Request
. Note, please do not create a Merge Request
for dataspace-TEST-my-new-branch
. This must remain unmerged until the next phase of steps.
TEST
Builds (staging
Environment)¶
Currently, there are two TEST
branches for the DSpace implementations:
dataspace-client-TEST
oar-client-TEST
Both of these are deployed to the staging
environments:
Unlike the dev
environments, each of these deployments have their databases in parity with those in the production (publicly accessible) environment. Hence, this is more well-suited for testing against entire Collections, Communities, or set of user accounts.
From the shell on one’s local environment, one then follows a similar approach to what was undertaken previously:
ssh -J pulsys@$PROXY dspace@$STAGING_HOST
dspace@$STAGING_HOST:~$ cd src/
dspace@$STAGING_HOST:~$ git checkout dataspace-client-TEST
dspace@$STAGING_HOST:~$ git pull --rebase origin dataspace-client-TEST
dspace@$STAGING_HOST:~$ git checkout dataspace-TEST-my-new-branch
dspace@$STAGING_HOST:~$ git rebase dataspace-client-TEST
As the dataspace-client-DEV
/oar-client-DEV
and dataspace-client-TEST
/oar-client-TEST
branches are kept in synchronization by Atmire on a regular basis, this is perhaps the most straightforward when testing the newly-merged branch within the staging
environment. One must, as before, again use dsbounce
to rebuild the code base and view the updates in the browser.
Once all testing has been undertaken in the staging
environment, one must, as similar to before, perform the following:
dspace@$STAGING_HOST:~$ git checkout -b dataspace-prod-my-new-branch
Following a git push
, one may then create a new Merge Request
for dataspace-TEST-my-new-branch
using dataspace-client-TEST
as the base branch. One should please request a review from another team member (or, a member of Atmire).
prod
Updates (Production Environment)¶
The production environment contains the publicly-accessible deployments for DSpace:
dataspace-prod
oar-prod
Of which both deployed to these URLs:
Unlike with the previous phases, one must only git rebase
and git push
outside of remote server environments. One may please address this with the following:
user@localhost:~$ git checkout dataspace-prod
user@localhost:~$ git pull --rebase origin dataspace-prod
user@localhost:~$ git checkout dataspace-prod-my-new-branch
user@localhost:~$ git rebase dataspace-prod
Following this, one should issue a git push
, and create a new Merge Request
using dataspace-prod
as the base branch. One should request a review from a member of Atmire for this Merge Request
. Following the successful merging of this, one must then contact both Atmire and our DevOps Engineer of the Operations Team in order to schedule a production update.
After merging, tag the dataspace-prod branch with the date of the deploy, with syntax: dataspace-production-20201118. If no more work is expected on the branch, delete it locally and on the git server.