From 80bbdbb9d411c2d46831e67485dfacbd27a12bdd Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Sat, 29 Sep 2018 14:46:26 -0400 Subject: [PATCH 01/25] circleci default config --- .circleci/config.yml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..cfacfa7a --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,39 @@ +# Javascript Node CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-javascript/ for more details +# +version: 2 +jobs: + build: + docker: + # specify the version you desire here + - image: circleci/node:7.10 + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/mongo:3.4.4 + + working_directory: ~/cis411_lab0 + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "package.json" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: yarn install + + - save_cache: + paths: + - node_modules + key: v1-dependencies-{{ checksum "package.json" }} + + # run tests! + - run: yarn test + + From ce1fceaedfea88160f91f14fe32883bb57dbd92c Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Sat, 29 Sep 2018 14:51:50 -0400 Subject: [PATCH 02/25] circleci default config --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cfacfa7a..fca7761e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,14 +7,14 @@ jobs: build: docker: # specify the version you desire here - - image: circleci/node:7.10 + - image: circleci/node:10.3 # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ # - image: circleci/mongo:3.4.4 - working_directory: ~/cis411_lab0 + working_directory: ~/repo steps: - checkout From 97da547c0458bf6809089e2389b346054a4f04be Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Mon, 1 Oct 2018 22:55:44 -0400 Subject: [PATCH 03/25] Update LAB.md --- labreports/LAB.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/labreports/LAB.md b/labreports/LAB.md index 87c9a5f8..5ae6e5c9 100644 --- a/labreports/LAB.md +++ b/labreports/LAB.md @@ -1,8 +1,8 @@ # Lab Report Template for CIS4011_Lab0 -Course: Messiah College CIS 411, Fall 2018 -Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch) -Name: YOUR NAME -GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE) +Course: Messiah College CIS 411, Fall 2018
+Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
+Name: YOUR NAME
+GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE)
# Step 1: Fork this repository - The URL of my forked repository @@ -54,4 +54,4 @@ _Remember to reference at least one other student in the PR content via their Gi PR reference in the report to one of the following: 1. Add one or more unit tests to the core assignment project. 2. Configure the CircleCI config.yml to automatically build a Docker image of the project. -3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. \ No newline at end of file +3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. From 37be3c8e14d10b0103e28adf49485a97e400e5b0 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Mon, 1 Oct 2018 22:58:06 -0400 Subject: [PATCH 04/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 6be3615f..3fc29e57 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -18,7 +18,7 @@ Lab reports will be submitted by generating a markdown file in the labreports di 1. After logging in, navigate to the [root](https://github.com/tangollama/cis411_lab0) of this repository. 2. Fork this repository to your personal GitHub account (hint: read the page). 3. **Record the URL to your forked repo in your lab report.** -4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (tangollama) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._) +4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (tangollama) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this respository.) # Step 2: Clone your forked repository from the command line 1. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. @@ -83,4 +83,4 @@ For the purposes of gaining 10%, 20% _or even more extra credit_ on the assignme 2. Configure the CircleCI config.yml to automatically build a Docker image of the project. 3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. -**Note this work in your lab report** by submitting it in your PR and linking to either the PR or the specific commit as recorded in GitHub in your lab report. \ No newline at end of file +**Note this work in your lab report** by submitting it in your PR and linking to either the PR or the specific commit as recorded in GitHub in your lab report. From 59ef18a7dc84b951342f55bb7b3284106566692a Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Mon, 1 Oct 2018 23:01:04 -0400 Subject: [PATCH 05/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 3fc29e57..947ddeff 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -49,6 +49,7 @@ mutation { 4. Push the change to GitHub ```git push -u origin labreport```. 5. As you make additional changes to the lab report, commit and push at least one more change to the branch. 6. **Add the output of your git commit log** for your feature branch to your lab report ```git log --oneline```. +7. **Generate a simple diagram** that demonstrates the relationship between your master and feature branch in your forked repository. # Step 4: Setup a Continuous Integration configuration 1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. From d36ad9099983ba379737b07fe2c081915b369a88 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Mon, 1 Oct 2018 23:01:41 -0400 Subject: [PATCH 06/25] Update LAB.md --- labreports/LAB.md | 1 + 1 file changed, 1 insertion(+) diff --git a/labreports/LAB.md b/labreports/LAB.md index 5ae6e5c9..63167ea2 100644 --- a/labreports/LAB.md +++ b/labreports/LAB.md @@ -36,6 +36,7 @@ e429c1a lab instructions 7362cd1 working 44ce6ae Initial commit ``` +- The accompanying diagram of what my feature branch precisely and conceptually represents # Step 4: Setup a Continuous Integration configuration - What is the .circleci/config.yml doing? From 1949d2a5bc52a56acf13a926f4a86a73b403f3bf Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Mon, 1 Oct 2018 23:02:52 -0400 Subject: [PATCH 07/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 947ddeff..83576fed 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -53,7 +53,7 @@ mutation { # Step 4: Setup a Continuous Integration configuration 1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. -2. Login to CircleCI and add your project to your account (ex. https://circleci.com/add-projects/gh/[YOUR GITHUB HANDLE]) by clicking _Add Project_. +2. Login to CircleCI and add your project to your account (ex. https://circleci.com/add-projects/gh/[YOUR_GITHUB_HANDLE]) by clicking _Add Project_. 3. Follow the setup instructions, including creating the .circleci directory and adding the default config.yml file. ![CircleCI setup](../assets/circleci_setup.png "CircleCI Setup") - Create a directory name .circleci in your project ```mkdir .circleci```. From 37393aea1598afefe2bd26bce759a72d5505d667 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Tue, 2 Oct 2018 13:38:13 -0400 Subject: [PATCH 08/25] Bug fixed --- labreports/LAB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labreports/LAB.md b/labreports/LAB.md index 63167ea2..ef15366b 100644 --- a/labreports/LAB.md +++ b/labreports/LAB.md @@ -1,4 +1,4 @@ -# Lab Report Template for CIS4011_Lab0 +# Lab Report Template for CIS411_Lab0 Course: Messiah College CIS 411, Fall 2018
Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
Name: YOUR NAME
From 7aaa9f3dcd9f88e6d84652111e80eea2a7e7821a Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Tue, 2 Oct 2018 13:46:00 -0400 Subject: [PATCH 09/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 83576fed..8cb5e49c 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -43,7 +43,7 @@ mutation { # Step 3: Creating a feature branch [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. -1. Create the branch ```git branch -c labreport```. +1. Create the branch ```git branch labreport```. 2. Create a lab report mardown file (ex. ```cp labreports/LAB.md labreports/LAB_[GITHUB USERNAME].md``` ). 3. Add the file to your branch ```git commit -a -m "your commit and reference @tangollama in the message"```. 4. Push the change to GitHub ```git push -u origin labreport```. From 347bd503d23ef43d4c7c39f766f3b5202c56ea56 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Tue, 2 Oct 2018 13:47:08 -0400 Subject: [PATCH 10/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 8cb5e49c..7a38bee0 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -43,7 +43,7 @@ mutation { # Step 3: Creating a feature branch [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. -1. Create the branch ```git branch labreport```. +1. Create the branch ```git checkout -b labreport```. 2. Create a lab report mardown file (ex. ```cp labreports/LAB.md labreports/LAB_[GITHUB USERNAME].md``` ). 3. Add the file to your branch ```git commit -a -m "your commit and reference @tangollama in the message"```. 4. Push the change to GitHub ```git push -u origin labreport```. From 2f01bf4ca5c8e1b68baf8b71d9e206bfe0de1f27 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Tue, 2 Oct 2018 14:01:01 -0400 Subject: [PATCH 11/25] Update LAB_INSTRUCTIONS.md --- labreports/LAB_INSTRUCTIONS.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index 7a38bee0..e42a9668 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -45,11 +45,12 @@ mutation { [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. 1. Create the branch ```git checkout -b labreport```. 2. Create a lab report mardown file (ex. ```cp labreports/LAB.md labreports/LAB_[GITHUB USERNAME].md``` ). -3. Add the file to your branch ```git commit -a -m "your commit and reference @tangollama in the message"```. -4. Push the change to GitHub ```git push -u origin labreport```. -5. As you make additional changes to the lab report, commit and push at least one more change to the branch. -6. **Add the output of your git commit log** for your feature branch to your lab report ```git log --oneline```. -7. **Generate a simple diagram** that demonstrates the relationship between your master and feature branch in your forked repository. +3. Add your lab report ```git add *``` +4. Add the file to your branch ```git commit -a -m "your commit and reference @tangollama in the message"```. +5. Push the change to GitHub ```git push -u origin labreport```. +6. As you make additional changes to the lab report, commit and push at least one more change to the branch. +7. **Add the output of your git commit log** for your feature branch to your lab report ```git log --oneline```. +8. **Generate a simple diagram** that demonstrates the relationship between your master and feature branch in your forked repository. # Step 4: Setup a Continuous Integration configuration 1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. From a4096db370f8358eeccf61822e42cb6377b4c911 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Wed, 3 Oct 2018 15:24:28 -0400 Subject: [PATCH 12/25] Create README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..d20a7f15 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# cis411_lab0 +GitHub and CircleCI building a simple GraphQL service + +# Doing the Lab +- Here's the [link to the lab instructions](labreports/LAB_INSTRUCTIONS.md). +- Here's the [link to the lab template](labreports/LAB.md). + +Go forth and follow the instructions! From 8c386138ea1f5e6ce1fc45516dd6b63bb8e26d49 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 21:05:26 -0400 Subject: [PATCH 13/25] Initial commit of labreport with @tangollama --- labreports/LAB_TREVORDBUNCH.md | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 labreports/LAB_TREVORDBUNCH.md diff --git a/labreports/LAB_TREVORDBUNCH.md b/labreports/LAB_TREVORDBUNCH.md new file mode 100644 index 00000000..ef15366b --- /dev/null +++ b/labreports/LAB_TREVORDBUNCH.md @@ -0,0 +1,58 @@ +# Lab Report Template for CIS411_Lab0 +Course: Messiah College CIS 411, Fall 2018
+Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
+Name: YOUR NAME
+GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE)
+ +# Step 1: Fork this repository +- The URL of my forked repository +- The accompanying diagram of what my fork precisely and conceptually represents + +# Step 2: Clone your forked repository from the command line +- My GraphQL response from adding myself as an account on the test project +``` +{ + "data": { + "mutateAccount": { + "id": "a10db030-ded8-4397-a78f-30b79d3497ab", + "name": "MY NAME", + "email": "MY EMAIL" + } + } +} +``` + +# Step 3: Creating a feature branch +- The output of my git commit log +``` +d2ddea5 (HEAD -> master, origin/master, origin/HEAD) Version 0.0.1 of the lab instructions +ab312fc more progress +62fb0a5 more progress +fe1937b more in the lab instructions +3e807fb first section +9ae6b83 remove LAB.md +e429c1a lab instructions +968099e remove test db +7362cd1 working +44ce6ae Initial commit +``` +- The accompanying diagram of what my feature branch precisely and conceptually represents + +# Step 4: Setup a Continuous Integration configuration +- What is the .circleci/config.yml doing? +- What do the various sections on the config file do? +- When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? +- If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? + +# Step 5: Merging the feature branch +* The output of my git commit log +* A screenshot of the _Jobs_ list in CircleCI + +# Step 6: Submitting a Pull Request +_Remember to reference at least one other student in the PR content via their GitHub handle._ + +# Step 7: [EXTRA CREDIT] Augment the core project +PR reference in the report to one of the following: +1. Add one or more unit tests to the core assignment project. +2. Configure the CircleCI config.yml to automatically build a Docker image of the project. +3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. From 1ead5433b5aea9aa3910f962a0683c562d887541 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 21:14:35 -0400 Subject: [PATCH 14/25] remove LAB.md --- labreports/LAB.md | 58 ----------------------------------------------- 1 file changed, 58 deletions(-) delete mode 100644 labreports/LAB.md diff --git a/labreports/LAB.md b/labreports/LAB.md deleted file mode 100644 index ef15366b..00000000 --- a/labreports/LAB.md +++ /dev/null @@ -1,58 +0,0 @@ -# Lab Report Template for CIS411_Lab0 -Course: Messiah College CIS 411, Fall 2018
-Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
-Name: YOUR NAME
-GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE)
- -# Step 1: Fork this repository -- The URL of my forked repository -- The accompanying diagram of what my fork precisely and conceptually represents - -# Step 2: Clone your forked repository from the command line -- My GraphQL response from adding myself as an account on the test project -``` -{ - "data": { - "mutateAccount": { - "id": "a10db030-ded8-4397-a78f-30b79d3497ab", - "name": "MY NAME", - "email": "MY EMAIL" - } - } -} -``` - -# Step 3: Creating a feature branch -- The output of my git commit log -``` -d2ddea5 (HEAD -> master, origin/master, origin/HEAD) Version 0.0.1 of the lab instructions -ab312fc more progress -62fb0a5 more progress -fe1937b more in the lab instructions -3e807fb first section -9ae6b83 remove LAB.md -e429c1a lab instructions -968099e remove test db -7362cd1 working -44ce6ae Initial commit -``` -- The accompanying diagram of what my feature branch precisely and conceptually represents - -# Step 4: Setup a Continuous Integration configuration -- What is the .circleci/config.yml doing? -- What do the various sections on the config file do? -- When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? -- If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? - -# Step 5: Merging the feature branch -* The output of my git commit log -* A screenshot of the _Jobs_ list in CircleCI - -# Step 6: Submitting a Pull Request -_Remember to reference at least one other student in the PR content via their GitHub handle._ - -# Step 7: [EXTRA CREDIT] Augment the core project -PR reference in the report to one of the following: -1. Add one or more unit tests to the core assignment project. -2. Configure the CircleCI config.yml to automatically build a Docker image of the project. -3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. From a9c1de65ea284811523cb034b29c0700513a584e Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 21:15:28 -0400 Subject: [PATCH 15/25] Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH --- labreports/LAB_TREVORDBUNCH.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/labreports/LAB_TREVORDBUNCH.md b/labreports/LAB_TREVORDBUNCH.md index ef15366b..26c11272 100644 --- a/labreports/LAB_TREVORDBUNCH.md +++ b/labreports/LAB_TREVORDBUNCH.md @@ -1,12 +1,13 @@ # Lab Report Template for CIS411_Lab0 Course: Messiah College CIS 411, Fall 2018
Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
-Name: YOUR NAME
-GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE)
+Name: Trevor Bunch
+GitHub: [trevordbunch](https://github.com/trevordbunch/)
# Step 1: Fork this repository -- The URL of my forked repository +- The URL of my forked repository: https://github.com/trevordbunch/cis411_lab0 - The accompanying diagram of what my fork precisely and conceptually represents +A Fork is simply making a copy for editing (https://docs.google.com/drawings/d/srXWeXWrdTEF2m-PZ_5i45A/image?w=624&h=299&rev=79&ac=1&parent=1jBn3-g7u51tsfcxDgktJtrjsEsr_1066nKwRCcdx7oI) # Step 2: Clone your forked repository from the command line - My GraphQL response from adding myself as an account on the test project @@ -14,9 +15,9 @@ GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE)
{ "data": { "mutateAccount": { - "id": "a10db030-ded8-4397-a78f-30b79d3497ab", - "name": "MY NAME", - "email": "MY EMAIL" + "id": "5c345bb5-0c54-44ae-8e57-f5f00b0eddbb", + "name": "TREVOR BUNCH", + "email": "tbunch@messiah.edu" } } } From dbf826a1e8fba7c33732209db296d90311d6cdb2 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 21:54:57 -0400 Subject: [PATCH 16/25] Answer Step 4 --- labreports/LAB_TREVORDBUNCH.md | 41 +++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/labreports/LAB_TREVORDBUNCH.md b/labreports/LAB_TREVORDBUNCH.md index 26c11272..5d93f878 100644 --- a/labreports/LAB_TREVORDBUNCH.md +++ b/labreports/LAB_TREVORDBUNCH.md @@ -26,24 +26,63 @@ A Fork is simply making a copy for editing (https://docs.google.com/drawings/d/s # Step 3: Creating a feature branch - The output of my git commit log ``` -d2ddea5 (HEAD -> master, origin/master, origin/HEAD) Version 0.0.1 of the lab instructions +Trevors-MBP:cis411_lab0 trevorbunch$ git log --oneline +a9c1de6 (HEAD -> labreport, origin/labreport) Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH +1ead543 remove LAB.md +8c38613 Initial commit of labreport with @tangollama +dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci +a4096db Create README.md +2f01bf4 Update LAB_INSTRUCTIONS.md +347bd50 Update LAB_INSTRUCTIONS.md +7aaa9f3 Update LAB_INSTRUCTIONS.md +37393ae Bug fixed +1949d2a Update LAB_INSTRUCTIONS.md +d36ad90 Update LAB.md +59ef18a Update LAB_INSTRUCTIONS.md +37be3c8 Update LAB_INSTRUCTIONS.md +97da547 Update LAB.md +0bd6244 (upstream/purelab, origin/purelab) updated Step 0 title +4562cd8 added npm and node install repreq +255051e adding template +13a09b7 Adding the LAB.md and correcting some instructions. +d2ddea5 Version 0.0.1 of the lab isntructions ab312fc more progress 62fb0a5 more progress fe1937b more in the lab instructions 3e807fb first section 9ae6b83 remove LAB.md e429c1a lab instructions +ce1fcea circleci default config +80bbdbb circleci default config 968099e remove test db 7362cd1 working 44ce6ae Initial commit +(END) ``` - The accompanying diagram of what my feature branch precisely and conceptually represents +https://docs.google.com/drawings/d/s70s3vc2MhJ45lPsxToQzAg/image?w=624&h=404&rev=67&ac=1&parent=1jBn3-g7u51tsfcxDgktJtrjsEsr_1066nKwRCcdx7oI # Step 4: Setup a Continuous Integration configuration - What is the .circleci/config.yml doing? +CircleCI is a configuration is code methodology, so this configuration defines jobs that are ran after each commit. + - What do the various sections on the config file do? +`Version` indicates which CircleCI platform you are using. +`Jobs` outlines each workflow, in this case `Build` is the only job, where it outlines the type of docker container to spin up, declares a working direction and the steps are a sequencing of command lines that effectively does 5 steps: +1. Checkouts the current code base +2. Refreshes any supporting library dependencies +3. Installs the application +4. Saves any supporting libraries +5. Runs any defined tests. + - When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? +The build should be relatively error free or Approved to start running (dependencies are updated and any outlined tests are passed) + - If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? +I would do three things: 1) breakout the jobs into a workflow (requiring job sequence/dependencies), 2) further define tests, and 3) create different workflows per environment (dev, staging and prod). + +SOURCE: https://circleci.com/docs/2.0/config-intro/#section=configuration + # Step 5: Merging the feature branch * The output of my git commit log From ec187705cd0d1df05d0dd48b037788a74a047c19 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 22:04:10 -0400 Subject: [PATCH 17/25] Add Images --- labreports/Lab0_1_Fork.png | Bin 0 -> 17995 bytes labreports/Lab0_2_Branch.png | Bin 0 -> 34035 bytes labreports/Lab0_3_CircleCI.png | Bin 0 -> 94278 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 labreports/Lab0_1_Fork.png create mode 100644 labreports/Lab0_2_Branch.png create mode 100644 labreports/Lab0_3_CircleCI.png diff --git a/labreports/Lab0_1_Fork.png b/labreports/Lab0_1_Fork.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf4bed66c7482c9d0940f8d9b38c678bf09f972 GIT binary patch literal 17995 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 ABLDyZ literal 0 HcmV?d00001 diff --git a/labreports/Lab0_2_Branch.png b/labreports/Lab0_2_Branch.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f51cd9f1387b7a551405cba75b1cfba8db3da3 GIT binary patch literal 34035 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 I!YKIv0Q>{-0ssI2 literal 0 HcmV?d00001 diff --git a/labreports/Lab0_3_CircleCI.png b/labreports/Lab0_3_CircleCI.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e6ccba8791da0502d722fd9ca93449259aa274 GIT binary patch literal 94278 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

}PAM^78zDe<#mUPUW)yz0w`#@#pvA;$pTC^BWeH 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 literal 0 HcmV?d00001 From 47e83cd7fcbc261418be7cf14f345db995d67554 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Wed, 25 Sep 2019 22:14:30 -0400 Subject: [PATCH 18/25] Add images to LabReport --- labreports/LAB_TREVORDBUNCH.md | 46 +++++++++++++++------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/labreports/LAB_TREVORDBUNCH.md b/labreports/LAB_TREVORDBUNCH.md index 5d93f878..786a7996 100644 --- a/labreports/LAB_TREVORDBUNCH.md +++ b/labreports/LAB_TREVORDBUNCH.md @@ -7,7 +7,8 @@ GitHub: [trevordbunch](https://github.com/trevordbunch/)
# Step 1: Fork this repository - The URL of my forked repository: https://github.com/trevordbunch/cis411_lab0 - The accompanying diagram of what my fork precisely and conceptually represents -A Fork is simply making a copy for editing (https://docs.google.com/drawings/d/srXWeXWrdTEF2m-PZ_5i45A/image?w=624&h=299&rev=79&ac=1&parent=1jBn3-g7u51tsfcxDgktJtrjsEsr_1066nKwRCcdx7oI) +A Fork is simply making a copy for editing +![Forked Project](Lab0_1_Fork.png "Forked Project") # Step 2: Clone your forked repository from the command line - My GraphQL response from adding myself as an account on the test project @@ -32,35 +33,12 @@ a9c1de6 (HEAD -> labreport, origin/labreport) Complete Step 1, 2 and 3 of LAB_TR 8c38613 Initial commit of labreport with @tangollama dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci a4096db Create README.md -2f01bf4 Update LAB_INSTRUCTIONS.md -347bd50 Update LAB_INSTRUCTIONS.md -7aaa9f3 Update LAB_INSTRUCTIONS.md -37393ae Bug fixed -1949d2a Update LAB_INSTRUCTIONS.md -d36ad90 Update LAB.md -59ef18a Update LAB_INSTRUCTIONS.md -37be3c8 Update LAB_INSTRUCTIONS.md -97da547 Update LAB.md -0bd6244 (upstream/purelab, origin/purelab) updated Step 0 title -4562cd8 added npm and node install repreq -255051e adding template -13a09b7 Adding the LAB.md and correcting some instructions. -d2ddea5 Version 0.0.1 of the lab isntructions -ab312fc more progress -62fb0a5 more progress -fe1937b more in the lab instructions -3e807fb first section -9ae6b83 remove LAB.md -e429c1a lab instructions -ce1fcea circleci default config -80bbdbb circleci default config -968099e remove test db -7362cd1 working +... 44ce6ae Initial commit (END) ``` - The accompanying diagram of what my feature branch precisely and conceptually represents -https://docs.google.com/drawings/d/s70s3vc2MhJ45lPsxToQzAg/image?w=624&h=404&rev=67&ac=1&parent=1jBn3-g7u51tsfcxDgktJtrjsEsr_1066nKwRCcdx7oI +![Branch with Commits](Lab0_2_Branch.png "Branch with Commits") # Step 4: Setup a Continuous Integration configuration - What is the .circleci/config.yml doing? @@ -86,11 +64,27 @@ SOURCE: https://circleci.com/docs/2.0/config-intro/#section=configuration # Step 5: Merging the feature branch * The output of my git commit log +``` +Trevors-MBP:cis411_lab0 trevorbunch$ git log --oneline +dbf826a (HEAD -> labreport, origin/labreport) Answer Step 4 +a9c1de6 Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH +1ead543 remove LAB.md +8c38613 Initial commit of labreport with @tangollama +dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci +a4096db Create README.md +... +44ce6ae Initial commit +(END) +``` + * A screenshot of the _Jobs_ list in CircleCI +![CircleCI Jobs](Lab0_3_CircleCI.png "CircleCI Jobs") # Step 6: Submitting a Pull Request _Remember to reference at least one other student in the PR content via their GitHub handle._ + + # Step 7: [EXTRA CREDIT] Augment the core project PR reference in the report to one of the following: 1. Add one or more unit tests to the core assignment project. From eafe25381af1e6f0516799e8674266b413ceaf1d Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Sun, 24 Jan 2021 16:26:33 -0500 Subject: [PATCH 19/25] Adjust submitting instructions --- labreports/LAB_INSTRUCTIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md index e42a9668..37484b72 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/labreports/LAB_INSTRUCTIONS.md @@ -73,7 +73,7 @@ mutation { 5. Validate that your CircleCI build is running doing so successfully, **by grabbing a screenshot of the _Jobs_ list in CircleCI and including it in your report**. # Step 6: Submitting a Pull Request -Once you've completed your report markdown, have ensured that your forked repository is successfully running in CircleCI, and have committed all your changes to your (primary) master branch, initiate a Pull Request in GitHub to submit your Lab Report. +Once you've completed your report markdown, have ensured that your forked repository is successfully running in CircleCI, and have committed all your changes to your (primary) master branch, and `push` your updated master branch back to Github, and then initiate a Pull Request in GitHub to submit your Lab Report. 1. Navigate to the root of your forked repository (ex. https://github.com/YOURHANDLE/cis411_lab0). 2. Click the _New pull request_ button. 3. Choose the base fork _tangollama/cis411_lab0_ is the target and that your fully updated _master_ branch is the source. From 13e571fd053eda91ec500f3f46277846bd7bdc61 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Sun, 14 Feb 2021 20:58:45 -0500 Subject: [PATCH 20/25] Update Lab readme, instructions and templates --- ...LAB_INSTRUCTIONS.md => LAB_INSTRUCTIONS.md | 50 +++++----- README.md | 48 ++++++++- .../circleci_success.png | Bin labreports/LAB_TREVORDBUNCH.md | 92 ------------------ labreports/LAB_Template.md | 79 +++++++++++++++ labreports/Lab0_1_Fork.png | Bin 17995 -> 0 bytes labreports/Lab0_2_Branch.png | Bin 34035 -> 0 bytes package-lock.json | 2 +- package.json | 8 +- 9 files changed, 149 insertions(+), 130 deletions(-) rename labreports/LAB_INSTRUCTIONS.md => LAB_INSTRUCTIONS.md (67%) rename labreports/Lab0_3_CircleCI.png => assets/circleci_success.png (100%) delete mode 100644 labreports/LAB_TREVORDBUNCH.md create mode 100644 labreports/LAB_Template.md delete mode 100644 labreports/Lab0_1_Fork.png delete mode 100644 labreports/Lab0_2_Branch.png diff --git a/labreports/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md similarity index 67% rename from labreports/LAB_INSTRUCTIONS.md rename to LAB_INSTRUCTIONS.md index 37484b72..d2030f6e 100644 --- a/labreports/LAB_INSTRUCTIONS.md +++ b/LAB_INSTRUCTIONS.md @@ -1,29 +1,23 @@ -# CIS 411 Lab 0: GitHub + CircleCI -The purpose of this lab is to both impart/confirm a level of professional comfort working with tools like GitHub and CircleCI as well as to invite a student to consider what precisely is happening conceptually and actually (behind the scenes) in the execution of the lab. +# Lab Instructions -## Submitting work -Lab reports will be submitted by generating a markdown file in the labreports directory under the naming convention: **LAB_[GITHUB HANDLE].md**, and submitting a Pull Request to this repository that include your lab report as well as any accompanying images/files (there are diagrams required in the lab content). - -* Throughout these instructions, you'll find that **items marked in bold text** reference content you are to submit in your lab report. -* For the purposes of clear communication, you may base your lab report off of the template found in [LAB.md](LAB.md), but you're also free, welcome, and encouraged to get more creative. -* If you are unfamiliar with markdown, I recommend checking [1000 places on the Interwebs](http://lmgtfy.com/?q=learn+markdown) that will help you close that gap. - -# Step 0: Create a GitHub account++ +## Step 0: Create a GitHub account++ 1. If you don't have a GitHub account already, [create one](https://github.com/join). If you do, **record the name of your handle in your lab report** and **record a link to one repository you either follow or star**. 2. If you don't already have _git_ installed on your development machine, [do so](https://git-scm.com/downloads). 3. Install a text editor or some sort of application for local development. Lately, I'm partial to [Visual Studio Code](https://code.visualstudio.com/) and my instructions assume it's use, but you're welcome to diviate. _Each one should choose their own sword, etc. etc._ 4. To run the project in Step 2, you'll need to have [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) installed. -# Step 1: Fork this repository -1. After logging in, navigate to the [root](https://github.com/tangollama/cis411_lab0) of this repository. +## Step 1: Fork this repository +1. After logging in, navigate to the [purelab branch root](https://github.com/trevordbunch/cis411_lab1_CI/tree/purelab) of this repository. 2. Fork this repository to your personal GitHub account (hint: read the page). 3. **Record the URL to your forked repo in your lab report.** 4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (tangollama) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this respository.) -# Step 2: Clone your forked repository from the command line +## Step 2: Clone your forked repository from the command line 1. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. -2. Open the terminal or command line interface on your development machine, navigate to your chosen working directory, and execute the following command: ```git clone [YOUR COPIED GITHUB CLONE REFERENCE]```. -3. Navigate to that directory ```cd cis411_lab0```. +2. Open the terminal or command line interface on your development machine, *navigate to your chosen working directory*, and execute the following command: ```git clone [YOUR COPIED GITHUB CLONE REFERENCE]```. +3. Navigate to that directory ```cd cis411_lab1_CI```. + +## Step 3: Run the application locally 4. Run ```npm install``` and watch the magic happen. 5. Run ```npm start``` and navigate to http://localhost:4000/graphql. 6. Run the following GraphQL mutation in GraphiQL and **record the response**. @@ -41,18 +35,18 @@ mutation { } ``` -# Step 3: Creating a feature branch +## Step 4: Creating a feature branch [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. 1. Create the branch ```git checkout -b labreport```. -2. Create a lab report mardown file (ex. ```cp labreports/LAB.md labreports/LAB_[GITHUB USERNAME].md``` ). +2. Create a lab report mardown file (ex. ```cp labreports/LAB_Template.md labreports/LAB_[GITHUB USERNAME].md``` ). 3. Add your lab report ```git add *``` -4. Add the file to your branch ```git commit -a -m "your commit and reference @tangollama in the message"```. +4. Add the file to your branch ```git commit -a -m "your commit and reference @trevordbunch in the message"```. 5. Push the change to GitHub ```git push -u origin labreport```. 6. As you make additional changes to the lab report, commit and push at least one more change to the branch. 7. **Add the output of your git commit log** for your feature branch to your lab report ```git log --oneline```. -8. **Generate a simple diagram** that demonstrates the relationship between your master and feature branch in your forked repository. +8. **Generate a simple diagram** that demonstrates the relationship between your main and feature branch in your forked repository. -# Step 4: Setup a Continuous Integration configuration +## Step 5: Setup a Continuous Integration configuration 1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. 2. Login to CircleCI and add your project to your account (ex. https://circleci.com/add-projects/gh/[YOUR_GITHUB_HANDLE]) by clicking _Add Project_. 3. Follow the setup instructions, including creating the .circleci directory and adding the default config.yml file. @@ -65,21 +59,21 @@ mutation { - When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? - If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? -# Step 5: Merging the feature branch +## Step 6: Merging the feature branch 1. Commit your changes to your feature branch ```git commit -a -m "your commit message```. -2. Switch to the master branch ```git checkout master```. +2. Switch to the main branch ```git checkout main```. 3. Merge the changes from your feature branch ```git merge labreport```. -4. **Add the output of your git commit log** from master to your lab report ```git log --oneline```. +4. **Add the output of your git commit log** from main to your lab report ```git log --oneline```. 5. Validate that your CircleCI build is running doing so successfully, **by grabbing a screenshot of the _Jobs_ list in CircleCI and including it in your report**. -# Step 6: Submitting a Pull Request -Once you've completed your report markdown, have ensured that your forked repository is successfully running in CircleCI, and have committed all your changes to your (primary) master branch, and `push` your updated master branch back to Github, and then initiate a Pull Request in GitHub to submit your Lab Report. -1. Navigate to the root of your forked repository (ex. https://github.com/YOURHANDLE/cis411_lab0). +## Step 7: Submitting a Pull Request +Once you've completed your report markdown, have ensured that your forked repository is successfully running in CircleCI, and have committed all your changes to your (primary) main branch, and `push` your updated main branch back to Github, and then initiate a Pull Request in GitHub to submit your Lab Report. +1. Navigate to the root of your forked repository (ex. https://github.com/YOURHANDLE/cis411_lab1_CI). 2. Click the _New pull request_ button. -3. Choose the base fork _tangollama/cis411_lab0_ is the target and that your fully updated _master_ branch is the source. +3. Choose the base fork _trevordbunch/cis411_lab1_ is the target and that your fully updated _main_ branch is the source. 4. Enter a title and description for the Pull Request (PR), **referencing at least one other student in the content via their GitHub handle**, and submit the PR. -# Step 7: [EXTRA CREDIT] Augment the core project +# Step 8: [EXTRA CREDIT] Augment the core project For the purposes of gaining 10%, 20% _or even more extra credit_ on the assignment, perform any of the following: 1. Add one or more unit tests to the core assignment project. 2. Configure the CircleCI config.yml to automatically build a Docker image of the project. diff --git a/README.md b/README.md index d20a7f15..04a62df6 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,46 @@ -# cis411_lab0 -GitHub and CircleCI building a simple GraphQL service +# CIS 411 Lab 1: Continuous Integration +This is the Requirements Lab for CIS 411: Systems Analysis and Design for [Messiah University](http://messiah.edu) + +This lab has four purposes: +1. Within Systems Analysis and Design, you are going to need to articulate a DEVOPs process that includes **Continuous Integration (CI)**, practice of merging all developers' working copies to a shared mainline several times a day,[^1] and be able to describe what is conceptually happening behind the scenes. +2. Develop a comfort using CI tools, such as CircleCI. +3. Read installation requirements to get a system running locally, so that you learn how to contribute and test locally. +4. To ensure that you are only accepting code that works within your repository, you will apply knowledge of spinning up a local environment into CI test condition. # Doing the Lab -- Here's the [link to the lab instructions](labreports/LAB_INSTRUCTIONS.md). -- Here's the [link to the lab template](labreports/LAB.md). +## 1. Pre-Requisites +1. GitHub account +2. Git is installed on your development machine. +3. Text editor or other integrated development environment (IDE) for modifying code. +4. Install [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) (STEP 3 in the Lab Instructions). +5. CircleCI account (STEP 5 in the Lab Instructions) + +## 2. Lab Description +Within this lab, you will need to fork a repository that has a simple node / graphql application. After confirming that you can successfully run and perform simple actions within the applicaiton, then you will configuration CircleCI to perform a test that the application did not break with any changes in the commit before allowing the code into the repository. + +Detailed instructions are [here](labreports/LAB_INSTRUCTIONS.md), and you are expected to compile your findings into a labreport following this [template](labreports/LAB_TEMPLATE.md). + +## 3. Submissions +You are expected to create a lab report as a markdown file under the labreports directory using the **LAB_[GITHUB Handle].md** naming convention in your forked repository. After you have reviewed your work, then you should submit a `Pull Request` to this repository with your lab report and any accompanying images/files (e.g., required diagrams). Add the `Pull Request` URL into the courseroom LMS (Canvas) for grading. + +# Resources +Lab Specific Help. +- [Detailed instructions](LAB_INSTRUCTIONS.md) +- [Lab template](labreports/LAB_Template.md) + +Node +- Node Download [https://nodejs.org/en/download/](https://nodejs.org/en/download/) +- Node Package Manager [https://docs.npmjs.com/cli/install](https://docs.npmjs.com/cli/install) +- Checking Node Versions [https://docs.npmjs.com/downloading-and-installing-node-js-and-npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) + +Footnotes +[^1]: Fowler, M. C*ontinuous Integration.* Retrieved from https://martinfowler.com/articles/continuousIntegration.html + +CircleCi +- [CircleCI Documentation](https://circleci.com/docs/) +- [Writing YAML](https://circleci.com/docs/2.0/writing-yaml/) +# License +This content is provided under the `MIT` [license](LICENSE). -Go forth and follow the instructions! +# Credits +Special thanks to Joel Worrall, aka [tangollama](https://github.com/tangollama), for co-developing this course and writing the original version of this lab [https://github.com/tangollama/cis411_lab0](https://github.com/tangollama/cis411_lab0). \ No newline at end of file diff --git a/labreports/Lab0_3_CircleCI.png b/assets/circleci_success.png similarity index 100% rename from labreports/Lab0_3_CircleCI.png rename to assets/circleci_success.png diff --git a/labreports/LAB_TREVORDBUNCH.md b/labreports/LAB_TREVORDBUNCH.md deleted file mode 100644 index 786a7996..00000000 --- a/labreports/LAB_TREVORDBUNCH.md +++ /dev/null @@ -1,92 +0,0 @@ -# Lab Report Template for CIS411_Lab0 -Course: Messiah College CIS 411, Fall 2018
-Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch)
-Name: Trevor Bunch
-GitHub: [trevordbunch](https://github.com/trevordbunch/)
- -# Step 1: Fork this repository -- The URL of my forked repository: https://github.com/trevordbunch/cis411_lab0 -- The accompanying diagram of what my fork precisely and conceptually represents -A Fork is simply making a copy for editing -![Forked Project](Lab0_1_Fork.png "Forked Project") - -# Step 2: Clone your forked repository from the command line -- My GraphQL response from adding myself as an account on the test project -``` -{ - "data": { - "mutateAccount": { - "id": "5c345bb5-0c54-44ae-8e57-f5f00b0eddbb", - "name": "TREVOR BUNCH", - "email": "tbunch@messiah.edu" - } - } -} -``` - -# Step 3: Creating a feature branch -- The output of my git commit log -``` -Trevors-MBP:cis411_lab0 trevorbunch$ git log --oneline -a9c1de6 (HEAD -> labreport, origin/labreport) Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH -1ead543 remove LAB.md -8c38613 Initial commit of labreport with @tangollama -dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci -a4096db Create README.md -... -44ce6ae Initial commit -(END) -``` -- The accompanying diagram of what my feature branch precisely and conceptually represents -![Branch with Commits](Lab0_2_Branch.png "Branch with Commits") - -# Step 4: Setup a Continuous Integration configuration -- What is the .circleci/config.yml doing? -CircleCI is a configuration is code methodology, so this configuration defines jobs that are ran after each commit. - -- What do the various sections on the config file do? -`Version` indicates which CircleCI platform you are using. -`Jobs` outlines each workflow, in this case `Build` is the only job, where it outlines the type of docker container to spin up, declares a working direction and the steps are a sequencing of command lines that effectively does 5 steps: -1. Checkouts the current code base -2. Refreshes any supporting library dependencies -3. Installs the application -4. Saves any supporting libraries -5. Runs any defined tests. - -- When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? -The build should be relatively error free or Approved to start running (dependencies are updated and any outlined tests are passed) - -- If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? -I would do three things: 1) breakout the jobs into a workflow (requiring job sequence/dependencies), 2) further define tests, and 3) create different workflows per environment (dev, staging and prod). - -SOURCE: https://circleci.com/docs/2.0/config-intro/#section=configuration - - -# Step 5: Merging the feature branch -* The output of my git commit log -``` -Trevors-MBP:cis411_lab0 trevorbunch$ git log --oneline -dbf826a (HEAD -> labreport, origin/labreport) Answer Step 4 -a9c1de6 Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH -1ead543 remove LAB.md -8c38613 Initial commit of labreport with @tangollama -dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci -a4096db Create README.md -... -44ce6ae Initial commit -(END) -``` - -* A screenshot of the _Jobs_ list in CircleCI -![CircleCI Jobs](Lab0_3_CircleCI.png "CircleCI Jobs") - -# Step 6: Submitting a Pull Request -_Remember to reference at least one other student in the PR content via their GitHub handle._ - - - -# Step 7: [EXTRA CREDIT] Augment the core project -PR reference in the report to one of the following: -1. Add one or more unit tests to the core assignment project. -2. Configure the CircleCI config.yml to automatically build a Docker image of the project. -3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. diff --git a/labreports/LAB_Template.md b/labreports/LAB_Template.md new file mode 100644 index 00000000..efa40f2d --- /dev/null +++ b/labreports/LAB_Template.md @@ -0,0 +1,79 @@ +# Lab Report: Continuous Integration +___ +**Course:** CIS 411, Spring 2021 +**Instructor(s):** [Trevor Bunch](https://github.com/trevordbunch) +**Name:** Your Name +**GitHub Handle:** Your GitHub Handle +**Repository:** Your Forked Repository +___ + +# Step 1: Fork this repository +- The URL of my forked repository: ENTER URL HERE +- The accompanying diagram of what my fork precisely and conceptually represents... + +# Step 2: Clone your forked repository from the command line +- My local file directory is... +- The command to navigate to the directory when I open up the command line is... + +# Step 3: Run the application locally +- My GraphQL response from adding myself as an account on the test project +``` json +{ + "data": { + "mutateAccount": { + "id": "5c345bb5-0c54-44ae-8e57-f5f00b0eddbb", + "name": "TREVOR BUNCH", + "email": "tbunch@messiah.edu" + } + } +} +``` + +# Step 4: Creating a feature branch +- The output of my git commit log +``` +Insert the logs here. +``` +- The accompanying diagram of what my feature branch precisely and conceptually represents... + +# Step 5: Setup a Continuous Integration configuration +- What is the .circleci/config.yml doing? + + +- What do the various sections on the config file do? + + +- When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? + + +- If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? + + +# Step 6: Merging the feature branch +* The output of my git commit log +``` +Trevors-MBP:cis411_lab0 trevorbunch$ git log --oneline +dbf826a (HEAD -> labreport, origin/labreport) Answer Step 4 +a9c1de6 Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH +1ead543 remove LAB.md +8c38613 Initial commit of labreport with @tangollama +dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci +a4096db Create README.md +... +44ce6ae Initial commit +(END) +``` + +* A screenshot of the _Jobs_ list in CircleCI +![CircleCI Success](../assets/circleci_success.png) + +# Step 7: Submitting a Pull Request +_Remember to reference at least one other student in the PR content via their GitHub handle._ + + + +# Step 8: [EXTRA CREDIT] Augment the core project +PR reference in the report to one of the following: +1. Add one or more unit tests to the core assignment project. +2. Configure the CircleCI config.yml to automatically build a Docker image of the project. +3. Configure an automatic deployment of the successful CircleCI build to an Amazon EC2 instance. diff --git a/labreports/Lab0_1_Fork.png b/labreports/Lab0_1_Fork.png deleted file mode 100644 index 1cf4bed66c7482c9d0940f8d9b38c678bf09f972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17995 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 ABLDyZ diff --git a/labreports/Lab0_2_Branch.png b/labreports/Lab0_2_Branch.png deleted file mode 100644 index f7f51cd9f1387b7a551405cba75b1cfba8db3da3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34035 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 I!YKIv0Q>{-0ssI2 diff --git a/package-lock.json b/package-lock.json index 95910295..f6da85af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "cis411_lab0", + "name": "cis411_lab1_CI", "version": "0.0.1", "lockfileVersion": 1, "requires": true, diff --git a/package.json b/package.json index f0276e50..6508e88b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "cis411_lab0", + "name": "cis411_lab1_CI", "version": "0.0.1", "description": "GitHub and CircleCI building a simple GraphQL service", "main": "server.js", @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/tangollama/cis411_lab0.git" + "url": "git+https://github.com/trevordbunch/cis411_lab1_CI.git" }, "keywords": [ "git", @@ -20,9 +20,9 @@ "author": "Joel Worrall ", "license": "MIT", "bugs": { - "url": "https://github.com/tangollama/cis411_lab0/issues" + "url": "https://github.com/trevordbunch/cis411_lab1_CI/issues" }, - "homepage": "https://github.com/tangollama/cis411_lab0#readme", + "homepage": "https://github.com/trevordbunch/cis411_lab1_CI#readme", "dependencies": { "express": "^4.16.3", "express-graphql": "^0.6.12", From 0e3ae4c5ad95f5ee092cd016d1d416063fb30b39 Mon Sep 17 00:00:00 2001 From: Trevor Bunch Date: Sun, 14 Feb 2021 21:10:16 -0500 Subject: [PATCH 21/25] Reset purelab --- .circleci/config.yml | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index fca7761e..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,39 +0,0 @@ -# Javascript Node CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-javascript/ for more details -# -version: 2 -jobs: - build: - docker: - # specify the version you desire here - - image: circleci/node:10.3 - - # Specify service dependencies here if necessary - # CircleCI maintains a library of pre-built images - # documented at https://circleci.com/docs/2.0/circleci-images/ - # - image: circleci/mongo:3.4.4 - - working_directory: ~/repo - - steps: - - checkout - - # Download and cache dependencies - - restore_cache: - keys: - - v1-dependencies-{{ checksum "package.json" }} - # fallback to using the latest cache if no exact match is found - - v1-dependencies- - - - run: yarn install - - - save_cache: - paths: - - node_modules - key: v1-dependencies-{{ checksum "package.json" }} - - # run tests! - - run: yarn test - - From d4f22eba0a615072459b2c3a1319db414e7a69e5 Mon Sep 17 00:00:00 2001 From: Trevor Bunch <38262261+trevordbunch@users.noreply.github.com> Date: Wed, 17 Feb 2021 09:26:17 -0500 Subject: [PATCH 22/25] Update repo branch names --- LAB_INSTRUCTIONS.md | 2 +- labreports/LAB_Template.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md index d2030f6e..47ef942c 100644 --- a/LAB_INSTRUCTIONS.md +++ b/LAB_INSTRUCTIONS.md @@ -10,7 +10,7 @@ 1. After logging in, navigate to the [purelab branch root](https://github.com/trevordbunch/cis411_lab1_CI/tree/purelab) of this repository. 2. Fork this repository to your personal GitHub account (hint: read the page). 3. **Record the URL to your forked repo in your lab report.** -4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (tangollama) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this respository.) +4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (trevordbunch) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this respository.) ## Step 2: Clone your forked repository from the command line 1. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. diff --git a/labreports/LAB_Template.md b/labreports/LAB_Template.md index efa40f2d..60cbac46 100644 --- a/labreports/LAB_Template.md +++ b/labreports/LAB_Template.md @@ -57,7 +57,7 @@ dbf826a (HEAD -> labreport, origin/labreport) Answer Step 4 a9c1de6 Complete Step 1, 2 and 3 of LAB_TREVORDBUNCH 1ead543 remove LAB.md 8c38613 Initial commit of labreport with @tangollama -dabceca (upstream/master, origin/master, origin/HEAD, master) Merge pull request #24 from tangollama/circleci +dabceca (upstream/main, origin/main, origin/HEAD, main) Merge pull request #24 from tangollama/circleci a4096db Create README.md ... 44ce6ae Initial commit From f8513e084de9b4533083ce998090aa69084f814e Mon Sep 17 00:00:00 2001 From: Trevor Bunch <38262261+trevordbunch@users.noreply.github.com> Date: Wed, 17 Feb 2021 17:01:05 -0500 Subject: [PATCH 23/25] Update Node links to Instructions --- LAB_INSTRUCTIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md index 47ef942c..1ec828a8 100644 --- a/LAB_INSTRUCTIONS.md +++ b/LAB_INSTRUCTIONS.md @@ -18,6 +18,7 @@ 3. Navigate to that directory ```cd cis411_lab1_CI```. ## Step 3: Run the application locally +1. If you haven't already - make sure that you have installed [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) 4. Run ```npm install``` and watch the magic happen. 5. Run ```npm start``` and navigate to http://localhost:4000/graphql. 6. Run the following GraphQL mutation in GraphiQL and **record the response**. From fa4fc85daee4a43cc32b22eeb68c4bea8b76ad05 Mon Sep 17 00:00:00 2001 From: Trevor Bunch <38262261+trevordbunch@users.noreply.github.com> Date: Thu, 4 Mar 2021 19:40:45 -0500 Subject: [PATCH 24/25] Update Instructions --- LAB_INSTRUCTIONS.md | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md index 1ec828a8..92fb646a 100644 --- a/LAB_INSTRUCTIONS.md +++ b/LAB_INSTRUCTIONS.md @@ -35,6 +35,7 @@ mutation { } } ``` +Use Ctrl+C or Cmd+C to exit out of the node applicaiton within the terminal. ## Step 4: Creating a feature branch [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. @@ -51,7 +52,7 @@ mutation { 1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. 2. Login to CircleCI and add your project to your account (ex. https://circleci.com/add-projects/gh/[YOUR_GITHUB_HANDLE]) by clicking _Add Project_. 3. Follow the setup instructions, including creating the .circleci directory and adding the default config.yml file. -![CircleCI setup](../assets/circleci_setup.png "CircleCI Setup") +![CircleCI setup](assets/circleci_setup.png "CircleCI Setup") - Create a directory name .circleci in your project ```mkdir .circleci```. - Add a file to that directory named config.yml ```code .circleci/config.yml```. - Copy the content for the setup instructions into config.yml. diff --git a/README.md b/README.md index 04a62df6..7920026b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # CIS 411 Lab 1: Continuous Integration -This is the Requirements Lab for CIS 411: Systems Analysis and Design for [Messiah University](http://messiah.edu) +This is the Continuous Integration for CIS 411: Systems Analysis and Design for [Messiah University](http://messiah.edu) This lab has four purposes: 1. Within Systems Analysis and Design, you are going to need to articulate a DEVOPs process that includes **Continuous Integration (CI)**, practice of merging all developers' working copies to a shared mainline several times a day,[^1] and be able to describe what is conceptually happening behind the scenes. From 2e92bd8d23e3d8aaa8ad4a82078bc89e92e2ee25 Mon Sep 17 00:00:00 2001 From: JeffSinsel Date: Tue, 31 Jan 2023 08:30:01 -0500 Subject: [PATCH 25/25] Fixed typos and links in markdown files --- LAB_INSTRUCTIONS.md | 14 +++++++------- README.md | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md index 92fb646a..85f41397 100644 --- a/LAB_INSTRUCTIONS.md +++ b/LAB_INSTRUCTIONS.md @@ -3,14 +3,14 @@ ## Step 0: Create a GitHub account++ 1. If you don't have a GitHub account already, [create one](https://github.com/join). If you do, **record the name of your handle in your lab report** and **record a link to one repository you either follow or star**. 2. If you don't already have _git_ installed on your development machine, [do so](https://git-scm.com/downloads). -3. Install a text editor or some sort of application for local development. Lately, I'm partial to [Visual Studio Code](https://code.visualstudio.com/) and my instructions assume it's use, but you're welcome to diviate. _Each one should choose their own sword, etc. etc._ +3. Install a text editor or some sort of application for local development. Lately, I'm partial to [Visual Studio Code](https://code.visualstudio.com/) and my instructions assume it's use, but you're welcome to deviate. _Each one should choose their own sword, etc. etc._ 4. To run the project in Step 2, you'll need to have [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) installed. ## Step 1: Fork this repository 1. After logging in, navigate to the [purelab branch root](https://github.com/trevordbunch/cis411_lab1_CI/tree/purelab) of this repository. 2. Fork this repository to your personal GitHub account (hint: read the page). 3. **Record the URL to your forked repo in your lab report.** -4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (trevordbunch) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this respository.) +4. **Generate a simple diagram** (in Google Draw or your favorite diagramming tool) that demonstrates the relationship between _this_ repository and my account (trevordbunch) with your account and your newly forked repository. (i.e. Is this the same thing as a source control branch or is there something unique about a fork in a distributed version control system? _Hint... I'm asking for a reason._ If it's helpful, think about the relationship you and another student who is conducting the fork command each has to this repository.) ## Step 2: Clone your forked repository from the command line 1. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. @@ -21,7 +21,7 @@ 1. If you haven't already - make sure that you have installed [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) 4. Run ```npm install``` and watch the magic happen. 5. Run ```npm start``` and navigate to http://localhost:4000/graphql. -6. Run the following GraphQL mutation in GraphiQL and **record the response**. +6. Run the following GraphQL mutation in GraphQL and **record the response**. ``` mutation { mutateAccount(input: { @@ -35,12 +35,12 @@ mutation { } } ``` -Use Ctrl+C or Cmd+C to exit out of the node applicaiton within the terminal. +Use Ctrl+C or Cmd+C to exit out of the node application within the terminal. ## Step 4: Creating a feature branch [Branching and merging](https://www.atlassian.com/agile/software-development/branching) is a common tactic used in change management and feature development. We're going to use a branch (and eventually a merge) to build our lab report. 1. Create the branch ```git checkout -b labreport```. -2. Create a lab report mardown file (ex. ```cp labreports/LAB_Template.md labreports/LAB_[GITHUB USERNAME].md``` ). +2. Create a lab report markdown file (ex. ```cp labreports/LAB_Template.md labreports/LAB_[GITHUB USERNAME].md``` ). 3. Add your lab report ```git add *``` 4. Add the file to your branch ```git commit -a -m "your commit and reference @trevordbunch in the message"```. 5. Push the change to GitHub ```git push -u origin labreport```. @@ -49,14 +49,14 @@ Use Ctrl+C or Cmd+C to exit out of the node applicaiton within the terminal. 8. **Generate a simple diagram** that demonstrates the relationship between your main and feature branch in your forked repository. ## Step 5: Setup a Continuous Integration configuration -1. [Signup for CircleCI](https://circleci.com/signup/) with your GitHub account. +1. [Sign up for CircleCI](https://circleci.com/signup/) with your GitHub account. 2. Login to CircleCI and add your project to your account (ex. https://circleci.com/add-projects/gh/[YOUR_GITHUB_HANDLE]) by clicking _Add Project_. 3. Follow the setup instructions, including creating the .circleci directory and adding the default config.yml file. ![CircleCI setup](assets/circleci_setup.png "CircleCI Setup") - Create a directory name .circleci in your project ```mkdir .circleci```. - Add a file to that directory named config.yml ```code .circleci/config.yml```. - Copy the content for the setup instructions into config.yml. -4. **Document in your lab report** what your .circleci/config.yml is doing in as much detail as you can determine. A diagram is not required but is highlt encouraged. **Additionally, answer the following questions.** +4. **Document in your lab report** what your .circleci/config.yml is doing in as much detail as you can determine. A diagram is not required but is highly encouraged. **Additionally, answer the following questions.** - What do the various sections on the config file do? - When a CI build is successful, what does that philosophically and practically/precisely indicate about the build? - If you were to take the next step and ready this project for Continuous Delivery, what additional changes might you make in this configuration (conceptual, not code)? diff --git a/README.md b/README.md index 7920026b..3abafdbb 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ This lab has four purposes: 5. CircleCI account (STEP 5 in the Lab Instructions) ## 2. Lab Description -Within this lab, you will need to fork a repository that has a simple node / graphql application. After confirming that you can successfully run and perform simple actions within the applicaiton, then you will configuration CircleCI to perform a test that the application did not break with any changes in the commit before allowing the code into the repository. +Within this lab, you will need to fork a repository that has a simple node / graphql application. After confirming that you can successfully run and perform simple actions within the application, then you will configuration CircleCI to perform a test that the application did not break with any changes in the commit before allowing the code into the repository. -Detailed instructions are [here](labreports/LAB_INSTRUCTIONS.md), and you are expected to compile your findings into a labreport following this [template](labreports/LAB_TEMPLATE.md). +Detailed instructions are [here](LAB_INSTRUCTIONS.md), and you are expected to compile your findings into a labreport following this [template](labreports/LAB_Template.md). ## 3. Submissions You are expected to create a lab report as a markdown file under the labreports directory using the **LAB_[GITHUB Handle].md** naming convention in your forked repository. After you have reviewed your work, then you should submit a `Pull Request` to this repository with your lab report and any accompanying images/files (e.g., required diagrams). Add the `Pull Request` URL into the courseroom LMS (Canvas) for grading. @@ -34,7 +34,7 @@ Node - Checking Node Versions [https://docs.npmjs.com/downloading-and-installing-node-js-and-npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) Footnotes -[^1]: Fowler, M. C*ontinuous Integration.* Retrieved from https://martinfowler.com/articles/continuousIntegration.html +[^1]: Fowler, M. *Continuous Integration.* Retrieved from https://martinfowler.com/articles/continuousIntegration.html CircleCi - [CircleCI Documentation](https://circleci.com/docs/)