├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── story.md ├── .gitignore ├── LICENSE ├── README.md └── labs ├── README.md ├── lab1-get-set-up-in-zenhub ├── README.md └── images │ ├── lab1-github-create-repository.png │ ├── lab1-github-name-repository.png │ ├── lab1-github-new-repository.png │ ├── lab1-github-press-create.png │ ├── lab1-github-repository-created.png │ ├── lab1-github-sign-up.png │ ├── lab1-zebhub-github-credentials.png │ ├── lab1-zenhub-authorize-zenhubio.png │ ├── lab1-zenhub-get-started.png │ ├── lab1-zenhub-home-page.png │ ├── lab1-zenhub-kanban-board.png │ ├── lab1-zenhub-privacy-policy.png │ ├── lab1-zenhub-signin-github.png │ ├── lab1-zenhub-survey.png │ ├── lab1-zenhub-two-factor-auth.png │ └── lab1-zenhub-workspace-name.png ├── lab2-create-story-template ├── README.md ├── images │ ├── lab2-commit-template-changes.png │ ├── lab2-edit-template.png │ ├── lab2-propose-changes.png │ ├── lab2-select-custom-template.png │ ├── lab2-select-preview-edit.png │ ├── lab2-select-repository.png │ ├── lab2-select-settings.png │ ├── lab2-select-setup-templates.png │ ├── lab2-template-contents.png │ └── lab2-template-created.png └── story-template.md ├── lab3-assemble-product-backlog ├── README.md └── images │ ├── lab3-zenhub-all-new-issues.png │ ├── lab3-zenhub-fillin-template.png │ ├── lab3-zenhub-finished-kanban.png │ ├── lab3-zenhub-issue-submitted.png │ ├── lab3-zenhub-select-new-issue.png │ ├── lab3-zenhub-signin.png │ ├── lab3-zenhub-submit-new-issue.png │ └── lab3-zenhub-template-dropdown.png ├── lab4-refine-your-product-backlog ├── README.md └── images │ ├── lab4-github-label-complete.png │ ├── lab4-github-label-technical-debt.png │ ├── lab4-github-select-issues.png │ ├── lab4-github-select-labels.png │ ├── lab4-github-select-new-label.png │ ├── lab4-github-select-repo.png │ ├── lab4-zenhub-content-issue-1.png │ ├── lab4-zenhub-content-issue-2.png │ ├── lab4-zenhub-edit-issue-1.png │ ├── lab4-zenhub-initial-board.png │ ├── lab4-zenhub-labeled-kanban.png │ ├── lab4-zenhub-labels-assign.png │ ├── lab4-zenhub-labels-enhancement.png │ ├── lab4-zenhub-labels-open.png │ ├── lab4-zenhub-move-issue-5.png │ ├── lab4-zenhub-move-issue-6.png │ ├── lab4-zenhub-move-issue-7.png │ ├── lab4-zenhub-refined-issue-1.png │ ├── lab4-zenhub-starting-kanban.png │ └── lab4-zenhub-update-issue-1.png ├── lab5-build-a-sprint-plan ├── README.md └── images │ ├── lab5-assignment-complete.png │ ├── lab5-completed-kanban.png │ ├── lab5-completed-sprint-plan.png │ ├── lab5-create-sprint.png │ ├── lab5-disable-move-unfinished.png │ ├── lab5-first-sprint-story.png │ ├── lab5-initial-kanban-board.png │ ├── lab5-move-story-to-sprint.png │ ├── lab5-new-sprint.png │ ├── lab5-select-estimate-8.png │ ├── lab5-select-sprint.png │ └── lab5-select-top-story.png ├── lab6-daily-workflow ├── README.md └── images │ ├── lab6-assign-self.png │ ├── lab6-assign-story.png │ ├── lab6-drag-to-inprogress.png │ ├── lab6-finished-kanban.png │ ├── lab6-first-story-done.png │ ├── lab6-first-story-inprogress.png │ ├── lab6-first-story-review.png │ ├── lab6-initial-kanban-board.png │ ├── lab6-last-story-inprogress.png │ ├── lab6-next-story.png │ ├── lab6-second-story-done.png │ ├── lab6-second-story-review.png │ └── lab6-select-first-story.png ├── lab7-setup-burndown-charts ├── README.md └── images │ ├── lab4-sprint-status.png │ ├── lab7-burndown-chart.png │ ├── lab7-hover-over.png │ ├── lab7-initial-kanban.png │ ├── lab7-select-burn-pipelines.png │ ├── lab7-select-done-pipeline.png │ ├── lab7-select-sprint.png │ ├── lab7-side-menu-burndown.png │ └── lab7-side-menu-reports.png └── lab8-end-of-sprint-activities ├── README.md └── images ├── lab8-assign-estimate-labels.png ├── lab8-assign-new-issue-pipeline.png ├── lab8-change-estimate-2.png ├── lab8-check-product-backlog.png ├── lab8-click-estimates.png ├── lab8-close-window.png ├── lab8-initial-kanban.png ├── lab8-move-done-to-closed.png ├── lab8-move-unfinished-to-closed.png ├── lab8-new-issue.png ├── lab8-open-pipeline-new-issue.png ├── lab8-select-unfinished-story.png ├── lab8-stories-closed.png └── lab8-submit-new-issue.png /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the problem** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Observed behavior** 24 | A clear and concise description of what actually happened. 25 | 26 | **Screenshots** 27 | If applicable, add screenshots to help explain your problem. 28 | 29 | **Environment (please complete the following information):** 30 | - OS: [e.g. macOS, Windows, iOS, Android] 31 | - Browser [e.g. safari , chrome, firefox] 32 | - Version [e.g. 22] 33 | 34 | **Additional context** 35 | Add any other context about the problem here. 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/story.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Story 3 | about: Create a User Story to enhance the product 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | ### Feature 10 | 11 | **As a** [some role] 12 | **I need** [some functionality] 13 | **So that** [some benefit] 14 | 15 | ### Details & Assumptions 16 | 17 | * [document what you know] 18 | 19 | ### Acceptance Criteria 20 | 21 | ```gherkin 22 | Given [some initial state] 23 | When [some event] 24 | Then [some measurable outcome] 25 | ``` 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .env 3 | *.csv -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nyu-lab-agile-zenhub 2 | This is the repository for the ZenHub training lab on Agile Development and Planning 3 | 4 | [![ZenHub logo](https://dxssrr2j0sq4w.cloudfront.net/3.2.0/img/external/zenhub-badge.png)](https://app.zenhub.com/workspaces/lab-agile-zenhub-602c7d2ecd8ba2001cb5ed89/board) 5 | 6 | Import/Export Tool 7 | https://github.com/gavinr/github-csv-tools 8 | 9 | 10 | ## Export/Import Issues 11 | Import and export GitHub issues via CSV (https://github.com/gavinr/github-csv-tools) 12 | 13 | Prerequisite: [Install Node.js](https://nodejs.org/en/). 14 | 15 | On a Mac you can use [homebrew](http://brew.sh) to do install Node cleanly if you don't already have it: 16 | 17 | ```bash 18 | brew install node 19 | ``` 20 | 21 | Then run this to install GitHub CSV Tools: 22 | 23 | ```sh 24 | npm install -g github-csv-tools 25 | ``` 26 | 27 | After install, githubCsvTools --help for info on how to use, or see below. 28 | 29 | Instructions for exporting or importing: 30 | 31 | ### To Export Issues 32 | 33 | This will export all stories to a file called timestamp-issues.csv 34 | 35 | ```sh 36 | githubCsvTools -t -o -r 37 | ``` 38 | 39 | ```sh 40 | githubCsvTools -t $GIT_TOKEN -o $GIT_ORG -r $GIT_REPO 41 | ``` 42 | 43 | ### To Import Issues 44 | 45 | Currently imports title, body, labels, status (closed or open) and milestones. 46 | 47 | ```sh 48 | githubCsvTools new-issues.csv -t $GIT_TOKEN -o rofrano -r lab-agile-zenhub 49 | ``` 50 | -------------------------------------------------------------------------------- /labs/README.md: -------------------------------------------------------------------------------- 1 | # Agile Planning Labs 2 | 3 | These labs will teach you how to go through the entire planning lifecycle from setting up your ZenHub account, to creating your first Kanban board to creating your first Sprint Plan. 4 | 5 | - Lab 1: [Get set up in ZenHub](lab1-get-set-up-in-zenhub/README.md) 6 | - Lab 2: [Create an issue template in GitHub](lab2-create-story-template/README.md) 7 | - Lab 3: [Assemble your Product Backlog](lab3-assemble-product-backlog/README.md) 8 | - Lab 4: [Refine your Product Backlog](lab4-refine-your-product-backlog/README.md) 9 | - Lab 5: [Build the Sprint Plan from your Product Backlog](lab5-build-a-sprint-plan/README.md) 10 | - Lab 6: [Move stories from In Progress to Done](lab6-daily-workflow/README.md) 11 | - Lab 7: [Setup a Burndown Chart for Your Plan](lab7-setup-burndown-charts/README.md) 12 | - Lab 8: [End of Sprint Activities](lab8-end-of-sprint-activities/README.md) 13 | 14 | This is an ungraded activity but will help you master the mechanics of agile planning. 15 | -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/README.md: -------------------------------------------------------------------------------- 1 | # Lab 1: Get set up in ZenHub 2 | 3 | **Estimated time needed:** 20 minutes 4 | 5 | In this lab, you will prepare for the labs that follow by setting up a free GitHub account and a free ZenHub account. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Create a free GitHub account. 12 | 1. Create a GitHub repository. 13 | 1. Create a free ZenHub account. 14 | 1. Install the optional browser extension for ZenHub. 15 | 16 | ## Exercise 1 : Create a free GitHub account 17 | 18 | In this exercise, you will create a free GitHub account, if you don't already have one. ZenHub requires GitHub so this first step is a prerequisite to getting a ZenHub account. 19 | 20 | 1. Go to [GitHub.com](http://github.com) and sign up for a free GitHub account. 21 | 22 | 1. Enter your email address and press the **Sign up for GitHub** button. If you have an account, press the **Sign in** button and login. 23 | 24 | ![Github signup screen](images/lab1-github-sign-up.png) 25 | 26 | ## Exercise 2 : Create a GitHub repository 27 | 28 | In this exercise, you will create a repository to hold the issues and kanban board for your plan. 29 | 30 | 1. If you just created your GitHub account, create your first repository by pressing the **Create repository** button, then go to step **3**. 31 | ![create repository](images/lab1-github-create-repository.png) 32 | 33 | 1. If you already have a GitHub account, sign into GitHub and on your account page, press the **New** repository button. 34 | ![new repository](images/lab1-github-new-repository.png) 35 | 36 | 1. Name your repository **lab-agile-planning** and give it a good description like: _This repository contains the lab for agile planning_ and make sure the **Public** option is selected. 37 | ![name repository](images/lab1-github-name-repository.png) 38 | 39 | 1. Scroll down on that page and select **Add a README file** and then press the **Create repository** button to create the new repository. 40 | ![press create](images/lab1-github-press-create.png) 41 | 42 | You should now have a new repository called **lab-agile-planning** that we will use with ZenHub. It should look similar to the screenshot below: 43 | ![repository created](images/lab1-github-repository-created.png) 44 | 45 | ## Exercise 3 : Create free ZenHub account 46 | 47 | In this exercise, you will create a free ZenHub account to use with GitHub. ZenHub is an application that integrates with GitHub. In order to use it, you must sign up for a free account. 48 | 49 | 1. Go to www.zenhub.com and press the [Try for free](https://www.zenhub.com/sign-up) button. Even though it says "*Start your free 14-day trial with ZenHub*" you can continue to use ZenHub for free on open source projects. 50 | ![ZenHub home page](images/lab1-zenhub-home-page.png) 51 | 52 | 1. On the next page, press the **Sign up with GitHub** button. 53 | ![get started](images/lab1-zenhub-get-started.png) 54 | 55 | 1. On the next page, press the **Sign in with GitHub** button. 56 | ![sign in](images/lab1-zenhub-signin-github.png) 57 | 58 | 1. Since you are already signed into GitHub from the previous steps, you should be presented with a page that will allow you to authorize ZenHubIO to access your GitHub account. 59 | ![authorize zenhub](images/lab1-zenhub-authorize-zenhubio.png) 60 | 61 | 1. (optional) If you are not signed into GitHub, you will be prompted to sign in to GitHub. That will bring you to a page where you must use your GitHub credentials. 62 | ![github credentials](images/lab1-zebhub-github-credentials.png) 63 | 64 | 1. If you have two-factor authentication enabled on your GitHub account, you must enter your authorization code now. 65 | ![two factor auth](images/lab1-zenhub-two-factor-auth.png) 66 | 67 | 1. Accept ZenHub's privacy policy 68 | ![privacy policy](images/lab1-zenhub-privacy-policy.png) 69 | 70 | 1. Assign the name "**Development**" to your new ZenHub workspace. 71 | ![workspace name](images/lab1-zenhub-workspace-name.png) 72 | 73 | 1. Enter whatever you want for this ZenHub survey and press **Submit** 74 | ![survey](images/lab1-zenhub-survey.png) 75 | 76 | 1. This will place you in your kanban board for the `lab-agile-planning` repository. 77 | ![kanban board](images/lab1-zenhub-kanban-board.png) 78 | 79 | ## Exercise 4 : (Optional) Browser extension for Chrome or Firefox 80 | 81 | In this optional exercise, you will download a browser extension for ZenHub. 82 | 83 | If you use Chrome or Firefox, you can download a browser extension for ZenHub that will add a ZenHub tab while you are using GitHub so that you don't have to go to zenhub.com to view your kanban board. 84 | 85 | 1. Download a browser extension for ZenHub here: [www.zenhub.com/extension](https://www.zenhub.com/extension). Once installed, it will add a ZenHub tab while you are using GitHub. This is purely a convenience. The capabilities of both the browser extension and the web zenhub.com site are the same. 86 | 87 | ## Summary 88 | 89 | Congratulations! You are now set up with a ZenHub account and GitHub account so that you can work through the rest of the labs. 90 | -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-create-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-create-repository.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-name-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-name-repository.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-new-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-new-repository.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-press-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-press-create.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-repository-created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-repository-created.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-github-sign-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-github-sign-up.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zebhub-github-credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zebhub-github-credentials.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-authorize-zenhubio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-authorize-zenhubio.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-get-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-get-started.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-home-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-home-page.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-kanban-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-kanban-board.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-privacy-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-privacy-policy.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-signin-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-signin-github.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-survey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-survey.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-two-factor-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-two-factor-auth.png -------------------------------------------------------------------------------- /labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-workspace-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab1-get-set-up-in-zenhub/images/lab1-zenhub-workspace-name.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/README.md: -------------------------------------------------------------------------------- 1 | # Lab 2: Create an issue template in GitHub 2 | 3 | **Estimated time needed:** 10 minutes 4 | 5 | In this lab, you will create an issue template in GitHub that will help you to write well-formatted user stories in ZenHub. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Create an issue template in GitHub that contains the information required for writing good user stories. 12 | 13 | ## Exercise 1 : Create an issue template in GitHub 14 | 15 | In this exercise, you will create an issue template in GitHub. This only needs to be done once for each new repository that you create. 16 | 17 | 1. Go to [GitHub.com](http://github.com) and select the `lab-agile-planning` repository that you created in [Lab 1](./lab01-get-set-up-in-zenhub.md). 18 | ![github home](images/lab2-select-repository.png). 19 | 20 | 1. From the repository page, select **Settings**. 21 | ![select settings](images/lab2-select-settings.png) 22 | 23 | 1. Scroll down to the **Features** section and select **Set up templates**. 24 | ![select setup templates](images/lab2-select-setup-templates.png) 25 | 26 | 1. From the dropdown list labeled **Add template** (1), select **Custom template** (2). 27 | ![select custom template](images/lab2-select-custom-template.png) 28 | 29 | 1. Next to the **Custom issue template** entry, press the **Preview and edit** button. 30 | ![select preview and edit](images/lab2-select-preview-edit.png) 31 | 32 | 1. Press the **pencil** icon to edit the template. 33 | ![select pencil](images/lab2-edit-template.png) 34 | 35 | 1. Copy the following markdown for the story template content: 36 |
37 |     **As a** [role]  
38 |     **I need** [function]  
39 |     **So that** [benefit]  
40 |       
41 |     ### Details and Assumptions
42 |     * [document what you know]
43 |       
44 |     ### Acceptance Criteria  
45 |       
46 |     ```gherkin
47 |     Given [some context]
48 |     When [certain action is taken]
49 |     Then [the outcome of action is observed]
50 |     ```
51 | 52 | 1. Edit the **Template name** to be: `User Story`, give it an appropriate **description**, and paste the contents of the above markdown into the **Template content** 53 | ![template contents](images/lab2-template-contents.png) 54 | 55 | 1. Scroll to the top of the page and press the **Propose changes** button. 56 | ![propose changes](images/lab2-propose-changes.png) 57 | 58 | 1. Press the **Commit changes** button to commit the change to your repository. 59 | ![commit template changes](images/lab2-commit-template-changes.png). 60 | 61 | 1. You should now have a new folder in your repository called `.github/ISSUE_TEMPLATES`, which will contain your new user story template. 62 | ![template created](images/lab2-template-created.png). 63 | 64 | ## Summary 65 | 66 | You now have an issue template that you can use for all of your GitHub repositories that you need to write stories for to use in ZenHub. When we create issues in future labs, this template will guide you through what information is needed to create your user story. 67 | -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-commit-template-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-commit-template-changes.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-edit-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-edit-template.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-propose-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-propose-changes.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-select-custom-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-select-custom-template.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-select-preview-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-select-preview-edit.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-select-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-select-repository.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-select-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-select-settings.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-select-setup-templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-select-setup-templates.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-template-contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-template-contents.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/images/lab2-template-created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab2-create-story-template/images/lab2-template-created.png -------------------------------------------------------------------------------- /labs/lab2-create-story-template/story-template.md: -------------------------------------------------------------------------------- 1 | **As a** [role] 2 | **I need** [function] 3 | **So that** [benefit] 4 | 5 | ### Details and Assumptions 6 | 7 | * [document what you know] 8 | 9 | ### Acceptance Criteria 10 | 11 | ```gherkin 12 | Given 13 | When 14 | Then 15 | ``` 16 | -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/README.md: -------------------------------------------------------------------------------- 1 | # Lab 3: Assemble your Product Backlog 2 | 3 | **Estimated time needed:** 15 minutes 4 | 5 | In this lab, you will create seven user stories based on the requirements given. The first four will be given to you so that you can just cut and paste to get familiar with ZenHub. The last three you will need to create by yourself. You will then prioritize these stories and move them into the appropriate pipelines on your kanban board. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Create new user stories using GitHub issues. 12 | 1. Prioritize the product backlog. 13 | 14 | --- 15 | 16 | ## Exercise 1 : Create new user stories using GitHub issues 17 | 18 | In this exercise, you will create the following user stories using ZenHub: 19 | 20 | **Stories from the Lesson:** 21 | 22 | Title: Need a service that has a counter 23 | 24 | - As a User, I need a service that has a counter, So that I can keep track of how many times something was done. 25 | 26 | Title: Must allow multiple counters 27 | 28 | - As a User, I need to have multiple counters, So that I can keep track of several counts at once. 29 | 30 | Title: Must persist counter across restarts 31 | 32 | - As a Service Provider, I need the service to persist the last known count, So that users don't lose track of their counts after the service is restarted. 33 | 34 | Title: Counters can be reset 35 | 36 | - As a System Administrator, I need the ability to reset the counter, So that I can redo counting from the start. 37 | 38 | **New Requirements:** 39 | 40 | - Deploy service to the cloud. 41 | - Need the ability to remove a counter. 42 | - Need the ability to update a counter to a new value. 43 | 44 | You will use ZenHub to enter these stories as issues in GitHub using the template that you created in [Lab 2](../lab_2/lab2-create-story-template.md). 45 | 46 | 1. Goto [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account. 47 | ![zenhub signin](images/lab3-zenhub-signin.png) 48 | 49 | 1. From your kanban board view, select **New Issue**. 50 | ![new issue](images/lab3-zenhub-select-new-issue.png) 51 | 52 | 1. From the **Template** dropdown, select **User Story**. 53 | ![select template](images/lab3-zenhub-template-dropdown.png) 54 | 55 | 1. Enter the title for the first story **Need a service that has a counter** and fill out just the user story section (i.e., As a, I need, So that) for now. 56 | ![fill in template](images/lab3-zenhub-fillin-template.png) 57 | 58 | 1. Scroll to the bottom of the page and press **Submit new Issue**. 59 | ![submit new issue](images/lab3-zenhub-submit-new-issue.png) 60 | 61 | 1. Press the **X** icon in the upper right corner to close the new issue. Note that it now shows up in your **New Issues** pipeline. 62 | ![issue submitted](images/lab3-zenhub-issue-submitted.png) 63 | 64 | 1. Continue adding stories until all seven stories are created and your kanban board looks like this. Note that the first four stories are given to you from the lesson. You will need to create your own role, function, and benefit for the last three stories. 65 | ![all new issues](images/lab3-zenhub-all-new-issues.png) 66 | 67 | --- 68 | 69 | ## Exercise 2 : Prioritize the product backlog 70 | 71 | In this exercise, you will move issues between pipelines to recreate the kanban board from the video lesson **Building the Product Backlog**. This will simulate an initial starting point for our next lab on backlog refinement. Please note that you can move the issues between pipelines by simply dragging and dropping them from one pipeline to teh other. 72 | 73 | 1. Move the **Need a service that has a counter** story to the top of the **Product Backlog** pipeline. 74 | 75 | 1. Move the **Must allow multiple counters** story to the **Icebox** pipeline. 76 | 77 | 1. Move the **Must persist counter across restarts** story to the bottom of the **Product Backlog** pipeline. 78 | 79 | 1. Move the **Counters can be reset** story to the bottom of the **Product Backlog** pipeline. 80 | 81 | 1. Leave the remaining stories in the **New Issues** pipeline for now. We will move them in a later lab. 82 | 83 | At the completion of this exercise, your kanban board should look like this: 84 | 85 | ![finished kanban](images/lab3-zenhub-finished-kanban.png) 86 | 87 | ## Summary 88 | 89 | You learned how to create new stories in ZenHub using Issues in GitHub and a User Story template. You also learned how to quickly prioritize your product backlog. You now have enough stories in your repository to start planning with ZenHub. 90 | -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-all-new-issues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-all-new-issues.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-fillin-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-fillin-template.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-finished-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-finished-kanban.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-issue-submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-issue-submitted.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-select-new-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-select-new-issue.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-signin.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-submit-new-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-submit-new-issue.png -------------------------------------------------------------------------------- /labs/lab3-assemble-product-backlog/images/lab3-zenhub-template-dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab3-assemble-product-backlog/images/lab3-zenhub-template-dropdown.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/README.md: -------------------------------------------------------------------------------- 1 | # Lab 4: Refine your Product Backlog 2 | 3 | **Estimated time needed:** 20 minutes 4 | 5 | In this lab, you will follow the steps of conducting a backlog refinement meeting. You will be the product owner getting the product backlog ready for your next sprint planning meeting. This involves grooming the stories we created in the last lab to make them *sprint ready*. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Triage new issues. 12 | 1. Make stories sprint ready. 13 | 1. Create new labels in GitHub. 14 | 1. Add labels to stories. 15 | 16 | --- 17 | 18 | ## Initial State 19 | 20 | At the completion of [Lab 3](../lab_3/lab3-assemble-product-backlog.md), your kanban board should look like this: 21 | 22 | ![finished kanban](images/lab4-zenhub-starting-kanban.png) 23 | 24 | **New Issues:** 25 | 26 | - Deploy service to the cloud 27 | - Need the ability to remove a counter 28 | - Need ability to update a counter to a new value 29 | 30 | **Icebox:** 31 | 32 | - Must allow multiple counters 33 | 34 | **Product Backlog:** 35 | 36 | - Need a service that has a counter 37 | - Must persist counter across restarts 38 | - Counters can be reset 39 | 40 | --- 41 | 42 | ## Exercise 1 : Triage new issues 43 | 44 | In this exercise, you will take all of the stories in the **New Issues** pipeline and move them to an appropriate pipeline or reject them. 45 | 46 | 1. Go to [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account and bring up your kanban board. 47 | ![initial kanban](images/lab4-zenhub-initial-board.png) 48 | 49 | 1. The first new issue is **Deploy service to the cloud**. We want to do that after adding persistence, so move that to the **Product Backlog** pipeline under **Must persist counter across restarts**. 50 | ![new issue](images/lab4-zenhub-move-issue-5.png) 51 | 52 | 1. The next new issue is **Need the ability to remove a counter**. We only have one counter and we wouldn't want to remove that, so let's move that to the **Icebox** after **Must allow multiple counters**. 53 | ![new issue](images/lab4-zenhub-move-issue-6.png) 54 | 55 | 1. The last new issue is **Need ability to update a counter to a new value**. We might want to do that as an enhancement after we can reset the counter, so let's move that to the **Product Backlog** after **Counters can be reset**. 56 | ![new issue](images/lab4-zenhub-move-issue-7.png) 57 | 58 | You have now completed new issue triage and can start making the stories in the **Product Backlog** pipeline sprint ready. 59 | 60 | --- 61 | 62 | ## Exercise 2 : Make stories sprint ready 63 | 64 | In this exercise, you will add more details to the stories in the **Product Backlog** that you feel might make it into the next sprint. You will be provided with the details for two of the stories. You must provide the details for the other three. 65 | 66 | 1. Select the first story at the top of the **Product Backlog** pipeline to open it. Then press the **Edit** button to edit the issue. 67 | ![edit issue 1](images/lab4-zenhub-edit-issue-1.png) 68 | 69 | 1. Edit the **Details and Assumptions** to let developers know what we know, and edit the **Acceptance Criteria** to make sure that everyone understands what the definition of "*done*" is. Make your story look like this one: 70 | ![issue 1 content](images/lab4-zenhub-content-issue-1.png) 71 | 72 | 1. When you are finished editing, press the **Update** button to save the edits. 73 | ![update issue 1](images/lab4-zenhub-update-issue-1.png) 74 | 75 | 1. Close the window by pressing the **X** icon. 76 | ![refined issue 1](images/lab4-zenhub-refined-issue-1.png) 77 | 78 | 1. Edit the **Must persist counter across restarts** story in the same way and make it look like the following: 79 | ![issue 1 content](images/lab4-zenhub-content-issue-2.png) 80 | 81 | 1. Edit the **Deploy service to the cloud** story and make up your own **Details and Assumptions**, and **Acceptance Criteria**. 82 | 83 | 1. Edit the **Counters can be reset** story and make up your own details, assumptions, and acceptance criteria. 84 | 85 | 1. Edit the **Need ability to update a counter to a new value** story and make up your own details, assumptions, and acceptance criteria. 86 | 87 | At the completion of this exercise, your kanban board should have sufficient details in all of the stories in the **Product Backlog** to make them sprint ready. 88 | 89 | --- 90 | 91 | ## Exercise 3 : Create new labels in GitHub 92 | 93 | In this exercise, you will create a new label in GitHub called `technical debt` to flag those stories that provide no visible customer value but must be completed in order to continue development. 94 | 95 | 1. Go to [github.com](http://www.github.com) and select your **lab-agile-planning** repository. 96 | ![select reo](images/lab4-github-select-repo.png) 97 | 98 | 1. From your repository page, select the **Issues** tab. 99 | ![select issues](images/lab4-github-select-issues.png) 100 | 101 | 1. From the issues page, select the **Labels** button. 102 | ![select labels](images/lab4-github-select-labels.png) 103 | 104 | 1. From the labels page, select the **New label** button. 105 | ![new label](images/lab4-github-select-new-label.png) 106 | 107 | 1. In the new label section: (1) set the **Label name** to `technical debt`, (2) set the **Color** to `yellow` (`#FBCA04`), then (3) press the **Create label** button. 108 | ![technical debt](images/lab4-github-label-technical-debt.png) 109 | 110 | 1. You should now see a yellow `technical debt` label that we can use to annotate our stories. 111 | ![label complete](images/lab4-github-label-complete.png) 112 | 113 | --- 114 | 115 | ## Exercise 4 : Add labels to stories 116 | 117 | In this exercise, you will go back to ZenHub and add labels to the stories in the **Product Backlog** to further make them sprint ready. You will also use our new label called `technical debt` to flag those stories that provide no visible customer value but must be completed to continue development. 118 | 119 | 1. Go to ZenHub and select the first story at the top of the **Product Backlog** pipeline to open it. Then press the **Gear** icon next to **Labels** to assign a label. 120 | ![open labels](images/lab4-zenhub-labels-open.png) 121 | 122 | 1. Our first story is an enhancement to our product. From the label menu, select **enhancement** to reflect this. 123 | ![assign labels](images/lab4-zenhub-labels-assign.png) 124 | 125 | 1. Click anywhere off of the labels menu to close it. You should now see that the label **enhancement** has been assigned to this story. 126 | ![assign labels](images/lab4-zenhub-labels-enhancement.png) 127 | 128 | 1. Select each of the following stories in the **Product Backlog** pipeline and assign them the corresponding labels. 129 | 130 | | Story Title | Label | 131 | |-------|-------| 132 | | Must persist counter across restarts | enhancement | 133 | | Deploy service to the cloud | technical debt | 134 | | Counters can be reset | enhancement | 135 | | Need ability to update a counter to new value | enhancement | 136 | 137 | At the end of this exercise, your kanban board should look like this: 138 | 139 | ![labeled kanban](images/lab4-zenhub-labeled-kanban.png) 140 | 141 | ## Summary 142 | 143 | You learned how to triage new issues, add detail to stories to make them sprint ready, create new labels, and assign labels to stories in preparation for a sprint planning meeting. 144 | -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-label-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-label-complete.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-label-technical-debt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-label-technical-debt.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-select-issues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-select-issues.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-select-labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-select-labels.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-select-new-label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-select-new-label.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-github-select-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-github-select-repo.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-content-issue-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-content-issue-1.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-content-issue-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-content-issue-2.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-edit-issue-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-edit-issue-1.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-initial-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-initial-board.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labeled-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labeled-kanban.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-assign.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-enhancement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-enhancement.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-labels-open.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-5.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-6.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-move-issue-7.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-refined-issue-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-refined-issue-1.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-starting-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-starting-kanban.png -------------------------------------------------------------------------------- /labs/lab4-refine-your-product-backlog/images/lab4-zenhub-update-issue-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab4-refine-your-product-backlog/images/lab4-zenhub-update-issue-1.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/README.md: -------------------------------------------------------------------------------- 1 | # Lab 5: Build the Sprint Plan from your Product Backlog 2 | 3 | **Estimated time needed:** 10 minutes 4 | 5 | In this lab, you will create a sprint plan from your product backlog. This is normally done during the sprint planning meeting with the entire team, so for this exercise we will have to simulate that meeting. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Set up sprints. 12 | 1. Assign estimates to stories. 13 | 1. Assign a sprint to stories. 14 | 1. Build your sprint backlog. 15 | 16 | ## Initial State 17 | 18 | After completing the previous lab, your kanban board should look like this: 19 | 20 | ![initial kanban](images/lab5-initial-kanban-board.png) 21 | 22 | **New Issues:** 23 | 24 | - None 25 | 26 | **Icebox:** 27 | 28 | - Must allow multiple counters 29 | - Need the ability to remove a counter 30 | 31 | **Product Backlog:** 32 | 33 | - Need a service that has a counter 34 | - Must persist counter across restarts 35 | - Deploy service to the cloud 36 | - Counters can be reset 37 | - Need ability to update a counter to a new value 38 | 39 | --- 40 | 41 | ## Exercise 1 : Setup Sprints 42 | 43 | In this exercise, you will setup your sprints. ZenHub will set up three (3) sprints by default to get you started. It wil then create new sprints for you as needed automatically. 44 | 45 | 1. Go to [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account and bring up your kanban board. 46 | ![initial kanban](images/lab5-initial-kanban-board.png) 47 | 48 | 1. Click the **+** icon and select **Set up Sprints for your team** from the dropdown menu. 49 | ![new milestone](images/lab5-new-sprint.png) 50 | 51 | 1. In the window that pops up, disable the switch labeled "Move unfinished Issues to the next sprint". This type of automation breeds bad habits and is not very agile, which is why I suggest it be disabled. You should understand why Issues are unfinished and determine if they are still needed in the next sprint as priorities may have changed. 52 | ![milestone name](images/lab5-disable-move-unfinished.png) 53 | 54 | 1. Pick a date range of 2 weeks for the sprint duration, where the current date that you are working on this lab is within that range. In this example we selected a Monday to the following Friday which is two weeks later. You will see this selection in blue. Notice that ZenHub hints that it will create two future sprints as well (in grey). Press the **Create sprints** button to create the sprints. 55 | ![create milestone](images/lab5-create-sprint.png) 56 | 57 | You now have a sprint that can be used for sprint planning in the next exercise. 58 | 59 | --- 60 | 61 | ## Exercise 2 : Create a Sprint Plan 62 | 63 | In this exercise, you will create a sprint plan. We will assign estimated story points and a sprint, and move the stories from the **Product Backlog** into the **Sprint Backlog** to build our plan. 64 | 65 | 1. Select the top story *Need a service that has a counter* from the **Product Backlog** to open it. 66 | ![select top story](images/lab5-select-top-story.png) 67 | 68 | 2. You discussed the story with the team, and your developers agree that this is a large story worth **8** story points, so set the **Estimate** to **8**. 69 | ![estimate 8](images/lab5-select-estimate-8.png) 70 | 71 | 3. Click on the **Gear** icon next to **Sprints** and select the first sprint from the dropdown list to assign the story to that sprint. You may notice that you can assign a story to more than one sprint. This is not very agile! If your story is bigger than a sprint then it's too big and should be broken down into smaller "sprint-sized" stories. 72 | ![select milestone](images/lab5-select-sprint.png) 73 | 74 | 4. Your story should look like the one below. Click the **X** to close the story window and get back to the kanban board. 75 | ![assignment complete](images/lab5-assignment-complete.png) 76 | 77 | 5. The development team has determined that adding an 8 point story to the sprint is acceptable. Drag the story from the **Product Backlog** to the **Sprint Backlog**. 78 | ![move story](images/lab5-move-story-to-sprint.png) 79 | 80 | 6. Your kanban board should now look like the one below. Notice that the story point estimate and sprint dates are annotations on the story. 81 | ![first sprint story](images/lab5-first-sprint-story.png) 82 | 83 | 7. The sprint planning meeting has proceeded nicely. In discussions with the development team, they have estimated the next two stories in the **Product Backlog** and determined that they can both fit in the current sprint. Select each of the following stories in the **Product Backlog**, assign them the corresponding story points and the same *Sprint*, and drag them to the **Sprint Backlog** in the same order. 84 | 85 | | Story Title | Story Points | 86 | |-------|-------| 87 | | Must persist counter across restarts | 5 | 88 | | Deploy service to the cloud | 5 | 89 | 90 | At the end of this step, your sprint plan should look like this: 91 | 92 | ![completed kanban](images/lab5-completed-sprint-plan.png) 93 | 94 | 8. Based on the teams velocity, the development team has decided there are enough stories in the sprint, but there is some time left in the sprint planning meeting to estimate more stories. Add the following estimates to the stories in the **Product Backlog**. 95 | 96 | | Story Title | Story Points | 97 | |-------|-------| 98 | | Counters can be reset | 3 | 99 | | Need ability to update a counter to new value | 5 | 100 | 101 | At the end of this exercise, your kanban board should look like this: 102 | 103 | ![completed kanban](images/lab5-completed-kanban.png) 104 | 105 | ## Summary 106 | 107 | You learned how to set up your sprints. You also learned how to assign story points to stories, assign stories to a sprint, and assemble a sprint plan from your product backlog. 108 | -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-assignment-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-assignment-complete.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-completed-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-completed-kanban.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-completed-sprint-plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-completed-sprint-plan.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-create-sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-create-sprint.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-disable-move-unfinished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-disable-move-unfinished.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-first-sprint-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-first-sprint-story.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-initial-kanban-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-initial-kanban-board.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-move-story-to-sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-move-story-to-sprint.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-new-sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-new-sprint.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-select-estimate-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-select-estimate-8.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-select-sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-select-sprint.png -------------------------------------------------------------------------------- /labs/lab5-build-a-sprint-plan/images/lab5-select-top-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab5-build-a-sprint-plan/images/lab5-select-top-story.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/README.md: -------------------------------------------------------------------------------- 1 | # Lab 6: Move stories from In Progress to Done 2 | 3 | **Estimated time needed:** 10 minutes 4 | 5 | In this lab, you will follow the daily workflow of moving stories from the sprint backlog to the In Progress pipeline, assigning them to yourself to work on them, moving them to Review/QA, and moving them to the Done pipeline. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Assign stories to yourself. 12 | 1. Move stories to **In Progress** to work on them. 13 | 1. Move stories to **Review/QA** for team review. 14 | 1. Move stories to **Done** once they are completed. 15 | 16 | ## Initial State 17 | 18 | After completing the sprint planning lab, your kanban board should look like this: 19 | 20 | ![initial kanban](images/lab6-initial-kanban-board.png) 21 | 22 | **New Issues:** 23 | 24 | - None 25 | 26 | **Icebox:** 27 | 28 | - Must allow multiple counters 29 | - Need the ability to remove a counter 30 | 31 | **Product Backlog:** 32 | 33 | - Counters can be reset 34 | - Need ability to update a counter to a new value 35 | 36 | **Sprint Backlog:** 37 | 38 | - Need a service that has a counter 39 | - Must persist counter across restarts 40 | - Deploy service to the cloud 41 | 42 | --- 43 | 44 | ## Exercise 1 : Daily Workflow 45 | 46 | In this exercise, you will simulate the daily workflow of a developer on an Agile team. You will start by moving a story from the top of the **Sprint Backlog** to the **In Progress** pipeline and assign it to yourself. Then you will simulate completing the story, asking for a review, and finally moving it to done. 47 | 48 | 1. Go to [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account and bring up your kanban board. 49 | ![initial kanban](images/lab6-initial-kanban-board.png) 50 | 51 | 1. The sprint has started and you are ready to work on your first story. Select the story at the top of the **Sprint Backlog** to open it and read it. 52 | ![select story](images/lab6-select-first-story.png) 53 | 54 | 1. After reading it, you decide that this is something you have the skills to work on, so you assign it to yourself. 55 | ![assign story](images/lab6-assign-story.png) 56 | 57 | 1. Once assigned, press the **X** to close the window. 58 | ![close window](images/lab6-assign-self.png) 59 | 60 | 1. Back at the kanban board, move the story you just assigned to yourself from the **Sprint Backlog** by dragging it to the **In Progress** pipeline. 61 | ![drag inprogress](images/lab6-drag-to-inprogress.png) 62 | 63 | 1. Everyone now knows that you are working on this story. You would normally create a branch in GitHub to start working on your code. For this lab, just make sure that your kanban board looks like the one below. (*Note: Your avatar may look different.*) 64 | ![in progress](images/lab6-first-story-inprogress.png) 65 | 66 | 1. Once you finish working on the story, it's time to request a review. It's always a good idea to get two sets of eyes on all work products. If you checked code into GitHub, this is the step where you would make a pull request to merge your code into the `master` branch. Move your story from **In Progress** to **Review/QA**. 67 | ![review qa](images/lab6-first-story-review.png) 68 | 69 | 1. While you are waiting for a review, you decide to start working on another story. Take the next story off of the top of the **Sprint Backlog**, read it to make sure that you have the skills to implement it, (*Hint: You do.*) assign it to yourself, and move it to **In Progress**. 70 | ![next story](images/lab6-next-story.png) 71 | 72 | 1. Your pull request on your initial story has been approved and the review process is complete. Move the story "*Need a service that has a counter*" from the **Review/QA** pipeline to the **Done** pipeline. 73 | ![story done](images/lab6-first-story-done.png) 74 | 75 | 1. You have completed work on your second story and made another pull request. Move the story "*Must persist counter across restarts*" from **In Progress** to **Review/QA** to request a review. 76 | ![second review](images/lab6-second-story-review.png) 77 | 78 | 1. Take the last story, "*Deploy service to the cloud*", off of the top of the **Sprint Backlog**, assign it to yourself, and move it to **In Progress**. 79 | ![next story](images/lab6-last-story-inprogress.png) 80 | 81 | 1. The review of your second story is complete. Move the story "*Must persist counter across restarts*" from **Review/QA** to **Done**. 82 | ![story done](images/lab6-second-story-done.png) 83 | 84 | 1. The sprint has ended and we have run out of time to complete our last story, "*Deploy service to the cloud*", which is still in progress. We will see how to deal with this in a future lab. Leave it where it is for now. 85 | 86 | The finished kanban board for this lab should look like this: 87 | 88 | ![story done](images/lab6-finished-kanban.png) 89 | 90 | ## Summary 91 | 92 | You learned how to assign stories to yourself, and move the story to **In Progress** to work on it. You also learned how to move stories to **Review/QA** to request a team review, and to move stories to **Done** once they are completed. 93 | -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-assign-self.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-assign-self.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-assign-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-assign-story.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-drag-to-inprogress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-drag-to-inprogress.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-finished-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-finished-kanban.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-first-story-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-first-story-done.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-first-story-inprogress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-first-story-inprogress.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-first-story-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-first-story-review.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-initial-kanban-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-initial-kanban-board.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-last-story-inprogress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-last-story-inprogress.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-next-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-next-story.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-second-story-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-second-story-done.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-second-story-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-second-story-review.png -------------------------------------------------------------------------------- /labs/lab6-daily-workflow/images/lab6-select-first-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab6-daily-workflow/images/lab6-select-first-story.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/README.md: -------------------------------------------------------------------------------- 1 | # Lab 7: Setup a Burndown Chart for Your Plan 2 | 3 | **Estimated time needed:** 10 minutes 4 | 5 | In this lab, you will set up a burndown chart for your plan. In most cases, the burndown chart is created automatically by ZenHub if you have set the start and end dates of your sprint correctly. There is still some setup to do to customize it to show stories that are done, but not closed. These changes are not permanent and will need to be made whenever you view your burndown charts. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Understand how to set up your burndown chart. 12 | 1. See the data that is contained in a burndown chart. 13 | 1. Judge your progress in the sprint. 14 | 15 | --- 16 | 17 | ## Exercise 1 : Set up your burndown chart 18 | 19 | In this exercise, you will set up your burndown chart to show the status of the **Done** pipeline stories instead of the default **Closed** stories. 20 | 21 | Since a burndown chart shows the story points completed vs. the time left in a sprint, it will be difficult to simulate in a one-day lab. Hopefully, you created a sprint that included the date that you performed the previous lab on the topic of daily execution. For best results, it is recommended that you wait a few days after that lab before performing this lab so that the passage of time will be reflected on the burndown chart. 22 | 23 | 1. Go to [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account. Bring up your kanban board and click the **>>** icon in the lower left-hand corner to open the side menu bar. 24 | ![zenhub kanban](images/lab7-initial-kanban.png) 25 | 26 | 1. From the side menu bar, select **Reports**. 27 | ![side menu](images/lab7-side-menu-reports.png) 28 | 29 | 1. From the reports menu, select **Burndown Report**. 30 | ![report burndown](images/lab7-side-menu-burndown.png) 31 | 32 | 1. Make sure the current sprint is selected. You can change the sprint using the dropdown list. Since we only have one sprint, the current sprint should already be selected. 33 | ![select sprint](images/lab7-select-sprint.png) 34 | 35 | 1. Notice that the burndown chart isn't burning down. We just have a straight line across the top. This is because, by default, the burndown measures closed stories. Since we want to keep our stories in the **Done** pipeline before the sprint review, select the **Burn Pipelines** dropdown to change this behavior. 36 | ![select burn pipelines](images/lab7-select-burn-pipelines.png) 37 | 38 | 1. From the **Burn Pipelines** drop down, select **Done** to show the status of the stories that are done. 39 | ![select done](images/lab7-select-done-pipeline.png) 40 | 41 | 1. You can now see the status of the sprint in the burndown chart. Since you completed your stories in a single lab, there is one big drop in the progress. Normally this would be more gradual. Notice that we are well below the dotted line, which is a projection of where we should be at this time. 42 | ![burndown chart](images/lab7-burndown-chart.png) 43 | 44 | 1. If you hover, using your mouse, over any of the blue dots on the burndown line, you will see a pop-up with the stories that contributed to that event. These are the stories that you moved to **Done** in the previous lab. 45 | ![hover over](images/lab7-hover-over.png) 46 | 47 | 1. If you scroll down, you will see one status bar for the number of story points completed and remaining in the sprint, and another status bar showing the number of issues and pull requests completed and remaining. This gives a nice visual indicator of how far along you are. Below the status bars you will see the detailed status of all of the stories in your sprint. The detailed status lets you quickly see which stories are completed and which still need work. 48 | ![sprint status](images/lab4-sprint-status.png) 49 | 50 | ## Summary 51 | 52 | You learned how to set up a burndown chart to show the status of the done stories in your sprint. You also learned how to use the progress bars to get a visual status of where you are in the sprint, and see the status of individual stories. This information should help you get a good sense of how the work is progressing. 53 | -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab4-sprint-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab4-sprint-status.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-burndown-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-burndown-chart.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-hover-over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-hover-over.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-initial-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-initial-kanban.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-select-burn-pipelines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-select-burn-pipelines.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-select-done-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-select-done-pipeline.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-select-sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-select-sprint.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-side-menu-burndown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-side-menu-burndown.png -------------------------------------------------------------------------------- /labs/lab7-setup-burndown-charts/images/lab7-side-menu-reports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab7-setup-burndown-charts/images/lab7-side-menu-reports.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/README.md: -------------------------------------------------------------------------------- 1 | # Lab 8: End of Sprint Activities 2 | 3 | **Estimated time needed:** 10 minutes 4 | 5 | In this lab, you will close out the current sprint by moving done stories to closed, dealing with unfinished stories. 6 | 7 | ## Objectives 8 | 9 | After completing this lab, you will be able to: 10 | 11 | 1. Determine which stories to close complete a sprint. 12 | 1. Deal with unfinished work. 13 | 14 | --- 15 | 16 | ## Exercise 1 : Move Done stories to Closed 17 | 18 | In this exercise, you will move all of the done stories that the product owner has deemed completed at the sprint review to the Closed pipeline. 19 | 20 | 1. Go to [app.zenhub.com](http://app.zenhub.com) and sign in with your GitHub account and bring up your kanban board. 21 | ![initial kanban](images/lab8-initial-kanban.png) 22 | 23 | 1. At the sprint review meeting, the product owner agreed that all of the stories that we demonstrated meet the definition of done, per the **Acceptance Criteria** in the **Issue** and can now be closed. Move all of the stories from the **Done** pipeline to the **Closed** pipeline. 24 | ![done to closed](images/lab8-move-done-to-closed.png) 25 | 26 | At the end of this exercise, your kanban board should look like this: 27 | ![stories closed](images/lab8-stories-closed.png) 28 | 29 | --- 30 | 31 | ## Exercise 2 : Deal wth unfinished work 32 | 33 | In this exercise, you will deal with the unfinished stories in the sprint. These are stories that the team has started, but not completed. We want to adjust the estimate to take credit for the story points expended so that it is reflected in the teams velocity, and create a new story to finish the work in the next sprint. 34 | 35 | 1. Select the story "*Deploy service to the cloud*" in the **In Progress** pipeline to open it. 36 | ![open story](images/lab8-select-unfinished-story.png) 37 | 38 | 1. Click the **Gear** next to **Estimate** to open the dropdown. 39 | ![open estimates](images/lab8-click-estimates.png) 40 | 41 | 1. The developer has determined that they did not expend **5** story points of effort on this story and just ran out of time. They estimated that **2** story points were expended. Select **2** from the dropdown list to change the story points to **2**. 42 | ![change story points](images/lab8-change-estimate-2.png) 43 | 44 | 1. We can see that the story points are now set to **2**. Click the **X** to close the window. 45 | ![close window](images/lab8-close-window.png) 46 | 47 | 1. Now the story points have been adjusted to reflect the effort that was made in this sprint. Move this story to the **Closed** pipeline. 48 | ![close unfinished](images/lab8-move-unfinished-to-closed.png) 49 | 50 | 1. We want to create a new story to document the remaining work. Press the **New Issue** button. 51 | ![new issue](images/lab8-new-issue.png) 52 | 53 | 1. Since we know this new issue is going into the **Product Backlog** pipeline, click the gear icon next to **Pipelines** to open the dropdown list. 54 | ![open pipelines](images/lab8-open-pipeline-new-issue.png) 55 | 56 | 1. Select **Product Backlog** from the dropdown list. 57 | ![assign pipeline](images/lab8-assign-new-issue-pipeline.png) 58 | 59 | 1. Set the **Estimate** to **3**, which represents the remaining story points from the unfinished story. Set the label to `technical debt`, just like the original story. 60 | ![assign estimate](images/lab8-assign-estimate-labels.png) 61 | 62 | 1. Fill in the new issue with the remaining details to complete the story. (*Hint: You may want to copy and paste some details from the unfinished story as a starting point*.) When completed, press the **Submit new Issue** button. 63 | ![submit issue](images/lab8-submit-new-issue.png) 64 | 65 | 1. Be sure the story is at the top of the **Product Backlog** pipeline to be selected for the next sprint. 66 | ![check backlog](images/lab8-check-product-backlog.png) 67 | 68 | Congratulations! You can completed all of the end of sprint activities. 69 | 70 | ## Summary 71 | 72 | You learned how to conduct the activities required to close out a sprint. You moved done stories to closed, adjusted unfinished stories to reflect the true effort, and created new stories to document the remaining work. ZenHub will automatically close the sprint when it's end date has expired so there is nothing for you to do there. *Bonus: After the end of sprint date is passed, you might want to go back and look at your Velocity chart under Reports to see the teams velocity reflected in the chart*. 73 | -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-assign-estimate-labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-assign-estimate-labels.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-assign-new-issue-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-assign-new-issue-pipeline.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-change-estimate-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-change-estimate-2.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-check-product-backlog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-check-product-backlog.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-click-estimates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-click-estimates.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-close-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-close-window.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-initial-kanban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-initial-kanban.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-move-done-to-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-move-done-to-closed.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-move-unfinished-to-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-move-unfinished-to-closed.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-new-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-new-issue.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-open-pipeline-new-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-open-pipeline-new-issue.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-select-unfinished-story.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-select-unfinished-story.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-stories-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-stories-closed.png -------------------------------------------------------------------------------- /labs/lab8-end-of-sprint-activities/images/lab8-submit-new-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nyu-devops/lab-agile-zenhub/fac5cc02e468ccd48231e4723fd353f661c4bf3f/labs/lab8-end-of-sprint-activities/images/lab8-submit-new-issue.png --------------------------------------------------------------------------------