Initial Requirements
You have created a service.yml
file in the top directory of your repo. This will help us, and others, see everything available to run and use in your repo.
```yaml tools: exceptions: https://... logging: https://... ci: https://... services: production: https://... production_dashboard: https:// staging: ... docs: getting_started: https://... commands: bootstrap: script/bootstrap database: create: bin/rails db:create migrate: bin/rails db:migrate server: bin/rails server ``` This should serve as an example. These kinds of files can help you debug, record links to docs, services, tools, and more. While this is less useful with one app, in an organization with many apps this can be crucial to remembering and finding information.
Examples:
- [F2019 Team Klutch - Javascript](https://github.com/dcsil/klutch/blob/master/app/service.yml) - [Team App - Rails/Ruby](https://github.com/dcsil/team_app/blob/master/service.yml)- You have a
script/bootstrap
script, bin/bootstrap
script, or similar, available and able to be run on Unix systems (Sorry Windows Users).- This should install dependencies if needed like Postgres, MySQL, Redis, etc
- This should install any languages required
- This should install any packages like Rubygems, Node Packages, etc
- Docker Compose or Docker is ok to use
Write a script named `script/bootstrap`, it should setup much of your system for you. It is fine if the script targets one operating system (mac, linux, or windows). Make note of this script in the README of your app. If you have a getting started guide, this can be in there but you should make sure that that guide is mentioned in the README. Docker and Docker Compose is a good option here
Examples:
- [Javascript and Node](https://github.com/integrations/jira/blob/master/script/bootstrap) - this uses `brew bundle`, which comes from https://brew.sh/ - `brew bundle` installed everything from the [`Brewfile`](https://github.com/integrations/jira/blob/master/Brewfile) - [Ruby and Rails, Team App](https://github.com/dcsil/team_app/blob/master/bin/bootstrap) - this uses some custom install scripts to try and minimally impact the system - it installs all languages, dependencies, and databases that it needs - then it creates and migrates the database so it's ready to use - You have a test infrastructure set up and listed in your
service.yml
. You should be able to run exactly what you list in your service.yml
file to run your tests. It is ok if you only test a hello world
app for now. You have CI setup to run your tests from (3).
I recommend [GitHub Actions CI](https://help.github.com/en/actions/automating-your-workflow-with-github-actions).
Examples:
- [Javascript example for GitHub Actions CI](https://github.com/integrations/jira/pull/295) - [Node example for GitHub Actions CI](https://github.com/dcsil/klutch/blob/master/.github/workflows/nodejs.yml) - [Ionic example for GitHub Actions CI](https://github.com/dcsil/klutch/blob/master/.github/workflows/ionic.yml) - [Ruby example for GitHub Actions CI](https://github.com/dcsil/team_app/blob/master/.github/workflows/ruby.yml)You must have your app available online (if a web app) via a public URL. If you are not making a web app, you must have your app available via a compiled artifact in a GitHub Release for the teaching staff to install. We should not have to do anything than open the install file.
You can deploy to Heroku really easily with Ruby, Javascript, Python, Go, PHP, and other languages. - You only need the hobby dyno - I would recommend Postgres as there is a free hobby database you can use - This is not good to host your machine learning experiments - It is included in your [GitHub Student Pack](https://education.github.com/pack) - [DigitalOcean](https://digitalocean.com), [Amazon AWS](https://aws.amazon.com/), and [Microsoft Azure](https://azure.microsoft.com/en-us/) are other options and also included
- You must record any decisions, changes, and updates to your StackShare Stack and update your Architecture diagram from A3. Include a paragraph in your Release submission outlining the changes to your roadmap, including (high level) what you have completed. Answer “are you on schedule?”
Submission
You must create a release on your repo. This will give us a snapshot in time and allow us to grade it.
Assignments are always due at 11:59:59pm Eastern Time.
Second, you must submit the release on the LearnSoftware application. You can find the submission location here: https://learnsoftware.engineering/my_assignments
The release does not need to include pull requests or commits from every member. Please include the path location of the assignment within the release body.
It is suggested to use a folder and multiple files, just like this CSC491 repo, to contain this assignment.
Questions or Concerns?
- I don’t like part of this assignment
- File an issue on this repo
- I need to clarify something about this assignment
- File an issue on this repo
- I need to clarify a question or ask something in private
- Email the course instructor or email the professor via the email on the homepage / README
Rubric
Section | Description | Worth |
---|
service.yml | Is present and fully filled out | 10.0 |
script/bootstrap or similar | Functions fully on Unix systems. Application is fully ready to run after running the script (dependencies installed, database install and setup, etc). The only exception is when you need to get credentials for something like a 3rd party API, that can be a different step. | 30.0 |
Testing and CI setup | Test harness works and can be run from a single command listed in the service.yml file. CI is running and is passing. | 25.0 |
Production / Builds | Application is available from the web, as a mobile application via Microsoft App Center, or a GitHub Release otherwise. Exception tracking via Sentry and Logging is set up. | 25.0 |
Roadmap | Roadmap and Stackshare.io are updated with any new decisions and/or changes. Paragraph included in release covers progress and answers questions (-100% on this section if not included). | 10.0 |
| Total: | 100 |
Rating Scale
This scale is used for each line of the rubric above.
Rating | Result |
---|
Outstanding, Thoughtful and thorough | 100% of pts |
Strong, Provides some thought | 80% of pts |
Acceptable, Simple explanation | 60% of pts |
Insufficient, Little effort was made to give explanations | 40% of pts |
Unacceptable, No effort was made or the section was missing | 0% of pts |