What is GitHub Actions and what are its top alternatives?
Top Alternatives to GitHub Actions
- CircleCI
Continuous integration and delivery platform helps software teams rapidly release code with confidence by automating the build, test, and deploy process. Offers a modern software development platform that lets teams ramp. ...
- Jenkins
In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project. ...
- Azure Pipelines
Fast builds with parallel jobs and test execution. Use container jobs to create consistent and reliable builds with the exact tools you need. Create new containers with ease and push them to any registry. ...
- GitLab CI
GitLab offers a continuous integration service. If you add a .gitlab-ci.yml file to the root directory of your repository, and configure your GitLab project to use a Runner, then each merge request or push triggers your CI pipeline. ...
- GitLab
GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers. ...
- Buildkite
CI and build automation tool that combines the power of your own build infrastructure with the convenience of a managed, centralized web UI. Used by Shopify, Basecamp, Digital Ocean, Venmo, Cochlear, Bugsnag and more. ...
- Trello
Trello is a collaboration tool that organizes your projects into boards. In one glance, Trello tells you what's being worked on, who's working on what, and where something is in a process. ...
- Confluence
Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence instead – where it's easy to find, use, and update. ...
GitHub Actions alternatives & related posts
- Github integration224
- Easy setup176
- Fast builds152
- Competitively priced94
- Slack integration74
- Docker support54
- Awesome UI44
- Great customer support33
- Ios support18
- Hipchat integration14
- SSH debug access13
- Free for Open Source11
- Mobile support5
- Bitbucket integration5
- Nodejs support4
- AWS CodeDeploy integration4
- Free for Github private repo3
- Great support3
- YAML configuration3
- Continuous Deployment2
- Simple, clean UI2
- Clojure2
- Clojurescript2
- OSX support2
- Android support1
- Fair pricing1
- All inclusive testing1
- Japanese in rspec comment appears OK1
- Unstable1
- Build PR Branch Only1
- Autoscaling1
- Helpful documentation1
- Really easy to use1
- Favorite1
- Works1
- Easy to deploy to private servers1
- Extremely configurable1
- So circular1
- Easy setup, easy to understand, fast and reliable1
- Parallel builds for slow test suites1
- Easy setup. 2.0 is fast!1
- Parallelism1
- Stable0
- Stable0
- Unstable12
- Scammy pricing structure6
- Aggressive Github permissions0
related CircleCI posts
















Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).
It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up
or vagrant reload
we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.
I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up
, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.
We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.
If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.
The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).
Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common Docker and CircleCI setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and LXC. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for Amazon EC2 (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.
We actually started out on Travis CI, but we've migrated our main builds to CircleCI, and it's been a huge improvement.
The reason it's been a huge improvement is that Travis CI has a fundamentally bad design for their images, where they start with a standard base Linux image containing tons of packages (several versions of postgres, every programming language environment, etc). This is potentially nice for the "get builds for a small project running quickly" use case, but it's a total disaster for a larger project that needs a decent number of dependencies and cares about the performance and reliability of their build.
This issue is exacerbated by their networking infrastructure being unreliable; we usually saw over 1% of builds failing due to transient networking errors in Travis CI, even after we added retries to the most frequently failing operations like apt update
or pip install
. And they never install Ubuntu's point release updates to their images. So doing an apt update
, apt install
, or especially apt upgrade
would take forever. We ended up writing code to actually uninstall many of their base packages and pin the versions of hundreds of others to get a semi-fast, semi-reliable build. It was infuriating.
The CircleCI v2.0 system has the right design for a CI system: we can customize the base image to start with any expensive-to-install packages we need for our build, and we can update that image if and when we want to. The end result is that when migrating, we were able to delete all the hacky optimizations mentioned above, while still ending up with a 50% faster build latency. And we've also had 5-10x fewer issues with networking-related flakes, which means one doesn't have to constantly check whether a build failure is actually due to an issue with the code under test or "just another networking flake".
- Hosted internally520
- Free open source464
- Great to build, deploy or launch anything async314
- Tons of integrations243
- Rich set of plugins with good documentation210
- Has support for build pipelines110
- Open source and tons of integrations72
- Easy setup65
- It is open-source62
- Workflow plugin54
- Configuration as code11
- Very powerful tool10
- Many Plugins9
- Continuous Integration9
- Great flexibility8
- Git and Maven integration is better8
- 100% free and open source7
- Github integration6
- Slack Integration (plugin)6
- Easy customisation5
- Self-hosted GitLab Integration (plugin)5
- Docker support4
- Pipeline API4
- Platform idnependency3
- Excellent docker integration3
- Fast builds3
- Hosted Externally3
- Customizable2
- AWS Integration2
- It's Everywhere2
- JOBDSL2
- Can be run as a Docker container2
- It`w worked2
- Easily extendable with seamless integration1
- Build PR Branch Only1
- NodeJS Support1
- PHP Support1
- Ruby/Rails Support1
- Universal controller1
- Loose Coupling1
- Workarounds needed for basic requirements12
- Groovy with cumbersome syntax9
- Plugins compatibility issues7
- Lack of support6
- Limited abilities with declarative pipelines6
- No YAML syntax4
- Too tied to plugins versions3
related Jenkins posts
















Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).
It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up
or vagrant reload
we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.
I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up
, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.
We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.
If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.
The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).
Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common Docker and CircleCI setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and LXC. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for Amazon EC2 (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.
Releasing new versions of our services is done by Travis CI. Travis first runs our test suite. Once it passes, it publishes a new release binary to GitHub.
Common tasks such as installing dependencies for the Go project, or building a binary are automated using plain old Makefiles. (We know, crazy old school, right?) Our binaries are compressed using UPX.
Travis has come a long way over the past years. I used to prefer Jenkins in some cases since it was easier to debug broken builds. With the addition of the aptly named “debug build” button, Travis is now the clear winner. It’s easy to use and free for open source, with no need to maintain anything.
#ContinuousIntegration #CodeCollaborationVersionControl
- Easy to get started4
- Unlimited CI/CD minutes3
- Built by Microsoft3
- Yaml support2
- Docker support2
related Azure Pipelines posts
We recently added new APIs to Jira to associate information about Builds and Deployments to Jira issues.
The new APIs were developed using a spec-first API approach for speed and sanity. The details of this approach are described in this blog post, and we relied on using Swagger and associated tools like Swagger UI.
A new service was created for managing the data. It provides a REST API for external use, and an internal API based on GraphQL. The service is built using Kotlin for increased developer productivity and happiness, and the Spring-Boot framework. PostgreSQL was chosen for the persistence layer, as we have non-trivial requirements that cannot be easily implemented on top of a key-value store.
The front-end has been built using React and querying the back-end service using an internal GraphQL API. We have plans of providing a public GraphQL API in the future.
New Jira Integrations: Bitbucket CircleCI AWS CodePipeline Octopus Deploy jFrog Azure Pipelines
We are currently using Azure Pipelines for continous integration. Our applications are developed witn .NET framework. But when we look at the online Jenkins is the most widely used tool for continous integration. Can you please give me the advice which one is best to use for my case Azure pipeline or jenkins.
- Robust CI with awesome Docker support22
- Simple configuration12
- All in one solution8
- Source Control and CI in one place6
- Easy to configure own build server i.e. GitLab-Runner5
- Integrated with VCS on commit5
- Free and open source4
- Hosted internally2
- Pipeline could be started manually1
- Built-in support of Review Apps1
- Enable or disable pipeline by using env variables1
- Gitlab templates could be shared across logical group1
- Easy to setup the dedicated runner to particular job1
- Built-in Docker Registry1
- Built-in support of Kubernetes1
- Works best with GitLab repositories2
related GitLab CI posts
We use GitLab CI because of the great native integration as a part of the GitLab framework and the linting-capabilities it offers. The visualization of complex pipelines and the embedding within the project overview made Gitlab CI even more convenient. We use it for all projects, all deployments and as a part of GitLab Pages.
While we initially used the Shell-executor, we quickly switched to the Docker-executor and use it exclusively now.
We formerly used Jenkins but preferred to handle everything within GitLab . Aside from the unification of our infrastructure another motivation was the "configuration-in-file"-approach, that Gitlab CI offered, while Jenkins support of this concept was very limited and users had to resort to using the webinterface. Since the file is included within the repository, it is also version controlled, which was a huge plus for us.
We are using GitLab CI and were very happy with it. The integration of all tools like CI/CD, tickets, etc makes it very easy to stay on top of things. But be aware, Gitlab currently does not have iOS build support. So if you want to exchange that for CircleCI / Codeship to have to invest some effort. We are using a managed Mac OS device and installed the Gitlab runner there, to have iOS builds.
- Self hosted497
- Free423
- Has community edition335
- Easy setup239
- Familiar interface238
- Includes many features, including ci131
- Nice UI108
- Good integration with gitlabci81
- Simple setup54
- Has an official mobile app33
- Free private repository32
- Continuous Integration29
- Open source, great ui (like github)19
- Slack Integration15
- Full CI flow11
- Free and unlimited private git repos10
- User, group, and project access management is simple8
- Built-in CI7
- Intuitive UI7
- All in one (Git, CI, Agile..)7
- Both public and private Repositories4
- Integrated Docker Registry3
- Mattermost Chat client3
- Issue system3
- One-click install through DigitalOcean2
- Dockerized2
- Because is the best remote host for git repositories2
- Full DevOps suite with Git2
- Free private repos2
- Great for team collaboration2
- Unlimited free repos & collaborators2
- It's fully integrated2
- I like the its runners and executors feature2
- CI2
- So easy to use2
- It's powerful source code management tool2
- Excellent2
- Build/pipeline definition alongside code2
- Security and Stable2
- Low maintenance cost due omnibus-deployment2
- On-premises2
- Multilingual interface1
- Kubernetes integration with GitLab CI1
- Review Apps feature1
- Powerful software planning and maintaining tools1
- Groups of groups1
- Built-in Docker Registry1
- Beautiful1
- Wounderful1
- Opensource1
- Not Microsoft Owned1
- Many private repo1
- Published IP list for whitelisting (gl-infra#434)1
- The dashboard with deployed environments1
- HipChat intergration1
- Kubernetes Integration1
- Native CI1
- Powerful Continuous Integration System1
- It includes everything I need, all packaged with docker1
- Supports Radius/Ldap & Browser Code Edits0
- Slow ui performance27
- Introduce breaking bugs every release7
- Insecure (no published IP list for whitelisting)5
- Built-in Docker Registry1
- Review Apps feature0
related GitLab posts
I have mixed feelings on GitHub as a product and our use of it for the Zulip open source project. On the one hand, I do feel that being on GitHub helps people discover Zulip, because we have enough stars (etc.) that we rank highly among projects on the platform. and there is a definite benefit for lowering barriers to contribution (which is important to us) that GitHub has such a dominant position in terms of what everyone has accounts with.
But even ignoring how one might feel about their new corporate owner (MicroSoft), in a lot of ways GitHub is a bad product for open source projects. Years after the "Dear GitHub" letter, there are still basic gaps in its issue tracker:
- You can't give someone permission to label/categorize issues without full write access to a project (including ability to merge things to master, post releases, etc.).
- You can't let anyone with a GitHub account self-assign issues to themselves.
- Many more similar issues.
It's embarrassing, because I've talked to GitHub product managers at various open source events about these things for 3 years, and they always agree the thing is important, but then nothing ever improves in the Issues product. Maybe the new management at MicroSoft will fix their product management situation, but if not, I imagine we'll eventually do the migration to GitLab.
We have a custom bot project, http://github.com/zulip/zulipbot, to deal with some of these issues where possible, and every other large project we talk to does the same thing, more or less.
We use GitLab CI because of the great native integration as a part of the GitLab framework and the linting-capabilities it offers. The visualization of complex pipelines and the embedding within the project overview made Gitlab CI even more convenient. We use it for all projects, all deployments and as a part of GitLab Pages.
While we initially used the Shell-executor, we quickly switched to the Docker-executor and use it exclusively now.
We formerly used Jenkins but preferred to handle everything within GitLab . Aside from the unification of our infrastructure another motivation was the "configuration-in-file"-approach, that Gitlab CI offered, while Jenkins support of this concept was very limited and users had to resort to using the webinterface. Since the file is included within the repository, it is also version controlled, which was a huge plus for us.
- Great customer support18
- Github integration17
- Easy to use16
- Easy setup16
- Simplicity12
- Simple deployments10
- Simple and powerful configuration9
- Bitbucket integration4
- Github enterprise integration3
- Amazing swag3
- Integrates with everything2
- Sourcecode is hosted by source code owner.1
- Configuration in cloud1
- Run your own test containers with their AWS stack file1
- Superior user experience1
- Great ui1
related Buildkite posts
- Great for collaboration716
- Easy to use627
- Free572
- Fast375
- Realtime347
- Intuitive237
- Visualizing215
- Flexible169
- Fun user interface126
- Snappy and blazing fast83
- Simple, intuitive UI that gets out of your way30
- Kanban27
- Clean Interface21
- Easy setup18
- Card Structure18
- Drag and drop attachments17
- Simple11
- Markdown commentary on cards10
- Lists9
- Integration with other work collaborative apps9
- Satisfying User Experience8
- Cross-Platform Integration8
- Recognizes GitHub commit links7
- Easy to learn6
- Great5
- Versatile Team & Project Management4
- Better than email4
- Effective3
- Trello’s Developmental Transparency3
- and lots of integrations3
- Powerful2
- Easy to have an overview of the project status2
- flexible and fast2
- Simple and intuitive2
- Easy2
- Agile2
- Email integration1
- Nice1
- Bad1
- Name rolls of the tongue1
- Great organizing (of events/tasks)1
- Kanban style1
- Ytyt1
- Personal organisation1
- Customizable1
- Easiest way to visually express the scope of projects0
- No concept of velocity or points5
- Very light native integrations4
- A little too flexible2
related Trello posts
So I am a huge fan of JIRA like #massive I used it for many many years, and really loved it, used it personally and at work. I would suggest every new workplace that I worked at to switch to JIRA instead of what I was using.
When I started at #StackShare we were using a Trello #Kanban board and I was so shocked at how easy the workflow was to follow, create new tasks and get tasks QA'd and deployed. What was so great about this was it didn't come with all the complexity of JIRA. Like setting up a project, user rules etc. You are able to hit the ground running with Trello and get tasks started right away without being overwhelmed with the complexity of options in JIRA
With a few TrelloPowerUps we were easily able to add GitHub integration and storyPoints to our cards and thats all we needed to get a really nice agile workflow going.
I'm not saying that JIRA is not useful, I can see larger companies being able to use the JIRA features and have the time to go through all the complex setup to get a really good workflow going. But for smaller #Startups that want to hit the ground running Trello for me is the way to go.
In saying that what I would love Trello to implement is to allow me to create custom fields. Right now we just have a Description
field. So I am adding User Stories
& How To Test
in the Markdown of the Description
if I could have these as custom fields then my #Agile workflow would be complete.
#StackDecisionsLaunch
For Etom, a side project. We wanted to test an idea for a future and bigger project.
What Etom does is searching places. Right now, it leverages the Google Maps API. For that, we found a React component that makes this integration easy because using Google Maps API is not possible via normal API requests.
You kind of need a map to work as a proxy between the software and Google Maps API.
We hate configuration(coming from Rails world) so also decided to use Create React App because setting up a React app, with all the toys, it's a hard job.
Thanks to all the people behind Create React App it's easier to start any React application.
We also chose a module called Reactstrap which is Bootstrap UI in React components.
An important thing in this side project(and in the bigger project plan) is to measure visitor through out the app. For that we researched and found that Keen was a good choice(very good free tier limits) and also it is very simple to setup and real simple to send data to
Slack and Trello are our defaults tools to comunicate ideas and discuss topics, so, no brainer using them as well for this project.
- Wiki search power93
- WYSIWYG editor61
- Full featured, works well with embedded docs41
- Expensive licenses2
- Expensive license3
related Confluence posts
We knew how we wanted to build our Design System, now it was time to choose the tools to get us there. The essence of Scrum is a small team of people. The team is highly flexible and adaptive. Perfect, so we'll work in 2 week sprints where each sprint can be a mix of new R&D stories, a presentation of decisions made, and showcasing key development milestones.
We are also able to run content stories in parallel, focusing development efforts around key areas of the site that our authors need first. Our stories would exist in a Jira backlog, documentation would be hosted in Confluence , and GitHub would host our codebase. If developers identify technical improvements during the sprint, they can be added as GitHub issues and transferred to Jira if we decide to represent them as stories for the Backlog. For Sprint Retrospectives, @groupmap proved to be a great way to include our remote members of the dev team.
This worked well for our team and allowed us to be flexible in what we wanted to build and how we wanted to build it. As we further defined our Backlog and estimated each story, we could accurately measure the team's capacity (velocity) and confidently estimate a launch date.
As a new company we could early adopt and bet on #RemoteTeam setup without cultural baggage derailing us. Our building blocks for developing remote working culture are:
- Hiring people who are self sufficient, self-disciplined and excel at video and written communication to work remotely
- Set up periodic ceremonies ( #DailyStandup, #Grooming, Release calls and chats etc) to keep the company rhythm / heartbeat going across remote cells
- Regularly train your leaders to take into account remote working aspects of organizing f2f calls, events, meetups, parties etc. when communicating and organizing workflows
- And last, but not least - select the right tools to support effective communication and collaboration:
- All feeds and conversations come together in Slack
- #Agile workflows in Jira
- InProductCommunication and #CustomerSupportChat in Intercom
- #Notes, #Documentation and #Requirements in Confluence
- #SourceCode and ContinuousDelivery in Bitbucket
- Persistent video streams between locations, demos, meetings run on appear.in
- #Logging and Alerts in Papertrail