All Projects → athena-oss → Athena

athena-oss / Athena

Licence: apache-2.0
An automation platform with a plugin architecture that allows you to easily create and share services.

Programming Languages

shell
77523 projects
bash
514 projects

Projects that are alternatives of or similar to Athena

Terraform
Terraform - Beginners | Intermediate | Advanced
Stars: ✭ 77 (-8.33%)
Mutual labels:  automation
Spam Bot 3000
Social media research and promotion, semi-autonomous CLI bot
Stars: ✭ 79 (-5.95%)
Mutual labels:  automation
Google It Automation
google it automation with python professional certificate
Stars: ✭ 81 (-3.57%)
Mutual labels:  automation
Epv Api Scripts
These API scripts enable CyberArk users to automate privileged account management task like account creation, user management, and more.
Stars: ✭ 77 (-8.33%)
Mutual labels:  automation
Sayn
Data processing and modelling framework for automating tasks (incl. Python & SQL transformations).
Stars: ✭ 79 (-5.95%)
Mutual labels:  automation
Slacky
🐍 The BEST Slack Selfbot on GitHub | No Bot User, Acts Like It's You! ⭐️
Stars: ✭ 80 (-4.76%)
Mutual labels:  automation
Ps4remoteplayinterceptor
A small .NET library to intercept and inject controls on PS4 Remote Play for Windows
Stars: ✭ 76 (-9.52%)
Mutual labels:  automation
Ritchie Formulas
This repository contains the community formulas that can be executed through Ritchie CLI once imported. This tool is an open source product that allows you to create, store and share any kind of automations, executing them through command lines, to run operations or start workflows ⚙️ 🖥 💡
Stars: ✭ 84 (+0%)
Mutual labels:  automation
Kafkawize
Kafkawize : A Self service Apache Kafka Topic Management tool/portal. A Web application which automates the process of creating and browsing Kafka topics, acls, schemas by introducing roles/authorizations to users of various teams of an org.
Stars: ✭ 79 (-5.95%)
Mutual labels:  automation
Aws Automation
AWS automation scripts and lambda functions
Stars: ✭ 81 (-3.57%)
Mutual labels:  automation
Gatus
⛑ Gatus - Automated service health dashboard
Stars: ✭ 1,203 (+1332.14%)
Mutual labels:  automation
Azure
Azure-related repository
Stars: ✭ 78 (-7.14%)
Mutual labels:  automation
Rocket.chat.ansible
Deploy Rocket.Chat with Ansible!
Stars: ✭ 80 (-4.76%)
Mutual labels:  automation
Xrautomatedtests
XRAutomatedTests is where you can find functional, graphics, performance, and other types of automated tests for your XR Unity development.
Stars: ✭ 77 (-8.33%)
Mutual labels:  automation
Cavy
An integration test framework for React Native.
Stars: ✭ 1,239 (+1375%)
Mutual labels:  automation
Chaostoolkit
Chaos Engineering Experiments Automation & Orchestration
Stars: ✭ 1,204 (+1333.33%)
Mutual labels:  automation
F5 Automation Labs
F5 Super-NetOps Programmability, Automation and DevOps Training Classes
Stars: ✭ 79 (-5.95%)
Mutual labels:  automation
Project
⭐️ Antares Project Application Skeleton. This is the very first place you should start. It allows you to create a brand new awesome project in easy few steps.
Stars: ✭ 84 (+0%)
Mutual labels:  automation
Labelme
automatic tagging data, the training data prepare for mask-rcnn
Stars: ✭ 83 (-1.19%)
Mutual labels:  automation
Openbsd Cookbooks
Setup environment in OpenBSD using Ansible playbook
Stars: ✭ 80 (-4.76%)
Mutual labels:  automation

image

Build Status Join the chat at https://gitter.im/athena-oss/Lobby

Automate, Automate, Automate!

The key to optimize work is to automate as much as possible. Whether you are developing software, setting up infrastructure or even testing, if there is a chance to do it just take it.

Most of the times the boring and frequent tasks can be automated. There are a lot of different tools and technologies that can help you with that, but sometimes starting is simply an hassle by itself and one might end up giving up and doing it "manually".

This is where Athena jumps in. The idea is quite simple, we minimize the start process by :

  • automating the wiring of the dependencies and tools
  • implement a plugin architecture to allow freedom and scalability
  • throw in a wizard that takes care of the boring stuff

Once that part is done, you can reuse it as much as you can and you can even share with other people or teams.

Seems cool, right?

Well, it might also seem too easy or too abstract so let's dig into it.

How does it work?

Athena aims to be of simple usage and architecture and consists of 2 pillars:

  • the Engine: a declarative framework based in bash ( say that again ??? Don't run away yet because it has proper unit tests. To know more about it, have a look at the bashUnit Testing Framework for bash. It has all of the common features an xUnit Framework gives, including Mocking.)

  • the Plugins: they are typically Services, Applications, Jobs, etc. They can use any technology or any stack of technologies and they form the ecosystem that helps you handle different scenarios. To support the automation environments, the virtualisation technology used is docker.

As an example, you can use Athena to setup a webserver, test your website and handle the deployment. This example could be achieved by creating 3 plugins: webserver, test and deploy or you could simply create just one : app.

Hopefully the ecosystem will continue to grow and become big enough so that most of the scenarios will be already handled and you can use an existing plugin, build your own from scratch or even base yours on another one.

Why did we choose bash?

We wanted to make it simple and having the minimum dependencies possible. Using bash became a natural choice because that's where you usually start when you automate with scripts.

bash already has support for a lot of stuff, but the issue is that is not very declarative or at least does not have a very developer-like syntax, and this is why Athena was born. A simple, declarative and developer-friendly framework with testing support.

Why should you use it?

Besides having a very straightforward and simple architecture, which makes it easy to debug, it provides you built-in support for solving the following topics :

  • Version validation
  • Error handling
  • Proper display of messages
  • Stacktrace
  • Testing
  • Routing
  • Support for Multiple and configurable environments
  • Hooks
  • Standardized way of building stuff
  • etc...

With this already taken care of you will only need to focus on your specific problem.

Table of contents

Quick start

Prerequisites

  • You have a bash shell.
  • You have Git installed.
  • You have Docker installed.

There are three quick start options available:

On Linux

  • Using a debian package from the releases :
$ sudo dpkg -i <downloaded_debian_package>
  • Using apt-get :
$ sudo add-apt-repository ppa:athena-oss/athena
$ sudo apt-get update
$ sudo apt-get install athena

On MAC OSX

$ brew tap athena-oss/tap
$ brew install athena

Note: You might be required to allow Docker to access folders managed by Homebrew. In order to do this, go to Docker Preferences > File Sharing and add the folder /usr/local/Cellar.

Alternative

Go to the Documentation Website or download the Documentation PDF to find out more about using Athena.

Examples

We have several examples here. Check these two Athena commands, so that you can have an idea how it looks like :

running a file/directory validator

CMD_DESCRIPTION="Validates a file or directory for possible issues."

athena.usage 1 "<file|directory>"

if athena.plugins.base.check "$(athena.path 1)" ; then
  athena.ok "check passed"
  athena.exit 0
fi
athena.fatal "check failed"

running a php webserver

CMD_DESCRIPTION="Starts the webserver."

athena.usage 2 "<source_directory> <port>"

# arguments are found below
source_directory="$(athena.path 1)"
port="$(athena.int 2)"

# clearing arguments from the stack
athena.pop_args 2

# options for container are found below
athena.plugin.use_external_container_as_daemon "php:7.0-apache"

# mounts the specified dir into the container
athena.docker.mount_dir "$source_directory" "/var/www/html"

# maps the specified host port to the port 80 of the container
athena.docker.add_option "-p $port:80"

Plugins

Here is a list of some of the available plugins :

  • PHP Plugin - Plugin for Test Automation using PHP as a development language.
  • Selenium Plugin - Plugin to handle browser automation using Selenium.
  • Proxy Plugin - Plugin to handle a proxy server using Browsermob-proxy.
  • Appium Plugin - Plugin to handle mobile automation using Appium.
  • AVD Plugin - Plugin to manage Android Virtual Devices.
  • Gradle Plugin - Plugin for running gradle tasks.

Contributing

Checkout our guidelines on how to contribute in CONTRIBUTING.md.

Versioning

Releases are managed using github's release feature. We use Semantic Versioning for all the releases. Every change made to the code base will be referred to in the release notes (except for cleanups and refactorings).

License

Licensed under the Apache License Version 2.0 (APLv2).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].