ExchangeBC / BCDevExchange-app

The BCDevExchange website is the public facing site for the BC Developers' Exchange - an experiment in tech innovation and collaboration. *NOTE: This repo is deprecated* and retained only for archival/informational purposes. The repo containing the current BC Developers' Exchange app is https://github.com/bcdevexchange/devex. Head over there to see the latest code.
Apache License 2.0
24 stars 12 forks source link

As a program owner I would like to use the DevEx CI stack so that I can validate code changes via the lab. #158

Closed paulroberts68 closed 8 years ago

paulroberts68 commented 9 years ago

Part of the lab value prop is to speed up the deployment of new code so that program owners can collaborate efficiently with developers. This will become particularly useful for accepting code when using the pay for pull process.

Created by Fred/Peter

DOD

  1. Demonstrate how a program owner would use the service
f-w commented 9 years ago

Proposed solution: Prerequisites, requirements and assumptions:

  1. One vm with docker installed.
  2. Jenkins
  3. Program owner has to be authorized to reserve namespace.
  4. Program owner has to pack their web app into docker (i.e. creating a Dockerfile). This requirement has some further implications:
    • The web app has to be runnable in Linux, which may rule out some type of apps.
    • Program owner is responsible to deploy code into docker. For simplicity it's preferable to create Dockerfile in the same web application repo to avoid extra downloads.
  5. The app and Dockerfile has to be in a public GitHub repository
  6. Dockerfile is allowed to expose multiple ports but only one port can be made externally accessible

The workflow works like this:

  1. Program owner registers in DevX:
    1. a lab namespace
    2. their Git repo containing the Docker file
    3. path to Dockerfile within repo
    4. the port in docker externally accessible
  2. DevX programmatically creates a project on Jenkins and setup web hooks
  3. First time and every time a commit is made in GitHub, Jenkins build the docker image, delete previous running container and start a new one.
  4. Program owner is notified failed build result and has certain degree of control of the Jenkins Project, such as manually build, manage users.
  5. Program owner can access the web app via https://.bcdevexchange.org any time.
f-w commented 9 years ago

@watkinspd @kelpisland , see my proposal for lab implementation above. Question: what is the value proposition of the lab comparing to some other public DevOps application hosting offerings such as Heroku which has a free tier?

kelpisland commented 9 years ago

@f-w I think the main value prop in that case is the "namespace" for public sector developers. It offers the clear expectation that this work is not production but still approved for public collaboration. What we get (dev exchange) is a more consistent experience across projects and offer a helping hand to getting things off the ground quickly.

pcrossley commented 8 years ago

What's the sense of the size of this?

f-w commented 8 years ago

Size/capacity is a concern because:

  1. People tend to "set it and forget it" when the service is free
  2. There is a limit how many lab instances a VM can handle above which performance degrade rapidly. The limit is unknown and depends on the application launched.

Given that, it's probably necessary not only to limit who can create instances but how many instances an authorized person is allowed to create. I'm thinking 3-5 is probably a good number.

paulroberts68 commented 8 years ago

I'm closing this issue as the work has been superseded by openshift