Only recently I understood what continuous deployment and integration are. And now I want it. But the question arose: what is best to choose for this. The task is as follows:

  1. The continuous integration tool reacts to the hook with the git repository after the next push and cuts the build. He should pull up all the compositing packages, run the preparatory commands and start. Then he runs through all the tests, checks the style of the code, etc.
  2. In the case of a successful build, a request is thrown (suppose POST) to another (or the same) server on which the deplorer is located.
  3. Deploer should be able to at least work with the compositor and run console commands.
  4. The situation is such that in the release folder there may be necessary files that are pulled from release to release. For example, images to posts. And they should be preserved.

I found this and it seems to be quite good for continuous integration. I want tools that can

  1. Work with multiple projects
  2. You can fine tune everything
  3. Configured through a web interface (optional, but very desirable, especially for continuous integration)
  4. Support for the configuration file for each project (as in travis .travis.yml )
  5. Again, the lower the requirements, the better. If the tool can work on pure PHP and MySQL and using the shell, this is a big plus.
  • jenkins.io/index.html You can try. - Moonvvell
  • @Moonvvell heard, saw, but did not try. Confused that he works in Java. To me, we have something specialized for my task. I do not want to kill the day dancing with a tambourine. - Vitaly Zaslavsky
  • Yah? Are there no people who use this bundle? It’s more convenient to do everything automatically, than to drive all texts with pens, and then upload files to the host via ftp. - Vitaly Zaslavsky

1 answer 1

TeamCity perfectly solves all these tasks.

You create a build and attach a version control system to it (TeamCity can make a checkout itself, or you can hang a hook). Next, you create Buils Steps. In my case, this is a complete cleaning of the database, migration and init project. Next, composer install and run the sh script that runs the tests. sh script is part of the project.

I have the following build structure (Unit - Integration - Functional - Acceptance). Build each commit. Each next build is executed if the previous one passed all the tests. There is no need to run functional tests if unit tests fail.

Each build in the output can have reports and artifacts (the build result in the form of files).

For deployment there is a special Deployer plugin, but in principle deployment can be configured using the sh script. In my case, I'm not copying artifacts, and on the prod, the script does composer install , etc. according to the standard scheme as if I did everything with pens.

Check out more Red Gate Dlm Automation Suite . The coolest thing.

A good timics intro is available from Roe Osherove.

  • one
    I didn’t have time to look at anything yet, but I’ll give a plus for a detailed and beautiful answer. Later, I’ll investigate everything and put a tick, if this is what I need) - Vitaly Zaslavsky
  • @vtvz_ru there will be questions - write :) - Andrey Kolomensky
  • one
    I looked at the "coolest thing" .. Expensive. TimCity looks interesting, but this tool is more versatile than PHP-specific. I think some things will have to finish himself - Vitaly Zaslavsky
  • @vtvz_ru personally, I don’t want to look at any other CI-systems anymore after the timicity :) A bunch of yii2 + codeception got perfect. - Andrey Kolomensky
  • one
    I will try and accomplish your goal here. Thank you very much) - Vitaly Zaslavsky