A
A
Andrey2016-03-22 13:57:51
PHP
Andrey, 2016-03-22 13:57:51

How to set up the process of building and deploying web applications?

At the moment, the organization has implemented the following web application development model:
There is a virtual hosting with ftp and ssh, nginx, php5.5 (regular hosting for sites). Developers do not have a local server.
Developers upload or synchronize the project via ftp from hosting using PhpStorm.
During development, changes are uploaded immediately to the hosting. PhpStorm is responsible for code merging.
During the release, we download the raw files and upload them to the hosting (production) of the customer.
We understand that this model is very outdated.
We think that we need to run projects on BitBucket. ( Maybe there is something better? )
How to manage projects on a local server?
And what technologies are better to use (Vagrant, Docker...) in order not to use OpenServer and the like?
The question also arises of how to automate the deployment process to dev|production hosting|servers.
The development uses different technologies SASS, LESS, JSX.
How could the build process (SASS compilation, JS and CSS compression) be automated when deployed to a production server?
How to build a project when it is based on a framework (use Laravel or self-written)?
The main thing is how to automate the process so as not to complicate the life of developers?
Maybe you should abandon such hosting in favor of DigitalOcean or similar?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
J
jacksparrow, 2016-03-22
@jacksparrow

At first I thought to send you to Google, but
Start slowly, the schemes found in Google are difficult to immediately fully apply from scratch.
Get a git repository, there will be no difference between bitbucket or github at the initial stage.
Regarding the open server, it is better than the lack of a local server. As a compromise between ease of deployment and 'correctness', I can recommend homestead - a ready-made box (from the creators of Laravel).
The next stage is automatic tests, cover the code with them. They will be driven by an automatic testing system. All these systems have the ability to build a project sequentially, including css minification and zhs, warming up the cache, etc.
And only then you can switch to automatic deployment.
Added: Note the git flow methodology for organizing git branches

A
Anton Bormotov, 2016-04-08
@qqwrst

We used the teamcity / ansible / cloudformation link, now it works for the QA environment - deploying a certain branch (branches) on aws resources.
Briefly, the algorithm is as follows:
1) The developer has finished a certain task (feature / example)
2) Enters teamcity, starts the build (presses the button)
3) Enters the necessary data: selects his branch (branch), selects options, he only needs frontend / backend /cms (roles in ansible) or both, whether it needs a separate cdn (cloudfront), etc.
4) Teamcity collects sources (composer, npm, grunt), ansible deploys ec2 instance and required resources (r53 domain name , cloudfront distribution), configure it, upload the collected sources.
5) Sends a letter with output data - domain name, ip address, etc.
If you are interested, write, I can help, where to start.
It’s not always possible to raise everything right away, we did it by hand for some time in order to automate all cases.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question