Skip to content
This repository has been archived by the owner on Dec 16, 2019. It is now read-only.

Release #301

Merged
merged 610 commits into from
May 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
610 commits
Select commit Hold shift + click to select a range
08cbcd5
Turning off the tests, until Dmytro looks at them
Jan 4, 2018
3306927
Same
Jan 4, 2018
6e3d93a
Locking to version 3.6.14
Jan 5, 2018
5ef5bbf
Using one shovel (ie one connection) to CentralEGA
Jan 5, 2018
e5f2871
Updating the routing keys
Jan 5, 2018
0cd8282
Updating the fake CEGA broker
Jan 5, 2018
82f42fc
No need to use cega-mq. Using rabbitmq:3.6.14-management directly
Jan 5, 2018
228dd0e
Adding output so we can copy-paste in the rabbitmq management
Jan 5, 2018
e2ec29e
checksum.instantiate method was actually used by the crypto module
Jan 5, 2018
f5eaff6
Publishing a message to RabbitMQ using Java, for the tests, not python.
Jan 5, 2018
9ea6b01
verified queue not needed
Jan 5, 2018
92eb709
Travis made it point to HEAD and not the current branch name.
Jan 5, 2018
a44e68f
Using branch name for CHECKOUT but redefining it to TAG for Travis
Jan 5, 2018
bc2e50d
Still commented but adding back the CEGA user/passwd condition
Jan 5, 2018
9638e20
Making Codacy happier
Jan 5, 2018
1d1ecd8
Codacy again...
Jan 8, 2018
adc65a2
Refactor tests.
dtitov Jan 8, 2018
cc34717
Adding the password of CentralEGA, so settings is gone
Jan 8, 2018
193ea47
Matching the docker defs
Jan 8, 2018
c7d0464
Merge branch 'feature/inbox-fuse' of https://github.com/NBISweden/Loc…
Jan 8, 2018
1e7872f
Use umount instead of fusermount in tests. Add aliases for FUSE inbox…
dtitov Jan 8, 2018
4791c51
Use rmdir instead of rm -rf in tests.
dtitov Jan 9, 2018
85e6921
Update message format to CEGA
Jan 9, 2018
1d19f87
Updating CentralEGA messages
Jan 9, 2018
a2e3403
Merge branch 'feature/inbox-fuse' of https://github.com/NBISweden/Loc…
Jan 9, 2018
a6ea3c9
Changing the elixir_id to user_id and hash to checksum
Jan 9, 2018
769ed79
user_id to user
Jan 9, 2018
4d431e5
encrypted_integrity for the inbox message too
Jan 9, 2018
f7fed90
Remove internal_data in case of errors
Jan 9, 2018
5655f8c
Fixing a typo
Jan 9, 2018
7291bb2
Merge pull request #229 from NBISweden/feature/inbox-fuse
juhtornr Jan 9, 2018
d951e5b
PAM sshd
Jan 9, 2018
d3140c8
Use Bouncy Castle (actually JPGPJ wrapper) in tests to encrypt files.
dtitov Jan 10, 2018
e4e82d0
Assign wider permissions to a public key file.
dtitov Jan 10, 2018
5b4778c
Assign wider permissions to a GPG folder.
dtitov Jan 10, 2018
6031623
Assign wider permissions to a GPG folder.
dtitov Jan 10, 2018
8537194
Merge pull request #230 from NBISweden/test/bouncy-castle
viklund Jan 10, 2018
39e6f03
Separating the EGA-SFTP from sshd.
Jan 10, 2018
a45b4d5
Fix two commented out tests.
dtitov Jan 10, 2018
1eeb4d1
Merge pull request #232 from NBISweden/feature/pam
dtitov Jan 10, 2018
5488b64
Use Java to generate RSA keys for SSH connection in tests.
dtitov Jan 10, 2018
e4f8ddc
Assign wider permissions to ${PRIVATE}/cega/users
dtitov Jan 10, 2018
7d91674
Assign wider permissions to ${PRIVATE}/cega/users/{swe1,fin1}
dtitov Jan 10, 2018
832b1e0
Assign wider permissions to ${PRIVATE}/cega/users/{swe1,fin1}
dtitov Jan 10, 2018
3aa7059
Rebase.
dtitov Jan 10, 2018
8b0c6d9
Merge pull request #233 from NBISweden/test/java-rsa
silverdaz Jan 10, 2018
7031fda
Update messages in the exception
Jan 11, 2018
e1bd655
Merge pull request #237 from NBISweden/feature/exceptions
juhtornr Jan 11, 2018
17df24c
Better print for the vault file headers
Jan 11, 2018
570d678
Merge pull request #238 from NBISweden/feature/vault-headers
viklund Jan 11, 2018
5f758b1
Adding some documentation
Jan 16, 2018
4a3b55b
Added the git lfs files back
viklund Jan 17, 2018
1f3dd74
Merge pull request #243 from NBISweden/feature/add-files-back
silverdaz Jan 17, 2018
d3c6aa3
Updating the inbox so that it uses a local cache
Jan 22, 2018
32c0682
No users in database, just files and errors
Jan 22, 2018
1ae2832
No RSA passphrase. Bootstrap adjusted.
Jan 22, 2018
ba8bdfa
Fix yarl unquote problem
Jan 22, 2018
1cd1b8e
Updating the tests to reflect that users are not in db
Jan 22, 2018
8526f16
db -> inbox
Jan 22, 2018
48f5d0a
Removing a test about expiration
Jan 22, 2018
b394d2f
Forcing the centos version to 7.4.1708
Jan 22, 2018
0149124
Not pulling the EGA images from the docker hub
Jan 22, 2018
225be09
Currint the docker images by 30% or so.
Jan 22, 2018
f4db97b
Updating Authentication test.
Jan 22, 2018
7b91bb5
No account expiration. This just means that the user is not in Centra…
Jan 22, 2018
af3bc95
Updating the inbox documentation with configuration settings
Jan 22, 2018
4a9cc59
Adding Dmytro and Maja's comments. Thanks!
Jan 22, 2018
362ccb1
Adding the git clone LocalEGA-auth
Jan 22, 2018
18723fc
A bit too zealous commenting out some db parts.
Jan 22, 2018
050f9e7
Adding the Kibana pic
Jan 22, 2018
07e522c
Cosmetics
Jan 23, 2018
3ab8d09
Text for the loggers
Jan 23, 2018
0cb3517
More cosmetics
Jan 23, 2018
3adc66c
Updating the table
Jan 23, 2018
b47e176
Sleep a bit in order to let Logstash finish initialization and stop c…
dtitov Jan 23, 2018
39c67a1
Including Johan's comments
Jan 23, 2018
d1881fb
Table styling
Jan 23, 2018
06d5353
Table styling again
Jan 23, 2018
8c3da52
Adding title attribute to icons
Jan 23, 2018
72c3647
Merge pull request #246 from NBISweden/docs
viklund Jan 23, 2018
ffc84b6
Merge pull request #245 from NBISweden/feature/user-cache
dtitov Jan 23, 2018
ee19bf3
More on the docs
Jan 23, 2018
f5e8a6f
Making the repo points to LocalEGA-auth@master instead of the no-db b…
Jan 23, 2018
d9776be
For travis, we boot only the containers specified in the variable DOC…
Jan 23, 2018
1532eb6
Hiding dependencies for docker
Jan 23, 2018
b9a4ff3
Re-organizing the docker images, to gain build speed.
Jan 23, 2018
83d4855
Worker and Vault use `nc` in their entrypoint for the moment.
Jan 23, 2018
5140e3d
Merge pull request #247 from NBISweden/hotfix/branch
dtitov Jan 23, 2018
05337cf
Adding help to the makefile
Jan 23, 2018
b68ed02
bootstrap and private should be PHONY
Jan 23, 2018
2c9fbb6
Updating the readme with a RTD link
Jan 23, 2018
a8bb23a
Removing obsolete DB functions from the doc
Jan 23, 2018
144d33e
Merge pull request #248 from NBISweden/hotfix/branch
dtitov Jan 23, 2018
5fbc638
Change scenarios numeration naming and fix indentation.
dtitov Jan 24, 2018
09d3a08
Merge pull request #249 from NBISweden/test/renamings
viklund Jan 24, 2018
781fbeb
No need for the CEGA_PASSWORD. Cleaning up.
Jan 24, 2018
deb4593
Merge pull request #250 from NBISweden/cleanup
juhtornr Jan 24, 2018
cdcdf3c
Parsing a few packets
Feb 11, 2018
10ab5c8
Remove NBIS
nicjar Feb 13, 2018
36080ac
Adressing NBISweden/LocalEGA#239 and NBISweden/LocalEGA#252
blankdots Feb 14, 2018
a4a9a85
Automate docker network create/rm.
blankdots Feb 14, 2018
c8ff850
Makefile docker network create/rm and travis remove network create.
blankdots Feb 14, 2018
891ee36
Adding the compose yml files into the bootstrap script.
Feb 14, 2018
22130be
Removing the DATA path, and making the env_files and
Feb 14, 2018
81de9f4
Adding compose file folder configs and new parameter for testing.
blankdots Feb 16, 2018
5d4ce91
travis creates docker network
blankdots Feb 16, 2018
1e84b80
travis can only create docker networks like this
blankdots Feb 16, 2018
a33d0d9
Comment out the ELK settings.
blankdots Feb 16, 2018
617491b
Merge pull request #254 from blankdots/dev
silverdaz Feb 16, 2018
0dc32f4
This can now decrypt the test file, given a test key and a passphrase.
Feb 17, 2018
af2ce2a
Progress on recursion and streaming
Feb 21, 2018
b241324
Adding a script entrypoint and moving code around
Feb 22, 2018
e6d1b49
Adding cryptography in requirement
Feb 22, 2018
ad71776
Fixing the issues with the cleardata buffer
Feb 22, 2018
5a39a3c
Using generators. First step towards streaming
Feb 23, 2018
625368f
Using generators to process data stream
Feb 26, 2018
d96a7b6
Streaming solution for PGP
Feb 28, 2018
cf3d017
Updating unlock for private key to only return the material
Feb 28, 2018
2349fe1
Updating the consumer generator and changing the loglevel to CRITICAL
Feb 28, 2018
b986534
Unlock return 2 bytes object, for the public/private key material
Feb 28, 2018
f7e3405
NBISweden/LocalEGA#257 basic keyserver with caching
blankdots Feb 28, 2018
c024710
new cache mechanism
blankdots Feb 28, 2018
393f363
NBISweden/LocalEGA#259 caching and unlock request
blankdots Mar 1, 2018
cf502e5
NBISweden/LocalEGA#259 check ttl and docker image
blankdots Mar 2, 2018
754049a
NBISweden/LocalEGA#259 fix for ttl
blankdots Mar 2, 2018
214b821
Parsing a few packets
Feb 11, 2018
26b89bb
This can now decrypt the test file, given a test key and a passphrase.
Feb 17, 2018
7871a73
Progress on recursion and streaming
Feb 21, 2018
2ee0337
Adding a script entrypoint and moving code around
Feb 22, 2018
cf2fa1a
Adding cryptography in requirement
Feb 22, 2018
7454465
Fixing the issues with the cleardata buffer
Feb 22, 2018
6b6275a
Using generators. First step towards streaming
Feb 23, 2018
c2b6f55
Using generators to process data stream
Feb 26, 2018
b7d7eb3
Streaming solution for PGP
Feb 28, 2018
c727986
Updating unlock for private key to only return the material
Feb 28, 2018
00a014f
Updating the consumer generator and changing the loglevel to CRITICAL
Feb 28, 2018
5ca8c89
Unlock return 2 bytes object, for the public/private key material
Feb 28, 2018
538fb2c
Adding docstrings documentation
Feb 28, 2018
647c445
Updating the gpg_cmd with our python pgp tool
Mar 2, 2018
6bb67ee
Merge remote-tracking branch 'origin/feature/pgp-keyserver' into feat…
Mar 2, 2018
965b61e
keys back in bootstrap
Mar 2, 2018
97dd968
Ditching GnuPG.
Mar 2, 2018
bf2fdc5
NBISweden/LocalEGA#259 new keyserver
blankdots Mar 2, 2018
9568df4
NBISweden/LocalEGA#259 fallback, fixed syntax
blankdots Mar 2, 2018
bf3ca12
Merge remote-tracking branch 'origin/feature/pgp-ks' into feature/pgp
Mar 2, 2018
0ec224f
NBISweden/LocalEGA#259 fix typos and addressing comments
blankdots Mar 2, 2018
e6fae2d
Merge remote-tracking branch 'origin/feature/pgp-ks' into feature/pgp
Mar 2, 2018
39bc946
Adjusted the ingestion workers with the keyserver routes.
Mar 2, 2018
fab8922
Making the ingestion worker ask the PGP private key to the keyserver
Mar 2, 2018
9f1994c
Removed the unnecessary entrypoint script for the keyserver.
Mar 2, 2018
b013481
Removing the template for frontend and socket proxy/forwarder.
Mar 2, 2018
78624a0
Updating the hard-coded value in some tests.
Mar 2, 2018
abd182d
Chaning permissions on the PGP public key so that Travis can access it
Mar 2, 2018
8640745
No gnupg bin files anymore
Mar 2, 2018
1e366fa
cleanup
Mar 2, 2018
e848b8d
Making setup.py ALSO (!!!!!) install lega.openpgp
Mar 2, 2018
54629ba
Adding more debug output to be logged on the keyserver
Mar 2, 2018
e943ad5
Fixing the keyserver port to 443 (https)
Mar 2, 2018
b4f1cb0
Catching when the key is not found and making the PGP keyID uppercase…
Mar 2, 2018
7cf0736
Reshaping a bit the decrypt code
Mar 2, 2018
06e66d1
Removed gnupg folder from the config.properties
Mar 2, 2018
e6b1b40
Moving the generate_pgp_key.py away to extras. Normally, we won't nee…
Mar 5, 2018
87b1152
Removed a message from the log
Mar 5, 2018
36652b3
Moving the generate py.... Fo'Real
Mar 5, 2018
a1050f2
No bootstrap image is needed
Mar 5, 2018
4202e5e
Updating the inbox with the cache system
Mar 5, 2018
e8f9b08
aiohttp is updated so server needed it too
Mar 5, 2018
de0cd72
Ditching GnuPG
Mar 5, 2018
fe28acb
No fake Cega-MQ. Using the real CentralEGA one.
Mar 5, 2018
44107aa
Added a function to generate PGP keys, and generate just calls it
Mar 5, 2018
f14ff96
pip install with requirements
Mar 5, 2018
49b244e
Removing socket dependency from ega-ingest systemd unit
Mar 5, 2018
9588014
psycopg2 version typo
Mar 5, 2018
9951881
NBISweden/LocalEGA#259 keyserver adapted to support multiple keys and…
blankdots Mar 5, 2018
7f61510
Misc updates
Mar 5, 2018
947b046
NBISweden/LocalEGA#259 fixed typos and refactored to new .conf file; …
blankdots Mar 5, 2018
3b4efef
NBISweden/LocalEGA#259 addressing comments
blankdots Mar 6, 2018
a5e0beb
NBISweden/LocalEGA#259 parse Defaults properly
blankdots Mar 6, 2018
12ba3b6
Update on the parser to handle compression packet of given size
Mar 6, 2018
cb50971
Merge remote-tracking branch 'origin/feature/pgp-keyserver' into feat…
Mar 6, 2018
4ba633e
Adjusting the bootstrap script to match the keyserver endpoints
Mar 6, 2018
2837b45
Not using the install_package for pip install git+https://LocalEGA
Mar 6, 2018
c3c5389
Moving nc to common
Mar 6, 2018
2e02ece
Encrypting with PGPy (instead of GnuPG) a quite small file.
Mar 6, 2018
a405e1a
Moving to alpine based image
blankdots Mar 7, 2018
12db24e
Lazy logging
Mar 7, 2018
7ba20f3
travis dry run, with debug
blankdots Mar 7, 2018
82dc071
travis dry run install lega module
blankdots Mar 7, 2018
314280c
travis dry run, install package before bootstrap
blankdots Mar 7, 2018
e921928
clean up Dockerfiles
blankdots Mar 7, 2018
4504bf9
python3.6 -> python
Mar 7, 2018
7eaba81
Merge remote-tracking branch 'origin/feature/pgp-alpine' into feature…
Mar 7, 2018
a91c8b5
Making one common image instead of multiple ones
Mar 7, 2018
c655000
Timing delay?
Mar 7, 2018
3d68a9a
Removing debug code and unbuffered flag
Mar 7, 2018
117b4cf
Fixing typos
Mar 8, 2018
256a455
Making the keyserver port configurable
Mar 8, 2018
f2db3f2
Including review comments from Johan.
Mar 8, 2018
cc737ae
Adding a general description for how a packet is structured
Mar 8, 2018
d593f3c
Renaming the read_X functions
Mar 8, 2018
bd31d95
Bootstrapping back in a container, and not on the host
Mar 8, 2018
6307220
Updating some permissions.
Mar 8, 2018
240f025
Ingestigating travis issue
Mar 8, 2018
a6d6d9a
Making travis user own the private directory
Mar 8, 2018
9ad747b
Adding back the fake Message Broker for Central EGA
Mar 8, 2018
fd0d6bf
Trying 2 big images (base and inbox) containing everything.
Mar 8, 2018
5226e0b
switch back to common
blankdots Mar 9, 2018
d6055c4
Merge pull request #261 from NBISweden/feature/pgp
blankdots Mar 9, 2018
eec0e8d
Retrieving public key instead of private for RSA and adding generate/…
blankdots Mar 12, 2018
5bce872
Turning off SSL and adjusting the keyserver answers with hex-based di…
Mar 12, 2018
b337b85
keyserver new version and fix for DSA/ELG keys
blankdots Mar 13, 2018
70fe600
documentation, healthcheck endpoint for keyserver and small fixes
blankdots Mar 13, 2018
1979b96
Handling EGA file IDs
Mar 13, 2018
ce807ef
Updating the testsuite with the stable_id
Mar 13, 2018
d50ce3c
Merge pull request #263 from NBISweden/feature/keyserver
blankdots Mar 14, 2018
eb72154
NBISweden/LocalEGA#262 keyserver with eureka.
blankdots Mar 15, 2018
c4acd89
Removing pycryptodome dependency
Mar 15, 2018
8d40e5e
Merge remote-tracking branch 'origin/feature/keyserver' into feature/rsa
Mar 15, 2018
b03cd42
NBISweden/LocalEGA#262 eureka logs and small fixes
blankdots Mar 15, 2018
d59a007
NBISweden/LocalEGA#262 adding local eureka test server
blankdots Mar 15, 2018
fa92428
Creating network and bootstrap parts for (a fake) Eureka
Mar 15, 2018
333ca40
Merge branch 'feature/keyserver' into feature/rsa
Mar 15, 2018
2e8d396
Not using openjdk, but faking it... fo'real
Mar 15, 2018
64a8f68
Merge branch 'feature/keyserver' into feature/rsa
Mar 15, 2018
18b9760
Making Eureka a CentralEGA component
Mar 15, 2018
794f0ad
Merge branch 'feature/keyserver' into feature/rsa
Mar 15, 2018
55c702a
Removing pycrytodome and making the keyserver unlock the rsa key
Mar 15, 2018
8c5805c
NBISweden/LocalEGA#262 fake cega-eureka added to stack.
blankdots Mar 16, 2018
d6d098b
NBISweden/LocalEGA#262 quick retry loop.
blankdots Mar 16, 2018
26fee1d
Merge branch 'feature/rsa' into feature/keyserver
blankdots Mar 16, 2018
8d1a07a
fix tests and empty passphrase for RSA will default to None.
blankdots Mar 16, 2018
3affc33
Rephrasing a few lines
Mar 16, 2018
7adb0e7
Commenting out the await session.close() and see if we crash
Mar 16, 2018
362d26b
Removing some unnecessary port mappings
Mar 16, 2018
99a50c2
Adding /temp/rsa/{key_id} to retrieve unprotected RSA keyfile content.
Mar 16, 2018
af2a265
Blääää....forgot to put back the keyserver entrypoint
Mar 16, 2018
e6ad6e9
Fixing a bug introduced in cega-users server, because we hurried
Mar 16, 2018
72b9f5d
Merge pull request #264 from NBISweden/feature/keyserver
silverdaz Mar 16, 2018
ede38e8
Returning a JSON with filepath, filesize, checksum and algorithm
Mar 19, 2018
b6d755d
Merge pull request #265 from NBISweden/feature/file-size
dtitov Mar 19, 2018
075e3d9
NBISweden/LocalEGA#268 tox tests; moving integ tests in deploy and
blankdots Mar 29, 2018
6324e50
Moving tests to docker directory
Mar 31, 2018
1bae3a2
Adding some openpgp unit tests
Mar 31, 2018
72e78a3
Merge pull request #269 from NBISweden/feature/split-deploy
silverdaz Mar 31, 2018
7b9c51c
output test names
Apr 1, 2018
e1897ac
Merge pull request #271 from NBISweden/feature/testnames
silverdaz Apr 6, 2018
674be5d
Fixing a typo for Elgammal key material
Apr 6, 2018
1afd45c
Merge pull request #274 from NBISweden/hotfix/elg
silverdaz Apr 6, 2018
bcff135
readthedocs file missing and docs build fails
blankdots Apr 12, 2018
98fe3d1
Merge pull request #276 from NBISweden/hotfix/readthedocs
silverdaz Apr 12, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .filebeat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
filebeat:
prospectors:
-
paths:
- /home/travis/build/NBISweden/LocalEGA/tests/console.log
input_type: log
multiline:
pattern: '^\['
negate: true
match: after
output:
logstash:
hosts: ["130.239.81.80:5600"]
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.rpm filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text
53 changes: 1 addition & 52 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
.DS_Store
tmp/
private/
loggers/
!src/lega/conf/loggers
tests/
storage

# =====================================
# Byte-compiled / optimized / DLL files
Expand Down Expand Up @@ -69,35 +65,14 @@ nosetests.xml
coverage.xml
*,cover
.hypothesis/
.pytest_cache

# =====================================
# Translations
# =====================================
*.mo
*.pot

# =====================================
# Django stuff:
# =====================================
*.log
local_settings.py

# =====================================
# Flask stuff:
# =====================================
instance/
.webassets-cache

# =====================================
# Scrapy stuff:
# =====================================
.scrapy

# =====================================
# Sphinx documentation
# =====================================
docs/_build/

# =====================================
# PyBuilder
# =====================================
Expand All @@ -112,29 +87,3 @@ target/
# pyenv
# =====================================
.python-version

# =====================================
# celery beat schedule file
# =====================================
celerybeat-schedule

# =====================================
# dotenv
# =====================================
.env

# =====================================
# virtualenv
# =====================================
venv/
ENV/

# =====================================
# Spyder project settings
# =====================================
.spyderproject

# =====================================
# Rope project settings
# =====================================
.ropeproject
2 changes: 2 additions & 0 deletions .snyk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
language-settings:
python: "3.6"
42 changes: 42 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
language: python

python: 3.6

services: docker

# command to install dependencies

stages:
- name: unit_tests
if: type IN (push, pull_request)
- name: integration_tests
if: type IN (pull_request)

jobs:
include:
- stage: unit_tests
python: 3.6
before_script:
- pip install tox-travis
# command to run tests
script: tox
- stage: integration_tests
before_script:
# https://elk-docker.readthedocs.io/#es-not-starting-max-map-count
# mostly used by ELK stack; Solving issue #252
# - sudo sysctl -w vm.max_map_count=262144
- cd deployments/docker
- make bootstrap
- sudo chown -R travis private
- docker network create cega
- docker-compose up -d ${DOCKER_CONTAINERS}
- docker-compose ps
script:
- sleep 10
- cd tests
- mvn test -B

notifications:
email: false
slack:
secure: eUyEWWvrFbzW+j+WKIOrHm7zeJ+6+o/WmI5cp1UYsOT9emxGE4kzW057cG9EV+sgKUdoYP1zSfCH0TLSOjY7otyqccqZH5WxDtiBSEXpkA8ID8jzQnX1VZWFn1vK+gWpER87VdLonVGt4db1lqE3Gm/uCbEqzrmfYjE1Hrk4PM8FfLQfD3+YBPUnWGSZKAPmdHAKh7IF9VQ6f1zaspijp/Sxa7Dk9F+Z4o2nsZ1woSyOVAwWLJhkvEafyEFfb/9tPMF1wtoXlLEzV1JDRzyjzbLGXQcpo6+Qx3+v7w6eRbriifOq2tByBfeI+RlWytwOgb+B/mfN0uFPbdg/Bgr//NMDrqwCnFQs7A2Dj287mQZI4YpRvh4Cneu3ReVGQKd9SJq28BliwXBBv3xyeFfGEbBOMNKb0VCsNjRuWITncf/qx3Vxn13VAYxcdA9EZpa1UzT6V94nlbLUq3twFKBJiDmpraYnI+JGFCZ32Xh8bySNqbEBe7TnqAG015c4pKKx++3IQJePfSPbRKzwWNAM5yG7RuVmud5fxfN+KdQz7vKfjOeaHKG4PScfhRT0zthtgmPG+m5eCprIbdFlacU3UyobLtxZd8wI9qJnGGvB3bHOsuaqpS2ymDWbd/n1aeryrcTkS/gPuwMvTs6S32pRf/orKqyLfnSZPeTcOevbzHw=
173 changes: 173 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
.. role:: bolditalic
:class: bolditalic

=======================
Contributing guidelines
=======================

We thank you in advance |thumbup| |tada| for taking the time to
contribute, whether with *code* or with *ideas*, to the Local EGA
project.

------------------------
AGILE project management
------------------------

We use *Zenhub*, the Agile project management within Github.

You should first `install it`_ if you want to contribute or just follow the project progress.
You can also use the `Zenhub app`_ if you wish.

In short, the `AGILE method`_ helps developers organize themselves:

* They decide about the tasks (not the managers)
* Main Tasks should be divided into smaller manageable ones. The big
tasks are called *Epics*.
* We have a given period (called Sprint) to work on a chosen
task. Here, a Sprint spans across 2 weeks.
* We review the work done at the end of the Sprint, closing issues or
pushing them into the next Sprint. Ideally, they are sub-divided in
case they encounter obstacles.
* We have a short meeting every weekday at 9:30 AM. We call it a
*standup* and we use it to keep everyone on point, and identify
quickly blockers. It's not a lengthy discussion. We ask:

- What did you get done yesterday (or last week, last month, etc.)?
- What are you working on now?
- What isn’t going well, and on what could you use help?

---------
Procedure
---------

1. Create an issue on Github, and talk to the team members on the NBIS
local-ega Slack channel. You can alternatively pick one already
created.

.. note::
Contact `Jonas Hagberg`_ to request access if you are not part of that channel already.


2. Assign yourself to that issue.

#. Discussions on how to proceed about that issue take place in the
comment section on that issue, beforehand.

The keyword here is *beforehand*. It is usually a good idea to talk
about it first. Somebody might have already some pieces in place,
we avoid unnecessary work duplication and a waste of time and
effort.

#. Work on it (on a fork, or on a separate branch) as you wish. That's
what ``git`` is good for. This GitHub repository follows
the `coding guidelines from NBIS`_.

Name your branch as you wish and prefix the name with:

* ``feature/`` if it is a code feature
* ``hotfix/`` if you are fixing an urgent bug

Use comments in your code, choose variable and function names that
clearly show what you intend to implement.

Use `git rebase -i`_ in
order to rewrite your history, and have meaningful commits. That
way, we avoid the 'Typo', 'Work In Progress (WIP)', or
'Oops...forgot this or that' commits.

Limit the first line of your git commits to 72 characters or less.


#. Create a Pull Request (PR), so that your code is reviewed by the
admins on this repository.

That PR should be connected to the issue you are working on.
Moreover, the PR:

- should use ``Estimate=1``,
- should be connected to:

* an ``Epic``,
* a ``Milestone`` and
* a ``User story``
* ... or several.

N.B: Pull requests are done to the ``dev`` branch. PRs to ``master`` are rejected.

#. Selecting a review goes as follows: Pick one *main* reviewer. It
is usually one that you had discussions with, and is somehow
connected to that issue. If this is not the case, pick several reviewers.

Note that, in turn, the main reviewer might ask another reviewer
for help. The approval of all reviewers is compulsory in order to
merge the PR. Moreover, the main reviewer is the one merging the
PR, not you.

Find more information on the `NBIS reviewing guidelines`_.


#. It is possible that your PR requires changes (because it creates
conflicts, doesn't pass the integrated tests or because some parts
should be rewritten in a cleaner manner, or because it does not
follow the standards, or you're requesting the wrong branch to pull
your code, etc...) In that case, a reviewer will request changes
and describe them in the comment section of the PR.

You then update your branch with new commits. We will see the PR
changes faster if you ping the reviewer in the slack channel.

Note that the comments *in the PR* are not used to discuss the
*how* and *why* of that issue. These discussions are not about the
issue itself but about *a solution* to that issue.

Recall that discussions about the issue are good and prevent
duplicated or wasted efforts, but they take place in the comment
section of the related issue (see point 4), not in the PR.

Essentially, we don't want to open discussions when the work is
done, and there is no recourse, such that it's either accept or
reject. We think we can do better than that, and introduce a finer
grained acceptance, by involving *beforehand* discussions so that
everyone is on point.



-------------------
Did you find a bug?
-------------------

* Ensure that the bug was not already reported by `searching under Issues`_.

* Do :bolditalic:`not` file it as a plain GitHub issue (we use the
issue system for our internal tasks (see Zenhub)). If you're unable
to find an (open) issue addressing the problem, `open a new one`_.
Be sure to prefix the issue title with **[BUG]** and to include:

- a *clear* description,
- as much relevant information as possible, and
- a *code sample* or an (executable) *test case* demonstrating the expected behaviour that is not occurring.

* If possible, use the following `template to report a bug`_.

.. todo:: Make that template


----

| Thanks again,
| /NBIS System Developers

.. _Zenhub: https://www.zenhub.com
.. _install it: https://www.zenhub.com/extension
.. _Zenhub app: https://app.zenhub.com
.. _AGILE method: https://www.zenhub.com/blog/how-to-use-github-agile-project-management
.. _Jonas Hagberg: https://nbis.se/about/staff/jonas-hagberg/
.. _coding guidelines from NBIS: https://github.com/NBISweden/development-guidelines
.. _git rebase -i: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
.. _NBIS reviewing guidelines: https://github.com/NBISweden/development-guidelines#how-we-do-code-reviews
.. _searching under Issues: https://github.com/NBISweden/LocalEGA/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Abug%20%5BBUG%5D%20in%3Atitle
.. _open a new one: https://github.com/NBISweden/LocalEGA/issues/new?title=%5BBUG%5D
.. _template to report a bug: todo
.. |tada| unicode:: U+1f389
.. |thumbup| unicode:: U+1f44d

Loading