Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DIW 2016: Github Project Scaffolding with Googl...
Search
dirtystylus
November 15, 2016
Technology
0
180
DIW 2016: Github Project Scaffolding with Google Sheets and Zenhub
Talk given at Delaware Innovation Week. November 15, 2016
dirtystylus
November 15, 2016
Tweet
Share
More Decks by dirtystylus
See All by dirtystylus
Rapid Data APIs using GraphQL and Drupal
mllobrera
0
57
Decoupled Drupal Days 2018: Drupal Unhitched
mllobrera
0
270
Drupaldelphia 2018: Drupal Unhitched: The CMS in Decoupled Architectures
mllobrera
0
220
Drupalcon 2017: Pattern Language: Pattern Libraries in the Wild
mllobrera
0
420
Philly Tech Week 2016: Decoupled Development: Feeding Your Application with Off-the-Shelf Tools
mllobrera
0
110
Drupal Beyond the Browser: Using Drupal to Power Apps and Touchscreens
mllobrera
0
300
Decoupled Development with WordPress JSON APIs
mllobrera
0
610
Drupaldelphia 2014: Progressive Enhancement in Drupal 7, Using Ajax-Include Patterns
mllobrera
0
120
Drupaldelphia 2013 - Tyler School of Art: A Case Study in User-Centered Decision-Making
mllobrera
0
980
Other Decks in Technology
See All in Technology
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
フルカイテン株式会社 採用資料
fullkaiten
0
40k
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
5
570
Application Development WG Intro at AppDeveloperCon
salaboy
0
180
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.3k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
52
13k
A Tale of Four Properties
chriscoyier
156
23k
Gamification - CAS2011
davidbonilla
80
5k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Designing for humans not robots
tammielis
250
25k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Faster Mobile Websites
deanohume
305
30k
A better future with KSS
kneath
238
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
It's Worth the Effort
3n
183
27k
Transcript
Github Project Scaffolding with Google Sheets and Zenhub Delaware Innovation
Week November 15, 2016
Hi. I’m Mark. Director of Technology, Bluecadet @dirtystylus
Let’s talk about workflow. Beginnings, and endings.
Clues from cooking • Recipes—what is the base set of
things you repeat for success? • Tasks for setting up a project • Tasks for launching a project • Manual entry = time
Interlude: Bench Time @ Bluecadet • List of pre-approved internal
agency projects • Folks can chip away at things they’re excited about • Some examples: Electron for web-based apps. Unity 3D in Oculus Rift.
Addressing the pain points at the start and end.
Ingredients • Listening • Empathy • Github API • Python
• PyGithub (https://github.com/PyGithub/PyGithub)
Automation to reduce friction.
Step One: Create an Issue
#!/usr/bin/python import sys sys.path.append("./PyGithub"); from github import Github import getpass
# Authenticate to github.com and create PyGithub "Github" object username
= raw_input("Github username: ") pw = getpass.getpass() g = Github(username, pw) repository = "dirtystylus/pygithub-sandbox" repo = g.get_repo(repository) issue = repo.create_issue("Test issue", "This is a test issue.")
Step Two: Labels and Milestones
Prerequisites • Create Labels and Milestones first • Label is
String • Milestone is Integer • ¯\_(ツ)_/¯
username = raw_input("Github username: ") pw = getpass.getpass() g =
Github(username, pw) user = g.get_user(username) repository = "dirtystylus/pygithub-sandbox" repo = g.get_repo(repository) milestone = repo.get_milestone(1) labels = ["Launch Checklist"] issue = repo.create_issue("Test issue", "This is a test issue.", user, milestone, labels)
Step Three: CSV
Prerequisites • CSV file with a column of Issue names
• csv, time libraries
username = raw_input("Github username: ") pw = getpass.getpass() g =
Github(username, pw) user = g.get_user(username) repository = "dirtystylus/pygithub-sandbox" repo = g.get_repo(repository) milestone = repo.get_milestone(1) labels = ["Launch Checklist"] csv_file = "launch-checklist.csv"
with open(csv_file, 'rb') as f: reader = csv.reader(f) for row
in reader: issue = repo.create_issue("Launch Checklist: " + row[0], row[0], user, milestone, labels) print "Created issue Launch Checklist: " + row[0] time.sleep(2)
Step Four: Google Sheet
Living Documents • Launch Checklist Template item examples: ◦ Enable
caching ◦ Performance Tests (Webpagetest) ◦ Test 404 page ◦ Test 301 redirects
Prerequisites • Google Quick Start: https://developers.google.com/sheets/quickstart/python • client_secret.json • google-api-python-client
library
None
None
def get_credentials(): # Google OAuth stuff here def main(): #
Pretty much the same as before, except now we’re pulling in the spreadsheet from Google’s Sheets API and then looping through it
Example Time
None
None
None
None
None
None
Sudden-death overtime
Github + Zenhub • Zenhub (https://www.zenhub.com) • Lightweight kanban-style project
boards • Estimates, burndowns
Zenhub Board Setup • Backlog (sometimes we set up future
pipelines to reduce volume) • Ready • In Progress • Blocked • Done
None
Thank you. Mark Llobrera (@dirtystylus) Slides: https://speakerdeck.com/mllobrera/diw-2016-github-project-scaffolding-with-google-sheets-and-zenh ub Repo: https://github.com/dirtystylus/diw-2016