Code Monkey home page Code Monkey logo

devshop's Introduction

DevShop Logo

DevShop is an Open Source DevOps Framework and a set of reusable components designed to improve the web development, testing, and server management process, especially for Drupal websites.

The goal of DevShop is to provide a complete web development & testing pipeline out of the box, while empowering users to choose their own server infrastructure and systems architecture.

DevShop uses Ansible & Ansible Galaxy for server configuration, Symfony Console for command line tools, and Drupal for the web interface.

Core Values

Empower and Liberate.

  • Empower site builders with a feature complete, fully open source platform.
  • Liberate site owners by granting them the freedom to choose their own infrastructure and architecture.

Simplify and Demystify.

  • Simplify the management of complex systems by defining core building blocks and designing components that work independently of the platform.
  • Demystify computing by maintaining configuration for the entire vertical stack, down to Linux and services, all the way up to container management platforms, hyper

Collaborate & Engage.

  • Collaborate with developers and systems administrators to build a product that fits their needs first.
  • Engage the community to work together towards the common goal of a complete OpenOps platform and healthy ecosystem of tools.

Lower Costs & Barriers

  • Lower the cost of running sites with a host-agnostic platform, commoditizing servers, and moving maintenance costs of DevOps tools off of organizations and on to the community,
  • Lower the barriers of entry into the DevOps world for all.

DevShop Components

The DevShop Components are small, independently functional tools that are all designed to work together.

These tools are designed to be useful regardless of the hosting or DevOps systems they are being run on.

Composer Packages

Drupal CI/CD Dashboard and Ansible Server Manager in a Box

  • Web-based front-end for a DevShop server. Drupal 7 based.
  • Add unlimited Drupal projects and environments per server.
  • Create and configure servers all through the web interface.
  • DevShop Control is built into the devshop codebase. The DevShop Control Project is a composer project template that can be used to deploy a custom devshop control site.

One command, many stages for flexible CI per environment.

  • Single deploy command to be used in CI systems designed to encompass the entire cycle: git updates, code build, reinstall, deploy hooks and test.
  • Options and pre-sets allow users to skip or include stages depending on the environment. For example, --skip-reinstall can be used on a demo site to prevent destroying the content.
  • Configure each "stage" in composer.json, to easily customize commands for each site. For example, to import config or not.

Simple test runner with GitHub API integration.

  • Keep tests and standard commands in a Yaml file.
  • Run all commands with a single command.
  • Send command results to GitHub as Commit Statuses, to ensure Quality Control and present feedback to developers via pass/fail results on Pull Request pages.

Run commands with standard beautiful output.

  • Enhanced Symfony Process component for improved user experience and log portability.
  • Improved command-line user experience, metadata reporting (executed time, PID, logs).
  • Pluggable output through monologger: pipe to screen, file, or remote monologger compatible REST API.

Simple abstract CLI for interacting with the GitHub API.

  • Simple CLI wrapper for the GitHub API, where every API resource is a command and options are automatically passed.
  • "Deploy" command provides simple way to interact with GitHub's Deployments API using composer commands and bin scripts.

Traits and classes for accessing Git, GitHub and Composer Data.

  • GitRepositoryAwareTrait: Add to any class to read info from the current Git Repository.
  • GitHubRepositoryAwareTrait: Repository functionality plus a helper methods like getRepoOwner().
  • ComposerRepositoryAwareTrait: Repository functionality plus accessors for getting data from composer.json.

Split a monorepo with a single command.

  • Commands to split the git monorepo into multiple child repos.
  • Uses the same splitsh-lite script that Symfony and Drupal uses.
  • Reads list of repositories from composer.json config.

Ansible Roles

See https://galaxy.ansible.com/opendevshop for all roles.

  1. opendevshop.apache
  2. opendevshop.devmaster
  3. opendevshop.users
  4. devshop.server - All in one devshop server.

Docker Containers

  • devshop/server All in one container, uses systemd to run all services.

As we progress forward with the Ansible and Docker system, more common web services will be created and released as Ansible Roles and Docker containers.

Resources

About DevShop

Version Status Aegir Hosts Status
1.x Stable 3.x D6, D7, D8 Test Status

Backers on Open Collective Sponsors on Open Collective

DevShop is a "cloud hosting" system for Drupal. DevShop makes it easy to host, develop, test, and update drupal sites. It provides a front-end built in Drupal (Devmaster) and a back-end built with Drush, Symfony, and Ansible.

DevShop deploys your sites using git, and allows you to create unlimited environments for each site. DevShop makes it very easy to deploy any branch or tag to each environment

Code is deployed on push to your git repo automatically. Data (the database and files) can be deployed between environments. Run the built-in hooks whenever code or data is deployed, or write your own.

Built on Aegir

DevShop utilizes the main components of the Aegir Hosting System: Hosting and Provision. It does not use Hostmaster; it uses its own installation profile, Devmaster. It does not use the theme, Eldir. The default DevShop theme is called Boots and is included in the Devmaster install profile.

DevShop uses many additional contributed modules that Aegir core does not.

Aegir Cooperative Founding Member

OpenDevShop Inc is a founding member of the Aegir Cooperative. Lead DevShop developer Jon Pugh is a core Aegir maintainer.

See aegir.coop for more information.

Tour

See the Tour section of the documentation for a quick walk-through of the DevShop interface.

Support

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! ๐Ÿ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

For the full list of Backers and Sponsors, see BACKERS.md

License

DevShop is licensed under GPL v2.

This means any forks of this code must be released as open source and also be licensed under the GPL.

Help Improve Documentation

For full documentation on DevShop, visit docs.opendevshop.com or see our git repository github.com/opendevshop/documentation.

Think this can be improved? You can Fork our Documentation on GitHub!

Thanks!

devshop's People

Contributors

arttus avatar blazeyo avatar chertzog avatar dependabot-preview[bot] avatar devshopbot avatar ejs3888 avatar ericmaster avatar frazras avatar gitbook-bot avatar gitter-badger avatar gusaus avatar helmo avatar jacintocapote avatar janadam-hbf avatar jonpugh avatar josebc avatar kthull avatar kyletaylored avatar liberatr avatar llwp avatar matthandus avatar proofoftom avatar radimklaska avatar reallukemartin avatar stephanief avatar tijsdeboeck avatar timwood avatar vmmello avatar wodenx avatar yograf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

devshop's Issues

Improve performance of JS polling and environment status system

I'm supporting a large server with a lot of users and a lot of environments. I'm seeing at least 10 php processes running.

I'm thinking that people like to leave tabs open. Every one of them is pinging the server every second.

We need to improve performance of the environment status system. It does not scale well.

We could cache the list of projects and environments until a status is updated.

EPIC: DevShop Cloud

As a devshop user
I want devshop to create more servers for me
so I don't have to.

DevShop Cloud is a collection of tools for Aegir that will allow fully automatic provisioning of cloud servers from any provider, starting with Softlayer, digitalocean, and amazon web services.

The work has been ongoing for some time in the devshop_cloud module in the devshop_cloud branch: https://github.com/opendevshop/devmaster/tree/devshop-cloud/modules/devshop/devshop_cloud

Sadly because of the separation of provision/hosting in aegir 2 and earlier, there is a separate repo you need, with the unfortunately confusing name of "devshop_cloud": https://github.com/opendevshop/devshop_cloud

My original prototye used softlayer. @arosboro created a plugin for digital ocean. Basically, anyone with a PHP library will be really easy to add to devshop cloud.

Steps

Change the Pull Request Clone process to a clone + deploy.

We have had a lot of problems with PR clone environments.

The problem is we create the new platform with the code on the new branch. This could be bad code.

Then we clone from the primary environment to this new platform. It could fail because of that bad code.

Not only that, but the "clone" task doesn't run the "Deploy" hooks that users are expecting.

I've been thinking this for a while and just never got around to it:

When a PR request comes in, and the setting is to "clone live environment", we should create a platform that is on the same git ref as live first, do the clone, THEN trigger a deployment to the new branch or git ref.

This will simulate a real deployment, as clones to the same codebase always succeed in Aegir, unless you run out of space or something drastic like that.

"Path" in branch name is not recognised

devshop version: 0.5.4

In github, I created branch with "path" in the name, e.g. features/new-theme. Please refer to the screenshot below. Please also note that there is another branch named new-theme which will be explained below.

In devshop, branch with "path" only shows the last component of the path, e.g. features/new-theme is shown as new-theme, features/foo/bar is shown as bar. When creating a new environment and selecting bar, master branch is the one being deployed to the new environment.

The screenshot above was done after another branch: new-theme was created. This is to circumvent the issue of devshop not detecting features/new-theme.

When a branch is deleted, delete the environment (if desired.)

We get a lot of orphan environments, if a branch is deleted.

We should delete environments that are tracking a branch if a branch is deleted only if the project is configured to do so.

  • Add to project settings: "When a branch deletion is detected, delete environments that are tracking that branch.".
  • Add to devshop_github.module: Detect a branch deletion and trigger environment deletion.
  • Add to Project Verify: Check branch list against environment list. If any environments exist on branches that no longer exist, delete them (if the project is configured to do so.)
  • Add to Environment template: If branch no longer exists in the project node, show a warning.

Install Error with vagrant

Hello,

I followed the install process at this https://github.com/opendevshop/devshop/blob/0.x/README.vagrant.md

After running : vagrant up i get the errors below.

I was able to ssh into the box.
L-C0000893:devshop ixb$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

  • Documentation: https://help.ubuntu.com/
    Welcome to your Vagrant-built virtual machine.
    Last login: Fri Sep 14 06:23:18 2012 from 10.0.2.2
    vagrant@devshop:~$ sudo su - aegir

aegir@devshop:~$ drush @hostmaster uli

The drush command '@hostmaster uli' could not be found. Run drush cache-clear drush to clear the commandfile cache if you have installed new [error]
extensions.
A Drupal installation directory could not be found [error]

aegir@devshop:~$ drush site-alias
none
platform_hostmaster
server_localhost
server_master

When i browse to http://devshop.local/ i get
"It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet."

What should be the expected behavior?

Errors from vagrant up

==> default: require_once(./profiles/devmaster/devmaster.profile): failed to open [warning]
==> default: stream: No such file or directory install_6.inc:183
==> default: Drush command terminated abnormally due to an unrecoverable error. [error]
==> default: Error: require_once(): Failed opening required
==> default: './profiles/devmaster/devmaster.profile'
==> default: (include_path='.:/usr/share/php:/usr/share/pear') in
==> default: /var/aegir/.drush/commands/provision/platform/drupal/install_6.inc,
==> default: line 183
==> default: The external command could not be executed due to an application [error]
==> default: error.
==> default: Drush was not able to start (bootstrap) the Drupal database. [error]
....
==> default: The drush command '@hostmaster provision-verify' could not be found. [error]
==> default: Run drush cache-clear drush to clear the commandfile cache if you
==> default: have installed new extensions.
==> default: A Drupal installation directory could not be found [error]
==> default: stdout: Aegir 6.x-1.x automated install script
.....
==> default: Do you really want to proceed with the install (y/n): y
==> default: PHP Fatal error: require_once(): Failed opening required './profiles/devmaster/devmaster.profile' (include_path='.:/usr/share/php:/usr/share/pear') in /var/aegir/.drush/commands/provision/platform/drupal/install_6.inc on line 183
==> default:
==> default: Fatal error: require_once(): Failed opening required './profiles/devmaster/devmaster.profile' (include_path='.:/usr/share/php:/usr/share/pear') in /var/aegir/.drush/commands/provision/platform/drupal/install_6.inc on line 183
==> default:
==> default: FATAL: all hosts have already failed -- aborting
==> default:
==> default: PLAY RECAP ********************************************************************
==> default: to retry, use: --limit @/root/playbook.retry
==> default:
==> default: devshop.local : ok=38 changed=30 unreachable=0 failed=1
==> default: โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
==> default: โ•‘ It appears something failed during installation. โ•‘
==> default: โ•‘ There is no '/var/aegir/.drush/hostmaster.alias.drushrc.php' file. โ•‘
==> default: โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

After Devshop Ugrade the Status Report is still on 0.5.1 version

I launched 'devshop upgrade' on my devshop environment, and everything seems to be executed fine, except that, on the Status Report of devshop, it's still reported the 0.5.1 version, as you can look on this screen.

screen-capture

Looking at the /var/aegir dir I can see only devmaster-0.6.0 as devmaster dir.

Following the aegir vhost of devshop domain:

<VirtualHost *:80>

  DocumentRoot /var/aegir/devmaster-0.6.0
  ServerName soulwebdev.com
  SetEnv db_type  mysqli
  SetEnv db_name  xxxx
  SetEnv db_user  xxxx
  SetEnv db_passwd  xxxx
  SetEnv db_host  localhost
  SetEnv db_port  3306


<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^/files/(.*)$ /sites/soulwebdev.com/files/$1 [L]
  RewriteCond /var/aegir/devmaster-0.6.0/sites/soulwebdev.com/files/robots.txt -f
  RewriteRule ^/robots.txt /sites/soulwebdev.com/files/robots.txt [L]
</IfModule>

# Extra configuration from modules:


# PROVISION_LOGS
# ==============
# Site-specific logs have not been enabled.
    # Error handler for Drupal > 4.6.7
    <Directory ~ "sites/.*/files">
      <Files *>
        SetHandler This_is_a_Drupal_security_line_do_not_remove
      </Files>
      Options None
      Options +FollowSymLinks

      # If we know how to do it safely, disable the PHP engine entirely.
      <IfModule mod_php5.c>
        php_flag engine off
      </IfModule>
    </Directory>

    # Prevent direct reading of files in the private dir.
    # This is for Drupal7 compatibility, which would normally drop
    # a .htaccess in those directories, but we explicitly ignore those
    <Directory "/var/aegir/devmaster-0.6.0/sites/soulwebdev.com/private/" >
      <Files *>
        SetHandler This_is_a_Drupal_security_line_do_not_remove
      </Files>
      Deny from all
      Options None
      Options +FollowSymLinks

      # If we know how to do it safely, disable the PHP engine entirely.
      <IfModule mod_php5.c>
        php_flag engine off
      </IfModule>
    </Directory>


</VirtualHost>

So which version I'm running?

RedHat Installation issues

This issue is just for taking notes on issues related to redhat enterprise linux install.

  • install.sh does not detect ansible or does not detect the OS release as "redhat". Needs research.
  • Installing ansible fails, redhat optional repo needs to enabled and epel needs to be installed manually.
  • Site's files "pictures" folder is not in the apache group. It needs a manual chgrp to work. Probably an upstream Aegir bug.
  • max_allowed_packet is too small by default on redhat. We should set it to 16M.
  • memory_limit should be higher that 128MB.

When cloning an environment, always run `drush rr`

The most common point of failure for cloning an environment is when files move.

The deploy hooks don't run early enough to catch aegir failing the clone and then rolling it back.

Let's hook into the site clone process and call a drush registry-rebuild every time, just to be safe.

Vagrant box becomes overwhelmed, stops responding

After spinning up a new instance of devshop, my VM is more or less locked up.
Here's a sample from ps, in which you can see none of the dozen hosting-dispatch tasks has completed:
devshop_ vagrant_devshop___var_aegir_devmaster-0_x_sites_devshop_local ssh _185x52

What should i do?

EPIC: DevShop 1.x: Upgrade to Aegir 3

Summary

We're moving to Aegir 3: Devmaster on Drupal 7. Hosting Drupal 8

It's in the 1.x branch of this repo and devmaster repo.

DevShop 1.x Pull Request: #44
DevMaster 1.x Pull Request: opendevshop/devmaster#8

I think we should not actually merge these pull requests, but keep the 0.x branch around for posterity.

The Pull Requests are good for running tests and discussing the minutiae of the development work.

Contributing

If you find a problem, and can edit this issue, please add it to the list. If you can't, post it as a comment.

Please submit pull requests against the 1.x branch, (which is not the default.)

Thanks!

Tests

We now have an extremely easy way to run tests against your devshop server:

aegir@devshop:~$ devshop devmaster:test

Run this command as the aegir user to run our suite of Behat tests.

Be aware it will go through and attempt to create a project and environments on your server. If it fails, you might have to go back in and destroy the project yourself before the test will pass again.

Let's take this opportunity to write more tests against these bugs. I think it will help for the project leads to create some of the initial pull requests by writing a failing test. Then, a developer can be assigned and they can work until the test passes.

  • Improve Testing Documentation: We need to add a section to the devshop documentation explaining the testing infrastructure that we created.

MAJOR ISSUES

Do we have any more major issues? ๐Ÿ’ƒ

UI ISSUES

  • Certain tasks should go to the task logs page. It's nice to show people deploys and test runs immediately.
  • Install Site task doesn't save itself into environment "last_task", so it doesn't appear on environment dashboard.
  • Upgrade from 0.x does not work yet...
  • Confirm DevShop Testing fully works, for D7 and D8
  • Confirm devshop_acquia module works.
  • Confirm devshop_dothooks module works.

Drupal 8 Issues:

  • Block "registry rebuild" for drupal 8 sites.
  • Sync data still runs registry rebuild and cache-clear, even if on D8

These two are not beta1 blockers. We can get these in before 1.0.0:

PROJECT CREATE WIZARD

  • Javascript on create wizard needs updating
  • If it fails, it doesn't tell the user why anymore.

COMPLETED

  • Create new branches for 1.x.

  • Rebuild makefiles to use drupal 7 and new module versions.

  • Removing obsolete drush packages.

  • Create new devmaster.info install profile and update hook_install. (Keeping devshop modules uninstalled for now.)

  • Debug it until it installs.

  • Upgrade all the devshop modules to drupal 7 with coder_upgrade.

  • Upgrade the boots theme to Drupal 7 (and then maybe convert it into a sub-theme of bootstrap.theme). UPDATE: Boots works with bootstrap theme. Some rough edges still exist due to the upgrade. I will list as many as I can below.

  • Refactor devshop_provision into devmaster drush files. Aegir 3 allows us to include all drush commands in devmaster.

  • Get tests going and write more tests to ensure everything works. UPDATE: We need more but first step for me is getting all the pieces working.

  • @jonpugh | Major hook node load refactoring

  • @arosboro | opendevshop/devmaster#7 | Getting devshop_github to work.

  • Missing project settings form on step 2 of "New Project Wizard". See http://devshop.site/projects/add/settings

  • Missing Project Settings link.

    screenshot from 2016-01-26 19 46 33

  • @jonpugh | Funky task issues.

  • @llwp | https://github.com/opendevshop/devmaster/pull/16 |Custom global tasks dropdown is missing.

  • Sync Data task arguments for "destination" is empty.

  • Drush aliases for sites are getting saved as "server" type, blocking environment creation.

  • "Last Task" property on environments is not saving.

  • Cannot deploy through web UI: "The requested page "/hosting_confirm/307/site_devshop-deploy?git_ref=development" could not be found."

  • Project Navigation block not loading project properly on task confirmation pages like hosting_confirm/307/site_sync

  • hosting_logs aegir logs path changed in 7.x: we should set variable provision_logs_file_path to /var/aegir/logs

  • Run "Cache rebuild" for drupal 8 sites.

  • Project dashboard has a bad grid.

  • Platforms, Sites, and Clients should be removed from primary links.

  • Step 2: settings has two menu form elements.

  • Step 2: settings is not saving data.

  • Probably related - Clone Environment results in

    1. files created
    2. an environment is created, non operational
    3. Codebase preparation failed
    4. upside: node logs are there.
    5. downside: git logs are not and enable in list of modules doesnt work yet. (/node/430)
  • "Run DB Updates" and "Clear caches" should be enabled by default.

  • Refresh branches when there were no branches in the repository links to 404 (http://devshop.docker:8000/node//project_verify?token=26E...)

  • "Environment name" textfields, like on Create Project: Step 3 and the "Create Environment" form are full width. Need to be made inline.

  • Collapsed fieldsets are displaying improperly. See http://devshop.site/projects/add/git_url

  • Sync tasks are not showing up in environment node page task lists.

  • Hosting task confirm form submit no longer redirect back to the dashboard.

  • Site node page does not display the last task! Makes it look like it never happened.

  • Backups are not initiated, tasks fail. https://www.drupal.org/node/2619074

  • The redirect for a project that is still being created doesn't work. Start creating a project then visit it's node page to see.

supervisor job not installed during install.sh

After install, none of my tasks were being processed.
I restarted supervisor, but to no avail because /etc/supervisor/conf.d/ was empty

Installed from install.sh, latest

OS: ubuntu
Version: 14.04
Checking for DevShop CLI... DevShop CLI is installed. 0.x dafb71d
Checking for Drush... Drush is installed. Drush Version : 6.7.0
Checking for Provision... Provision is installed.
Checking for DevMaster... Devmaster is installed. 0.x

How to start branch to OpenBSD

hello,

Before starting a new branch for openbsd, I would like to know
What requirements do I need?

Currently I have OpenBSD 5.7
Web Server is NGINX
MySQL Server is MariaDB
php is: php-fpm
I have installed: Drush

some sites have installed in Drupal 7 and other in Drupal 8

Any advice before I start?

Thanks

Deploying tag requires a git fetch first.

I was deploying tag to tag and I got this error:

Git pull failed in /var/aegir/projects/dkan/test. The specific errors are below: error: pathspec 'v4' did not match any file(s) known to git.

Improve Testing User Experience

The dream is to make getting a project ready for testing as easy as possible:

  1. "Prepare testing for this project" task: We can easily create a task that sets up the composer.json, composer.lock, and behat.yml scaffolding for the user, Including a simple Feature file that checks the homepage.
  2. Design a new system for handling multiple types of tests. We want to be able to run behat, code syntax checks, phpCS, etc.
    • Notify the user if a .hooks or .hooks.yml file was found. If not, offer to create one.
    • For each .hooks.yml test, ping back github a different status.
    • Create a UI to show test status better.

How to install a drupal distribution?

I'm trying to install a Drupal distro (Cartaro 7.x-1.9) directly from it's repository without success. Is it possible? How?
I attach the log screen of devhsop.

I'm using devshop 0.5.3

cartarotest_1
cartarotest_2

DevShop CLI Improvements

Currently managing devshop on a holistic level is hard. Let's create a "DevShop CLI" for managing things like installation, upgrades, and remote install.

UPDATE: The DevShop CLI makes upgrading a devshop server really, really easy. Let's keep developing this tool to make everything else easy.

  • DevShop Installer: This works by guiding the user through getting the latest install script and running it. Not sure how useful this is because you have to install the devshop CLI before installing devshop itself, so it's actually an extra step compared to the standalone SH script installer.
  • Remote Server Install: Works!
  • DevShop Upgrade. Still has bugs! Need to fix these before the next release. UPDATE: We've been running devshop upgrades for our entire platform for every release since Dec 2015.
    • Remote Server Create: We should do the heavy lifting for DevShop Cloud with a server:create command.
  • Separate this tool from the main devshop repo. It seems to me it would be better to make the CLI a separate repo so that it can be turned into a PHAR package.
  • Change the install.sh script to install devshop CLI phar dependencies only, then run devshop install
  • Incorporate parts of http://github.com/jonpugh/director in order to start using ansible galaxy roles for everything.

Aegir 3?

gday Jon

this is a tremendous project and its reach some serious maturity

so, how about doing it ALL OVER AGAIN and porting to Aegir 3 ? Drupal 7?

great if you could do that by next week

cheers

-N

https://www.drupal.org/node/2218539

Notify github when a deploy fails

If the project is set to Clone live for PRs, and the "live environment" setting is not set, then nothing will happen.

we should notify github of the failure so users know what to do.

0.5.4 - https and ssl not working

Tried a 0.5.4 installation with Ubuntu 12.04 and 14.04.

Follow the directions here https://devshop.readthedocs.org/en/latest/ssl/

Chrome throws an SSL Protocol Error.

Checked the firewalls a million times, both on the VM itself, and through my cloud service provider (google compute engine.)

Checked the logs, configuration, certs, etc. I can't seem to find any more leads. Note: I didn't even try commercial SSL yet, just trying to make things work with a self signed cert.

vagrant install fails There is no '/var/aegir/.drush/hostmaster.alias.drushrc.php' file.

I've just rebuilt my laptop with Trusty host and am trying to vagrant up devshop

it fails

==> default: TASK: [Clear the drush cache.] ************************************************
==> default: changed: [devshop.local]
==> default:
==> default: TASK: [debug msg="$ {{ drush_path }} devshop-install {{ server_hostname }} --version={{ devmaster_version }} --aegir_db_pass={{ mysql_root_password }} --aegir_db_user=root --makefile={{ devshop_makefile }} --profile=devmaster --aegir_host={{ server_hostname }} {{ devshop_working_copy }} -y"] ***
==> default: ok: [devshop.local] => {
==> default: "msg": "$ /usr/local/bin/drush devshop-install devshop.local --version=0.x --aegir_db_pass=zfEYWqgLRqbxpoqeWNvy-TMm5pC2sfF8 --aegir_db_user=root --makefile=build-devmaster.make --profile=devmaster --aegir_host=devshop.local --working-copy -y"
==> default: }
==> default:
==> default: TASK: [Install Devmaster] *****************************************************
==> default: failed: [devshop.local] => {"changed": true, "cmd": ["/usr/local/bin/drush", "devshop-install", "devshop.local", "--version=0.x", "--aegir_db_pass=zfEYWqgLRqbxpoqeWNvy-TMm5pC2sfF8", "--aegir_db_user=root", "--makefile=build-devmaster.make", "--profile=devmaster", "--aegir_host=devshop.local", "--working-copy", "-y"], "delta": "0:00:00.415160", "end": "2015-07-06 22:05:48.875680", "rc": 1, "start": "2015-07-06 22:05:48.460520", "warnings": []}
==> default: stderr: The drush command 'devshop-install devshop.local' could not be found. [error]
==> default: Run drush cache-clear drush to clear the commandfile cache if you
==> default: have installed new extensions.
==> default: A Drupal installation directory could not be found [error]
==> default:
==> default: FATAL: all hosts have already failed -- aborting
==> default:
==> default: PLAY RECAP ********************************************************************
==> default: to retry, use: --limit @/root/playbook.retry
==> default:
==> default: devshop.local : ok=36 changed=27 unreachable=0 failed=1
==> default: Loading composer repositories with package information
==> default: Installing dependencies (including require-dev) from lock file
==> default: Nothing to install or update
==> default: Generating autoload files
==> default: โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
==> default: โ•‘ It appears something failed during installation. โ•‘
==> default: โ•‘ There is no '/var/aegir/.drush/hostmaster.alias.drushrc.php' file. โ•‘

Deleted environments staying on project dashboard

Hi team Devshop! We've been using devshop since June 2015 for testing features of pull requests for our team. The github pr integration is awesome! However, one issue we've had over time is that deleted environments staying on the dashboard page, and with more than 70 PR's over the course of the past year, the page became really cluttered.

Recently, we reinstalled with devshop 0.8.1 and started fresh. However, we're still having a couple of issues with environments. I'll describe both here, but please let me know if I should create a separate issue for each.

Here's an example of a deleted environment that is still on the page.

screen shot 2016-02-25 at 8 13 01 am

Looking at line 111 of nodes.inc, I see

// Don't load the environment if the site and/or platform is deleted.
if ($environment->site_status == HOSTING_SITE_DELETED && $environment->platform_status == HOSTING_PLATFORM_DELETED) {
  continue;
}

I'm guessing that is the culprit. Digging a bit, I see the node status is 1 for that platform in the nodes table, and the status for that row in the hosting_platform table is also 1. That sits right above another row in the hosting_platform table which is -2. Which may be related to our 2nd issue.

Platforms fail to automatically delete successfully when a PR is merged or closed. I tried to reproduce this issue, but ran into another (possibly related) issue with the clone task. The message is something akin to "There are still active sites on this platform". I'm guessing that could be because our git repo master branch (and all subsequent pull requests) include a couple of site folders for our Acquia dev and test environments. The Acquia-specific settings.php files have been force added there, because it enables us to deploy any branch to dev or test on Acquia by just pushing a branch to our Acquia remote. Before devshop, we were testing pull requests on Acquia, but found it too limiting to have only 2 environments.

If I ssh into the devshop server and delete those site folders (dev.acqui-domain.com), I am able to retry the failed delete task and it succeeds. This is the exact scenario which led to the screenshot above. Is the intention that any settings.php file should trigger a failure of environment deletion, or should it just check the settings.php file related to the current domain (ie. branch-[prname].project.devshophost.com)?

0.5.4 / Ubuntu 12.04 version of git doesn't support push.default: simple

Did a fresh install of 0.5.4 on Ubuntu 12.04. Went to add a new project, and got an error. Looked at the logs and saw this:

Shell Output: error: Malformed value for push.default: simple error: Must be one of nothing, matching, tracking or current. fatal: bad config file line 6 in /var/aegir/.gitconfig Cloning into '/var/aegir/projects/live/test'...

After examining the issue, changing the push.default to upstream was the best option.

Made the change, and the repository cloned properly.

Attempting an upgrade fires an error

Gotta be something about the node types hooks...
Column not found: 'disabled' in 'where clause': SELECT nt.*
FROM
{node_type} nt
WHERE (disabled = :db_condition_placeholder_0)
ORDER BY nt.type ASC; Array
(
[:db_condition_placeholder_0] => 0
)

Hostin  7000  Clear cache for tasks view update.                               
 g_task
Do you wish to run all pending updates? (y/n): y
WD php: PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown[error]
column 'disabled' in 'where clause': SELECT nt.*
FROM 
{node_type} nt
WHERE  (disabled = :db_condition_placeholder_0) 
ORDER BY nt.type ASC; Array
(
    [:db_condition_placeholder_0] => 0
)
 in _node_types_build() (line 739 of
/var/aegir/devmaster-1.x/modules/node/node.module).
Cannot modify header information - headers already sent by (output   [warning]
started at
/usr/share/composer/vendor/drush/drush/includes/output.inc:38)
bootstrap.inc:1232
PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column &#039;disabled&#039; in &#039;where clause&#039;: SELECT nt.*
FROM 
{node_type} nt
WHERE  (disabled = :db_condition_placeholder_0) 
ORDER BY nt.type ASC; Array
(
    [:db_condition_placeholder_0] => 0
)
 in _node_types_build() (line 739 of /var/aegir/devmaster-1.x/modules/node/node.module).

Install documentation is confusing

In the process of re-installing devshop a half-dozen times last week, I noticed that there are many different places to find installation instructions, and many are different, such as:

Furthermore, none of the suggestions actually worked for me on a fresh AWS instance running Ubuntu 14.04. If I take the getdevshop.com instructions at face value, bash install returns with /usr/bin/install: /usr/bin/install: cannot execute binary file. So maybe then I try sh install.sh, which ends up exiting with install.sh: 282: install.sh: Bad substitution. Hm. Maybe I should follow what's at the top of the install script, and try sudo ./install.sh. That returns sudo: ./install.sh: command not found. However, if I make the file executable with chmod +x install.sh, the installer runs!

Then wait, what is all this Hostname: ip-172-31-36-172.ec2.internal? Ah. The "readthedocs" version mentioned that I "must change the hostname manually" if I'm hosting on Amazon Web Services. Ugh! So I start over. I then notice that document says I should be running these as root.

As you can imagine, at this point I'm either really frustrated, or enjoying the challenge. I love what the devshop team is doing, but I highly recommend simplifying the documentation for new users, while also making host-specific documentation readily accessible. On the devshop Drupal.org project page, for example, I see that documentation is on readthedocs, development is on github and issues are on D.O. Then I notice this chat icon, which leads me to gitter, and I find out that issues are now in github.

I hope this doesn't sound like complaining; again, I love what you're doing (and would love to get involved). I'm just offering some insights from an outsider looking in and getting easily confused.

Other gotchas for AWS on Ubuntu include the fact that the user you log into with by default is ubuntu. After getting devshop installed, I ran into additional issues with drush because Amazon's documentation has me ssh in as ubuntu, which isn't in the aegir or www-data groups. Drush commands therefore fail, both on the server and if I have aliases set up from my local box. So I can add ubuntu to those groups, or I can add my ec2 pem file (key) to the aegir "authorized_keys" file and then ssh as aegir (both of these methods worked, by the way), but it still feels like a puzzle.

Don't create an environment if we get the "Cannot Merge" Exception

Reported by @davidkinzer

Been noticing that when every I do a PR I immediately get a devshop failure with this error: "devshop/merge โ€” Branch is out of date! Merge from default branch. " But then on devshop the QA site seems to be OK.

I was debating if this was appropriate or not, but I think I've decided we should not build the environment if we can't post status updates about it.

Clone task for live environment fails when creating env from pull request when there is more than one webhook!

We're on a fresh install of 0.8.1. After creating a PR on github (which worked a couple of days ago), the process is no longer working. The error is There are no valid install profiles on the target platform to migrate to, which comes just after Undefined property: stdClass::$hosting_name hosting.module:919.

In gitter, you mentioned that "Each site gets a unique "hosting_name"... That message can happen if two site nodes get created with the same node title (which is their full domain)
So I bet that somehow, a duplicate site node was created".

If you mean the node table, then I actually see a number of duplicates:
screen shot 2016-02-25 at 9 42 12 am

Please advise how to continue troubleshooting. Thanks!

Initial environment for a new project doesn't use specified domain

If I create a new project and specify a domain different from the Devshop server (like for a remote server), the domain I specify is not adopted by the first environment. It is adopted by any other environments I create.

Steps to reproduce, assuming the Devshop domain is production.example.com:

  1. Create a new project.
  2. Specify a different root domain (e.g. development.example.com) and complete setting up the project.
  3. Specify a new subdomain for the initial environment (e.g., bugfixes.development.example.com). The form should list development.example.com as the root domain.
  4. Complete the process of setting up the project and environment.
  5. In the project dashboard, the complete domain for the initial environment will be bugfixes.production.example.com.
  6. If you set up another environment (e.g., qa.development.example.com) following steps 3 and 4, the complete domain will be what you expect (qa.development.example.com).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.