First there is a need to create a name for the project which will be its url subdomain i.e. for project name 'myproject' - myproject.cse.huji.ac.il
The project is managed by an actual single user who is the developer in charge.
Additional webserver user will run the web services CSE system will create a user for the webserver to which only cs system can use for security reasons; For each project there will be a group. This group will have all the developers for this projects + the webserver user.
User: pr_<project_name>
Group: pr_<project_name>
The main folder will be the lab/project main folder in which there will be a folder called webserver. Under the webserver folder there will be folder for each environment. Although not all environment will be used during the development phase the file tree is still a must.
For projects which contains scripts for the projects which includes scripts other than web
Root project folder
/cs/labs/<researcher_cs_login>/
project group permissions
/projects/<projectname>
Every project will have three environments for production, testing and development if needed
/projects/<projectname>/
[production | release | develop]
webserver/# developer allowed to git pull + write
data/ ## web server user + group allowed to write
logs/ ## web server user + group allowed to write
[ slurp/ ## slurp scripts (if required)]
/projects/<projectname>/share
- used for share info
- project group permissions
<project_name>.cs.huji.ac.il (git branch master)
<project_name>.release.cs.huji.ac.il (used to be testing, git branch release)
<project_name>.develop.cs.huji.ac.il (used to be development if needed, git branch develop)
The recommended database is postgres. It is not always the #1 choice of all the developers, yet it extremely powerful and flexible and worth the extra effort required for the initial setup.
Each environment will get a database in which you can add multiple schemas
pr_<projectname>_production
pr_<projectname>_release
pr_<projectname>_develop(only if required by the developers.)
Same naming convention as Postgres
Log records that are related to server or database errors save to the syslog, so it can be viewed and monitor by the cs-system.
Other log records should be in internal folder of the environment.
Email alias will be created for the project upon request in order to use for email alerts / API external account/ logins etc.,
pr_<projectname>
Daemons will run on a specific user which belong to the webserver group. There will not be a specific user for running daemons.
There are many git branching methodologies. Yet, since often we will need to help with implementation or some maintenance, the git branching is important to be comprehensive and reliable for usage. Therefore we follow specific guidelines strictly, according to the documentation of bitbucket got gitflow workflow https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
master (production) -> hotfix
release (testing / release / staging)
develop (development)
feature-branch#feature