This document discusses using Git hooks for deployment to staging and production environments. It provides examples of a simple scenario using a post-update hook to automatically deploy code on push to a single production server. It also outlines a more advanced setup using Git hooks to deploy to staging and production environments with different processes, including emails on staging deploys and manual gem updates for production.
A code formatter is tool which formats our code by given configuration like maintaining indentation, tabs vs space, number of arguments in line, trailing commas.
A Linter is a tool which not only checks indentation, tailing commas but it also catch possible and common errors which we ignore or forget.
Github Actions enables you to create custom software development lifecycle workflows directly in your Github repository. These workflows are made out of different tasks so-called actions that can be run automatically on certain events.
A code formatter is tool which formats our code by given configuration like maintaining indentation, tabs vs space, number of arguments in line, trailing commas.
A Linter is a tool which not only checks indentation, tailing commas but it also catch possible and common errors which we ignore or forget.
Github Actions enables you to create custom software development lifecycle workflows directly in your Github repository. These workflows are made out of different tasks so-called actions that can be run automatically on certain events.
The API acronym is everywhere on the Internet. It seems like every great company offers an API. But what is it exactly?
This deck will present you the very concept of API with a simple metaphor, and then will take four exemples of very popular APIs integrated by more popular websites (Airbnb, Uber, etc...).
A deck by Sébastien Saunier, CTO @ Le Wagon (https://www.lewagon.com)
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability.
* What is different GitHub Flow and Git Flow?
* What is GitHub Actions?
* How to write the simple workflow?
* What's problem in GitHub Actions UI?
* What's problem with Secrets in GitHub Actions?
* How to write your first GitHub Actions and upload to the marketplace?
* What's a problem with environment variables in GitHub Actions?
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
This text presentation attempts to hit on the highlight features and structure of Django and its ecco-system. It is intended as an introduction for those who are curious about , what is it?
The API acronym is everywhere on the Internet. It seems like every great company offers an API. But what is it exactly?
This deck will present you the very concept of API with a simple metaphor, and then will take four exemples of very popular APIs integrated by more popular websites (Airbnb, Uber, etc...).
A deck by Sébastien Saunier, CTO @ Le Wagon (https://www.lewagon.com)
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability.
* What is different GitHub Flow and Git Flow?
* What is GitHub Actions?
* How to write the simple workflow?
* What's problem in GitHub Actions UI?
* What's problem with Secrets in GitHub Actions?
* How to write your first GitHub Actions and upload to the marketplace?
* What's a problem with environment variables in GitHub Actions?
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
This text presentation attempts to hit on the highlight features and structure of Django and its ecco-system. It is intended as an introduction for those who are curious about , what is it?
DPS, Inc. Corporate Event Services - Company OverviewStuartKopple
DPS Corporate provides state-of-the-art event solutions and design ideation for all scales of corporate events, conferences, concert tours, and festivals, with an extensive top of the line solutions inventory comprised of the latest equipment and innovations.
Hi I'm Mike and my company is AVTC Designs. We are an Audio Visual Rental and Production Company. We do all types of events from corporate, weddings, and conventions.
Connected Productions - Experience Design and Event Production - Brochure 2010Connected Productions
View the latest brochure from Connected Productions, a full service event design and event production boutique agency with offices in New York and Paris.
More than creating an event, we create an experience. We touch, we shake, we awake , we create the unexpected.
More information at www.connectedproductions.org
The technologies and people we are designing experiences for are constantly changing, in most cases they are changing at a rate that is difficult keep up with. When we think about how our teams are structured and the design processes we use in light of this challenge, a new design problem (or problem space) emerges, one that requires us to focus inward. How do we structure our teams and processes to be resilient? What would happen if we looked at our teams and design process as IA’s, Designers, Researchers? What strategies would we put in place to help them be successful? This talk will look at challenges we face leading, supporting, or simply being a part of design teams creating experiences for user groups with changing technological needs.
In this tutorial, we will explain how to get your own GitHub instance running on your own Ubuntu 12.04 VPS. Ubuntu 12.04 is recommended because of some incompatibilities between Python and Ruby on other Linux distributions. Also, make sure you have at least 1GB RAM memory on your VPS. Our first step is to install some required packages and dependencies.
Presented by VEXXHOST, provider of Openstack based Public and Private Cloud Infrastructure
https://vexxhost.com/
DevOps Workshop Part 1
Daniel Laufer on January 19, 2022
Learn all about DevOps, and get the chance to set up automated deployment and testing of your applications using GitHub Actions and Firebase!
La importancia de versionar el código: GitHub, portafolio y recursos para est...CloudNativeElSalvado
Hoy en día el uso de una herramienta de versionado de código es un elemento base para todo programador. Pero, ¿Sabías que te puede servir de portafolio? o que también puedes versionar infraestructura? y ¿Sabías que GitHub ofrece un paquete con muchos beneficios gratuitos para estudiantes de parte de sus socios? Sé parte de este evento y entérate de esto y más.
AGENDA
¿Qué es Git y para qué se utiliza?
Comandos básicos de Git
Trabajar en equipo con Git
Importancia de tener un portafolio en Git
Deployment
Beneficios de GitHub para estudiantes
Apigee Deploy Grunt Plugin - API Management Lifecycle Tool that makes your life easier by providing a JavaScript pluggable framework for API development.
Open up your platform with Open Source and GitHubScott Graham
Use GitHub & open source to get your users involved in projects within your company. This presentation give a quick run down of what you need to know to get started.
An introduction to git and github, presented by Nina Zakharenko at Start SLC 2015 on behalf of Girl Develop It.
Prerequisites for exercises: installing git on your local machine, creating a github.com account.
Github Action is the CI/CD tool made by Github. Deeply integrated with Github features, it can not only automate deployments, but also Githu.b repository management. In this sharing I will talk about how we use Github action in LikeCoin and some issues we encountered.
Talk given at ISC2 Secure SDLC event in Austin, TX
The release velocity for our applications is increasing, often leaving security testing behind. In some cases, the security team ends up being the bottleneck. That's bad. In an idyllic world, security testing would happen earlier in the development lifecycle, but lets do one better. Lets do security testing on every code change. Using automation tooling and DevOps practices, this talk will help you tune security testing to your release cadence and more importantly help you deliver more rugged software.
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturasparkfabrik
GitOps è un nuovo metodo di CD che utilizza Git come unica fonte di verità per le applicazioni e per l'infrastruttura (declarative infrastructure / infrastructure as code), fornendo sia il controllo delle revisioni che il controllo delle modifiche. In questo talk vedremo i concetti alla base di CI/CD, ovvero Continuous Integration e Continuous Deployment (o anche Continuous Delivery), pratiche nello sviluppo software che permettono ai team di creare dei progetti collaborativi in modo rapido, efficiente e idealmente con meno errori. Infine vedremo come implementare un flusso di lavoro GitOps usando Github actions e ArgoCD.
5 things cucumber is bad at by Richard LawrenceSkills Matter
This talk will look at 5 things Cucumber’s bad at, why that’s a good thing, and what it tells us about Cucumber’s sweet spot in a team’s toolkit.
Many times, when people complain about something Cucumber’s not good at, they’re unwittingly describing something Cucumber shouldn't be good at. They’re revealing that they don’t quite understand BDD and Cucumber’s role in it.
Cucumber is the world's most misunderstood collaboration tool and people need to hear this over and over again.
Patterns for slick database applicationsSkills Matter
Slick is Typesafe's open source database access library for Scala. It features a collection-style API, compact syntax, type-safe, compositional queries and explicit execution control. Community feedback helped us to identify common problems developers are facing when writing Slick applications. This talk suggests particular solutions to these problems. We will be looking at reducing boiler-plate, re-using code between queries, efficiently modeling object references and more.
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmSkills Matter
Metascala is a tiny metacircular Java Virtual Machine (JVM) written in the Scala programming language. Metascala is barely 3000 lines of Scala, and is complete enough that it is able to interpret itself metacircularly. Being written in Scala and compiled to Java bytecode, the Metascala JVM requires a host JVM in order to run.
The goal of Metascala is to create a platform to experiment with the JVM: a 3000 line JVM written in Scala is probably much more approachable than the 1,000,000 lines of C/C++ which make up HotSpot, the standard implementation, and more amenable to implementing fun features like continuations, isolates or value classes. The 3000 lines of code gives you:
The bytecode interpreter, together with all the run-time data structures
A stack-machine to SSA register-machine bytecode translator
A custom heap, complete with a stop-the-world, copying garbage collector
Implementations of parts of the JVM's native interface
Although it is far from a complete implementation, Metascala already provides the ability to run untrusted bytecode securely (albeit slowly), since every operation which could potentially cause harm (including memory allocations and CPU usage) is virtualized and can be controlled. Ongoing work includes tightening of the security guarantees, improving compatibility and increasing performance.
ENJOYIN
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Skills Matter
Code Quotations: Code-as-Data for F#
This tutorial will cover F# Code Quotations in-depth. You'll learn what Code Quotations are, how to use them, and where to apply them in your applications. We'll work through several real-world examples to highlight the important features -- and potential pitfalls -- of Code Quotations.
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
Elixir, Erlang, and Cucumberl
Elixir is a new Ruby-inspired programming language that uses the powerful concurrent machinery of Erlang behind the scenes. Cucumberl is a port of Cucumber to Erlang. Let's see what happens when we put them together.
In this talk, we'll discuss:
How Erlang's concurrency makes it easier to write robust programs
Elixir's approachable syntax
How to test Erlang and Elixir programs using Cucumberl
Attendees will walk away with a solid introduction to the principles of Erlang, and an appreciation of the way Elixir brings the joy of Ruby to the solidity of the Erlang runtime.
Cukeup nyc peter bell on getting started with cucumber.jsSkills Matter
Cukeup NYC. Peter Bell on Getting started with cucumber.js
Ever wished you could use cucumber in your javascript apps? In this talk we'll look at the current state of play of cucumber js, when you should and shouldn't use it, and how to get started writing your step definitions in javascript.
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Skills Matter
In this engaging experience report, we will present 3 different views – Developer, Tester, Business Analyst – of implementing Acceptance Test Driven Development in a complex, data-driven domain. Hear how we used ATDD for building a ubiquitous language across the entire team, promoting faster feedback, and cultivating a culture where product owners were deeply invested in the quality of both every deliverable and the system as a whole.
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Skills Matter
In this tutorial, Phil and Rachel will introduce you to the Try F# samples giving you exposure to, and an understanding of, how F# tackles some real-world scenarios. We'll help you explore, generate, and just play around with code samples, as well as talk you through some of the key principles of F#. By the end of this session, you'll have gone from zero to data science in only a few hours!
Progressive f# tutorials nyc don syme on keynote f# in the open source worldSkills Matter
F# is a powerful open-source language which Microsoft, other companies and the F# community all contribute to. In this talk, Don will discuss how the “F# space” has recently opened up significantly in interesting ways. F# now includes contributions that range from Cloud IDE platforms, Cloud Compute frameworks, Data interoperability components, Cross-platform execution, Try F#, MonoDevelop, and even Emacs editor integration with surprising tooling support, as well as the Visual F# tools from Microsoft and the broader NuGet package ecosystem. Don will also talk about some of the latest contributions from Microsoft Research, including new type provider components for F#, and describe how his team work with the Visual F# team and other teams around Microsoft. There will also be demos of some fun new stuff that’s been going on with F# at MSR and the community.
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Skills Matter
Would you like to learn how to make your software testing practices more effective? And how to use your testing strategy to better capture and reflect customer requirements? Gojko Adzic takes a critical look at the effectiveness of current software testing practices and proposes strategies to make it much more effective.
Dmitry mozorov on code quotations code as-data for f#Skills Matter
Code Quotations: Code-as-Data for F#
This tutorial will cover F# Code Quotations in-depth. You'll learn what Code Quotations are, how to use them, and where to apply them in your applications. We'll work through several real-world examples to highlight the important features -- and potential pitfalls -- of Code Quotations.
Simon Peyton Jones: Managing parallelismSkills Matter
If you want to program a parallel computer, it obviously makes sense to start with a computational paradigm in which parallelism is the default (ie functional programming), rather than one in which computation is based on sequential flow of control (the imperative paradigm). And yet, and yet ... functional programmers have been singing this tune since the 1980s, but do not yet rule the world. In this talk I’ll say why I think parallelism is too complex a beast to be slain at one blow, and how we are going to be driven, willy-nilly, towards a world in which side effects are much more tightly controlled than now. I’ll sketch a whole range of ways of writing parallel program in a functional paradigm (implicit parallelism, transactional memory, data parallelism, DSLs for GPUs, distributed processes, etc, etc), illustrating with examples from the rapidly moving Haskell community, and identifying some of the challenges we need to tackle.
2. Outline
What are hooks?
Scope of using hooks for deployment
Simple scenario of using git hooks
Improved scenario of using git hooks
Everyday tips
... and live demo
3. What are hooks?
Git hooks are just plain scripts what will be fired off
when certain action occurs.
Hooks are located at your repo .git/hooks directory.
4. About hooks
There are quite many hooks such as:
pre-commit, prepare-commit-msg, applypatch-msg,
pre-rebase, pre-receive etc
Today we use only one hook script:
post-update
By the way, hooks are not shared between different repos.
As far as I know, git does not provide feature to share or
ability to push hooks between repos.
5. Scope
IDEAL FOR:
small projects (such as one staging and production server)
keeping overhead and dependency low
for learning and exploring
PROBABLY NOT IDEAL FOR:
managing popular app with huge cluster of servers
and putting lot of logic into hooks, probably better fit should
be using Shef* or Puppet instead.
* Hint-hint: I'm looking forward to Shef talk, any blave here?
6. Simple scenario
As a ruby coder
you got an amazing app to maintain
and you have one production server.
Let's use git for deployment in order to keep overhead down.
7. Simple: Setting server side up
# using ssh alias 'myserver'
ssh myserver
mkdir example && cd example
git init
git config receive.denycurrentbranch ignore
# Now your repo is ready to receive new code, nice!
8. Simple: Adding a script to server repo
# make it executable
cp .git/hooks/post-update.sample .git/hooks/post-update
chmod +x .git/hooks/post-update
# edit .git/hooks/post-update
#!/bin/sh
cd ..
unset GIT_DIR
git reset --hard HEAD
# Now repo HEAD will be on latest commit
9. Simple: Restart app server
# edit again .git/hooks/post-update and add
pkill -HUP unicorn_rails # or whatever server you use
# in demo I'll use StaticMatic, so I added:
staticmatic build .
# That's it for our server side!
10. Simple: Client side setup
# add remote repo where 'myserver' is ssh alias
git remote add deploy myserver:/home/user/example
# first time pushing up submit also branch, such as master
git push deploy master
# second time you can omit master or make alias
git push deploy
# and here you go, enjoy!
11. Tips
Don't mess to much with server repo, so it's HEAD should
be clean aka 'git status' should be clean.
Keep your .gitignore file updated, so your status is clear
12. Our current project setup
STAGING:
Scope: We do push into staging multiple times a day.
We push new shiny code to github
Github fires up our cijoe integration server
Cijoe fires '.git/hooks/after-reset' hook
what pulls new code to cijoe and staging repo
Cijoe fires '.git/hooks/build-worked',
what sends emails out and now involved people can
checkout new stuff on staging.
13. Our current project setup
Scope: We do push into production once or twice a week
PRODUCTION without new gems:
Quite close to Simple Senario setup
PRODUCTION with new gems:
Quite close to Simple Senario setup,
but I went back to install new gems manually aka
'bundle install' way.
14. References
Using Git to manage a web site
http://toroid.org/ams/git-website-howto
Pro Git: Git Hooks
http://progit.org/book/ch7-3.html