SlideShare a Scribd company logo
Make an Instant Website with Webhooks
DevOps for Docs
Developer Experience Manager, Cisco DevNet
@annegentle
Anne Gentle
I love these
technique so much,
I wrote a book and
website with other
writers.
Define “docs like code”
• Automatic builds
• Branch and merge for docs
• Continuous integration
(meaning, publish
automatically after an event)
• Reviews for the docs
• Tests for the docs
• Version control for source files
Reliably repeat, and then you
have:
DevOps for Docs
Or…
DocOps!
OUR MISSION:
Create a web site with
Python, Sphinx, and
GitHub Pages
Benefits: Fast-moving processes
• Keep docs close to the code – if code
changes, change the docs.
• Automate publishing in GitHub, GitLab,
BitBucket, you name it.
• Free hosting from GitHub.
• Make a change, push, (nearly) immediate
results.
Flickr: candelabrumelabrumdanse
Quality gains
• Track your doc Issues with code Issues.
• Review docs with the experts.
• Improve docs by iterating, with no build
cost.
• Version tracking in both source files for
authors and output files for end users.
Flickr: candelabrumelabrumdanse
High value, large scale
• Enable more teams and individuals to
contribute, internally or externally.
• Authoring tools can be selected individually
and still yield the same output.
• Same workflows as code, same high-value
tools. (Low or no seat license cost.)
• Scale up and out with your docs processes,
looking for optimizations as a project grows.
Flickr: candelabrumelabrumdanse
WHATTHE HECK’S A
WEBHOOK?
HTTP POST
when an event occurs.
HTTP POST
Push to repository
Process Overview
Set up Python and Sphinx
Create GitHub
repository
https://github.com/annegentle/create-demo
Configure Sphinx deployment
Build locally
Set up GitHub Pages in repository
Populate repository
Push to repository
Deploy to production
Local: Install Python
Install Python (2.7 or 3.7)
Mac:
openTerminal, type:
$ python –V
CapitalV is for version.You
should see what version is the
default on your system, likely
2.7.15.
Windows:
No default, so install Python.
Python 2.7 on Windows XP or earlier.
Python 3.7 on Windows 10.
Go to CMD or PowerShell,
type:
> python -V
Install Python (2.7 or 3.7)
Local: Use aVirtual
Environment
Set Up aVirtual Environment
Mac:
$ python3.7 –m venv py3-sphinx
$ source py3-sphinx/bin/activate
Windows:
> python3 –m venv py3-sphinx
> . py3-sphinxScriptsactivate.bat
Set Up aVirtual Environment
Local: Install Sphinx
in the virtual environment
Install Sphinx, a Python doc tool
Mac:
$ pip install sphinx
Windows:
> pip install sphinx
Install Sphinx, a Python doc tool
Local: Configure Sphinx and
Pre-fill Pages
Run sphinx-quickstart and answer questions
$ cd create-demo
$ mkdir docs
$ sphinx-quickstart
$ ls
# Go to your local repo copy
# Can add docs to a code repo
# Answer questions, such as yes for
separate source and build
# See what you created! 🚀
Go through sphinx-quickstart
What do you have now?
Build files – Makefile and make.bat for local builds on Mac, Linux, or Windows.
A build directory.
A source directory.
A .nojekyll file. *
*Version 3.x asks you,
> githubpages: create .nojekyll file
to publish the document on GitHub
pages (y/n) [n]: y
• Write the Docs Documentation Guide:
https://www.writethedocs.org/guide/
– Consider the audience
– Know their main tasks
– Give them examples
– Link to resources
What do I write?
WRITE WRITE WRITE
Fill in some RST or
Markdown files in the repo.
$ vi docs/source/index.rst
Flickr: edwardconde
GitHub Workflow
Go to GitHub.com,
create a repo, or use an
existing repository
Name the repo with your project name.
If existing, you want a /docs directory for
this particular technique, but you can
configure other ways also.
Once created, copy the clone SSH
reference or HTTPS reference:
git clone
git@github.com:annegentle/create-demo.git
In the terminal, work on your Git repo
From within the directory with the docs source folder:
$ git clone git@github.com:annegentle/create-demo.git
$ git pull origin master # Might not be needed, do it as muscle memory
$ git checkout –b starter-files
# WRITE WRITE WRITE
$ git add .
$ git commit –a –m “Starter set of Sphinx files”
$ git push origin starter-files
In the repo, look for the new
branch, create a pull request
Click Compare & pull request
Compare in the Files changed tab if you
want
Click Merge pull request
Set up GitHub Pages with
Python Sphinx
Set up for Sphinx builds
on GitHub Pages
This is the magic part!
1. Create an empty dot file named
.nojekyll in the /docs directory.
Now you can put HTML files in the
folder and GitHub Pages serves it on
github.io.
2. Edit the Makefile and make.bat file so
that you can build the output HTML
to the docs folder as a target locally.
Check the website built
on GitHub Pages
Instant! (Nearly!)
Organization pages:
https://orgname.github.io/repo-name
User pages:
https://username.github.io/repo-name
Example:
https://annegentle.github.io/create-demo
Pro tip: short URL User page:
https://username.github.io, when you
name the User repo username.github.io.
https://annegentle.github.io
Set up GitHub Pages with Jekyll
GitHub Pages build default: Jekyll
Jekyll is a Ruby-based static site generator (SSG).
• In Settings, you can choose which branch and/or folder to publish
from.
• In Settings, you can pick a Jekyll theme, or use your own theme.
• In Settings, you can pick a custom domain name for the site.
• You can should use HTTPS on the custom domain name.
GitHub Pages automatically runs the build and
publishes to github.io or your custom domain.
New
Write your page
content in the
repository.
Push to the master
branch, triggering the
Webhook.
Repeat.
You’ve GotThis!
What is docs automation good for?
Publish high-quality
reliably and repeatedly.
Look for new ideas for
automation.
Get more Python
practice. (Of course!)
Anne Gentle
Developer Experience Manager,
Cisco DevNet
Manage developer content and
support by day, write books on
the side. Ask me and I’ll help!
Python, GitHub, REST API tutorials:
developer.cisco.com/learning/
Tutorials for static site generators with
GitHub and Python, Ruby, or Go:
docslikecode.com/learn
Make an Instant Website with Webhooks

More Related Content

What's hot

Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Matthew McCullough
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
Senthilkumar Gopal
 
Teaching a Designer to Use GitHub
Teaching a Designer to Use GitHubTeaching a Designer to Use GitHub
Teaching a Designer to Use GitHub
Liam Dempsey
 
Introduction to new technologies in drupal 8
Introduction to new technologies in drupal 8Introduction to new technologies in drupal 8
Introduction to new technologies in drupal 8
naxoc
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
"FENG "GEORGE"" YU
 
Git & Github Workshop - Le Wagon Melbourne
Git & Github Workshop - Le Wagon MelbourneGit & Github Workshop - Le Wagon Melbourne
Git & Github Workshop - Le Wagon Melbourne
Paal Ringstad
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern Developer
John Stevenson
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
Behzad Altaf
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
SV Ruby on Rails Meetup
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Lee Hanxue
 
Jenkins Shared Libraries
Jenkins Shared LibrariesJenkins Shared Libraries
Jenkins Shared Libraries
XPeppers
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
William Chong
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Roland Emmanuel Salunga
 
Introduction to bower
Introduction to bowerIntroduction to bower
Introduction to bower
Jitendra Zaa
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
Carl Brown
 
An introduction to git
An introduction to gitAn introduction to git
An introduction to git
olberger
 
Ansible project-deploy (NomadPHP lightning talk)
Ansible project-deploy (NomadPHP lightning talk)Ansible project-deploy (NomadPHP lightning talk)
Ansible project-deploy (NomadPHP lightning talk)
Ramon de la Fuente
 

What's hot (20)

Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Teaching a Designer to Use GitHub
Teaching a Designer to Use GitHubTeaching a Designer to Use GitHub
Teaching a Designer to Use GitHub
 
Introduction to new technologies in drupal 8
Introduction to new technologies in drupal 8Introduction to new technologies in drupal 8
Introduction to new technologies in drupal 8
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Git & Github Workshop - Le Wagon Melbourne
Git & Github Workshop - Le Wagon MelbourneGit & Github Workshop - Le Wagon Melbourne
Git & Github Workshop - Le Wagon Melbourne
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern Developer
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Learning git
Learning gitLearning git
Learning git
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Jenkins Shared Libraries
Jenkins Shared LibrariesJenkins Shared Libraries
Jenkins Shared Libraries
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Introduction to bower
Introduction to bowerIntroduction to bower
Introduction to bower
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
An introduction to git
An introduction to gitAn introduction to git
An introduction to git
 
Ansible project-deploy (NomadPHP lightning talk)
Ansible project-deploy (NomadPHP lightning talk)Ansible project-deploy (NomadPHP lightning talk)
Ansible project-deploy (NomadPHP lightning talk)
 

Similar to Make an Instant Website with Webhooks

database.pptx
database.pptxdatabase.pptx
database.pptx
Database110
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
Derek Jacoby
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
Derek Jacoby
 
.Git for WordPress Developers
.Git for WordPress Developers.Git for WordPress Developers
.Git for WordPress Developers
mpvanwinkle
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
Den Delimarsky
 
Making Media with Jupyter
Making Media with JupyterMaking Media with Jupyter
Making Media with Jupyter
Domino Data Lab
 
Create Your First Cocoa pods
Create Your First Cocoa podsCreate Your First Cocoa pods
Create Your First Cocoa pods
Pawan Ramteke
 
Introduction to GitHub (workshop)
Introduction to GitHub (workshop)Introduction to GitHub (workshop)
Introduction to GitHub (workshop)
Miquel Beltran Febrer
 
Host any project in che with stacks & chefiles
Host any project in che with stacks & chefilesHost any project in che with stacks & chefiles
Host any project in che with stacks & chefiles
Florent BENOIT
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
Mandi Walls
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
AWSKRUG - AWS한국사용자모임
 
Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development
Pantheon
 
Get your Git on GitHub
Get your Git on GitHubGet your Git on GitHub
Get your Git on GitHub
Runcy Oommen
 
Session 2
Session 2Session 2
Session 2
gayathiry
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
Cindy Royal
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
Howard Greenberg
 
Princeton RSE Peer network first meeting
Princeton RSE Peer network first meetingPrinceton RSE Peer network first meeting
Princeton RSE Peer network first meeting
Henry Schreiner
 
Reproducible research: practice
Reproducible research: practiceReproducible research: practice
Reproducible research: practice
C. Tobin Magle
 
BarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian MulvanyBarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian Mulvany
Ian Mulvany
 

Similar to Make an Instant Website with Webhooks (20)

database.pptx
database.pptxdatabase.pptx
database.pptx
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
.Git for WordPress Developers
.Git for WordPress Developers.Git for WordPress Developers
.Git for WordPress Developers
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
Making Media with Jupyter
Making Media with JupyterMaking Media with Jupyter
Making Media with Jupyter
 
Create Your First Cocoa pods
Create Your First Cocoa podsCreate Your First Cocoa pods
Create Your First Cocoa pods
 
Introduction to GitHub (workshop)
Introduction to GitHub (workshop)Introduction to GitHub (workshop)
Introduction to GitHub (workshop)
 
Host any project in che with stacks & chefiles
Host any project in che with stacks & chefilesHost any project in che with stacks & chefiles
Host any project in che with stacks & chefiles
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
 
Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development
 
Get your Git on GitHub
Get your Git on GitHubGet your Git on GitHub
Get your Git on GitHub
 
Session 2
Session 2Session 2
Session 2
 
Session 2
Session 2Session 2
Session 2
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
Princeton RSE Peer network first meeting
Princeton RSE Peer network first meetingPrinceton RSE Peer network first meeting
Princeton RSE Peer network first meeting
 
Reproducible research: practice
Reproducible research: practiceReproducible research: practice
Reproducible research: practice
 
BarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian MulvanyBarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian Mulvany
 

More from Anne Gentle

Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations
Inclusive, Accessible Tech: Bias-Free Language in Code and ConfigurationsInclusive, Accessible Tech: Bias-Free Language in Code and Configurations
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations
Anne Gentle
 
Docs as Code: Publishing Processes for API Experiences
Docs as Code: Publishing Processes for API ExperiencesDocs as Code: Publishing Processes for API Experiences
Docs as Code: Publishing Processes for API Experiences
Anne Gentle
 
Docs Like Code
Docs Like CodeDocs Like Code
Docs Like Code
Anne Gentle
 
Docs Like Code: Strategies and Stories
Docs Like Code: Strategies and StoriesDocs Like Code: Strategies and Stories
Docs Like Code: Strategies and Stories
Anne Gentle
 
Deploying Apps on OpenStack
Deploying Apps on OpenStackDeploying Apps on OpenStack
Deploying Apps on OpenStack
Anne Gentle
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
Anne Gentle
 
Journey into Continuous Glucose Monitoring Technology as a Parent
Journey into Continuous Glucose Monitoring Technology as a ParentJourney into Continuous Glucose Monitoring Technology as a Parent
Journey into Continuous Glucose Monitoring Technology as a Parent
Anne Gentle
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
Anne Gentle
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
Anne Gentle
 
Writing a Technical Talk Proposal
Writing a Technical Talk ProposalWriting a Technical Talk Proposal
Writing a Technical Talk Proposal
Anne Gentle
 
Women in tech: Be that light
Women in tech: Be that lightWomen in tech: Be that light
Women in tech: Be that light
Anne Gentle
 
You'll Never Look at Developer Support the Same Way Again
You'll Never Look at Developer Support the Same Way AgainYou'll Never Look at Developer Support the Same Way Again
You'll Never Look at Developer Support the Same Way Again
Anne Gentle
 
So You Want to be an OpenStack Contributor
So You Want to be an OpenStack ContributorSo You Want to be an OpenStack Contributor
So You Want to be an OpenStack Contributor
Anne Gentle
 
OpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot CampOpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot Camp
Anne Gentle
 
Social Media, Social Networking, and Social Relevance in Tech Comm
Social Media, Social Networking, and Social Relevance in Tech CommSocial Media, Social Networking, and Social Relevance in Tech Comm
Social Media, Social Networking, and Social Relevance in Tech Comm
Anne Gentle
 
OpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATXOpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATX
Anne Gentle
 
Women of OpenStack breakfast welcome
Women of OpenStack breakfast welcomeWomen of OpenStack breakfast welcome
Women of OpenStack breakfast welcome
Anne Gentle
 
Social web for Tech Comm, STC March 2013
Social web for Tech Comm, STC March 2013Social web for Tech Comm, STC March 2013
Social web for Tech Comm, STC March 2013
Anne Gentle
 
OpenStack documentation & translation management 2012_summit
OpenStack documentation & translation management 2012_summitOpenStack documentation & translation management 2012_summit
OpenStack documentation & translation management 2012_summit
Anne Gentle
 
OpenStack Documentation in the Open
OpenStack Documentation in the OpenOpenStack Documentation in the Open
OpenStack Documentation in the Open
Anne Gentle
 

More from Anne Gentle (20)

Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations
Inclusive, Accessible Tech: Bias-Free Language in Code and ConfigurationsInclusive, Accessible Tech: Bias-Free Language in Code and Configurations
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations
 
Docs as Code: Publishing Processes for API Experiences
Docs as Code: Publishing Processes for API ExperiencesDocs as Code: Publishing Processes for API Experiences
Docs as Code: Publishing Processes for API Experiences
 
Docs Like Code
Docs Like CodeDocs Like Code
Docs Like Code
 
Docs Like Code: Strategies and Stories
Docs Like Code: Strategies and StoriesDocs Like Code: Strategies and Stories
Docs Like Code: Strategies and Stories
 
Deploying Apps on OpenStack
Deploying Apps on OpenStackDeploying Apps on OpenStack
Deploying Apps on OpenStack
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
 
Journey into Continuous Glucose Monitoring Technology as a Parent
Journey into Continuous Glucose Monitoring Technology as a ParentJourney into Continuous Glucose Monitoring Technology as a Parent
Journey into Continuous Glucose Monitoring Technology as a Parent
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
Writing a Technical Talk Proposal
Writing a Technical Talk ProposalWriting a Technical Talk Proposal
Writing a Technical Talk Proposal
 
Women in tech: Be that light
Women in tech: Be that lightWomen in tech: Be that light
Women in tech: Be that light
 
You'll Never Look at Developer Support the Same Way Again
You'll Never Look at Developer Support the Same Way AgainYou'll Never Look at Developer Support the Same Way Again
You'll Never Look at Developer Support the Same Way Again
 
So You Want to be an OpenStack Contributor
So You Want to be an OpenStack ContributorSo You Want to be an OpenStack Contributor
So You Want to be an OpenStack Contributor
 
OpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot CampOpenStack Doc Overview for Boot Camp
OpenStack Doc Overview for Boot Camp
 
Social Media, Social Networking, and Social Relevance in Tech Comm
Social Media, Social Networking, and Social Relevance in Tech CommSocial Media, Social Networking, and Social Relevance in Tech Comm
Social Media, Social Networking, and Social Relevance in Tech Comm
 
OpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATXOpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATX
 
Women of OpenStack breakfast welcome
Women of OpenStack breakfast welcomeWomen of OpenStack breakfast welcome
Women of OpenStack breakfast welcome
 
Social web for Tech Comm, STC March 2013
Social web for Tech Comm, STC March 2013Social web for Tech Comm, STC March 2013
Social web for Tech Comm, STC March 2013
 
OpenStack documentation & translation management 2012_summit
OpenStack documentation & translation management 2012_summitOpenStack documentation & translation management 2012_summit
OpenStack documentation & translation management 2012_summit
 
OpenStack Documentation in the Open
OpenStack Documentation in the OpenOpenStack Documentation in the Open
OpenStack Documentation in the Open
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Make an Instant Website with Webhooks

  • 1. Make an Instant Website with Webhooks DevOps for Docs Developer Experience Manager, Cisco DevNet @annegentle Anne Gentle
  • 2. I love these technique so much, I wrote a book and website with other writers.
  • 3. Define “docs like code” • Automatic builds • Branch and merge for docs • Continuous integration (meaning, publish automatically after an event) • Reviews for the docs • Tests for the docs • Version control for source files Reliably repeat, and then you have: DevOps for Docs Or… DocOps!
  • 4. OUR MISSION: Create a web site with Python, Sphinx, and GitHub Pages
  • 5. Benefits: Fast-moving processes • Keep docs close to the code – if code changes, change the docs. • Automate publishing in GitHub, GitLab, BitBucket, you name it. • Free hosting from GitHub. • Make a change, push, (nearly) immediate results. Flickr: candelabrumelabrumdanse
  • 6. Quality gains • Track your doc Issues with code Issues. • Review docs with the experts. • Improve docs by iterating, with no build cost. • Version tracking in both source files for authors and output files for end users. Flickr: candelabrumelabrumdanse
  • 7. High value, large scale • Enable more teams and individuals to contribute, internally or externally. • Authoring tools can be selected individually and still yield the same output. • Same workflows as code, same high-value tools. (Low or no seat license cost.) • Scale up and out with your docs processes, looking for optimizations as a project grows. Flickr: candelabrumelabrumdanse
  • 8. WHATTHE HECK’S A WEBHOOK? HTTP POST when an event occurs.
  • 9. HTTP POST Push to repository
  • 10. Process Overview Set up Python and Sphinx Create GitHub repository https://github.com/annegentle/create-demo Configure Sphinx deployment Build locally Set up GitHub Pages in repository Populate repository Push to repository Deploy to production
  • 12. Install Python (2.7 or 3.7) Mac: openTerminal, type: $ python –V CapitalV is for version.You should see what version is the default on your system, likely 2.7.15. Windows: No default, so install Python. Python 2.7 on Windows XP or earlier. Python 3.7 on Windows 10. Go to CMD or PowerShell, type: > python -V
  • 15. Set Up aVirtual Environment Mac: $ python3.7 –m venv py3-sphinx $ source py3-sphinx/bin/activate Windows: > python3 –m venv py3-sphinx > . py3-sphinxScriptsactivate.bat
  • 16. Set Up aVirtual Environment
  • 17. Local: Install Sphinx in the virtual environment
  • 18. Install Sphinx, a Python doc tool Mac: $ pip install sphinx Windows: > pip install sphinx
  • 19. Install Sphinx, a Python doc tool
  • 20. Local: Configure Sphinx and Pre-fill Pages
  • 21. Run sphinx-quickstart and answer questions $ cd create-demo $ mkdir docs $ sphinx-quickstart $ ls # Go to your local repo copy # Can add docs to a code repo # Answer questions, such as yes for separate source and build # See what you created! 🚀
  • 23. What do you have now? Build files – Makefile and make.bat for local builds on Mac, Linux, or Windows. A build directory. A source directory. A .nojekyll file. * *Version 3.x asks you, > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]: y
  • 24. • Write the Docs Documentation Guide: https://www.writethedocs.org/guide/ – Consider the audience – Know their main tasks – Give them examples – Link to resources What do I write?
  • 25. WRITE WRITE WRITE Fill in some RST or Markdown files in the repo. $ vi docs/source/index.rst Flickr: edwardconde
  • 27. Go to GitHub.com, create a repo, or use an existing repository Name the repo with your project name. If existing, you want a /docs directory for this particular technique, but you can configure other ways also. Once created, copy the clone SSH reference or HTTPS reference: git clone git@github.com:annegentle/create-demo.git
  • 28. In the terminal, work on your Git repo From within the directory with the docs source folder: $ git clone git@github.com:annegentle/create-demo.git $ git pull origin master # Might not be needed, do it as muscle memory $ git checkout –b starter-files # WRITE WRITE WRITE $ git add . $ git commit –a –m “Starter set of Sphinx files” $ git push origin starter-files
  • 29. In the repo, look for the new branch, create a pull request Click Compare & pull request Compare in the Files changed tab if you want Click Merge pull request
  • 30. Set up GitHub Pages with Python Sphinx
  • 31. Set up for Sphinx builds on GitHub Pages This is the magic part! 1. Create an empty dot file named .nojekyll in the /docs directory. Now you can put HTML files in the folder and GitHub Pages serves it on github.io. 2. Edit the Makefile and make.bat file so that you can build the output HTML to the docs folder as a target locally.
  • 32. Check the website built on GitHub Pages Instant! (Nearly!) Organization pages: https://orgname.github.io/repo-name User pages: https://username.github.io/repo-name Example: https://annegentle.github.io/create-demo Pro tip: short URL User page: https://username.github.io, when you name the User repo username.github.io. https://annegentle.github.io
  • 33. Set up GitHub Pages with Jekyll
  • 34. GitHub Pages build default: Jekyll Jekyll is a Ruby-based static site generator (SSG). • In Settings, you can choose which branch and/or folder to publish from. • In Settings, you can pick a Jekyll theme, or use your own theme. • In Settings, you can pick a custom domain name for the site. • You can should use HTTPS on the custom domain name. GitHub Pages automatically runs the build and publishes to github.io or your custom domain. New
  • 35. Write your page content in the repository. Push to the master branch, triggering the Webhook. Repeat. You’ve GotThis!
  • 36. What is docs automation good for? Publish high-quality reliably and repeatedly. Look for new ideas for automation. Get more Python practice. (Of course!)
  • 37. Anne Gentle Developer Experience Manager, Cisco DevNet Manage developer content and support by day, write books on the side. Ask me and I’ll help! Python, GitHub, REST API tutorials: developer.cisco.com/learning/ Tutorials for static site generators with GitHub and Python, Ruby, or Go: docslikecode.com/learn