{"id":13416124,"url":"https://github.com/athena-oss/athena","last_synced_at":"2026-02-24T03:39:01.184Z","repository":{"id":38406932,"uuid":"67132941","full_name":"athena-oss/athena","owner":"athena-oss","description":"An automation platform with a plugin architecture that allows you to easily create and share services.","archived":false,"fork":false,"pushed_at":"2017-07-06T08:26:12.000Z","size":2920,"stargazers_count":91,"open_issues_count":9,"forks_count":25,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-07-31T21:55:16.855Z","etag":null,"topics":["athena","automation","bash","docker","plugin-architecture"],"latest_commit_sha":null,"homepage":"https://athena-oss.github.io/athena/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/athena-oss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-01T13:20:27.000Z","updated_at":"2024-05-23T10:25:52.000Z","dependencies_parsed_at":"2022-08-26T23:12:20.652Z","dependency_job_id":null,"html_url":"https://github.com/athena-oss/athena","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athena-oss%2Fathena","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athena-oss%2Fathena/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athena-oss%2Fathena/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athena-oss%2Fathena/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/athena-oss","download_url":"https://codeload.github.com/athena-oss/athena/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243663485,"owners_count":20327299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["athena","automation","bash","docker","plugin-architecture"],"created_at":"2024-07-30T21:00:54.563Z","updated_at":"2026-02-24T03:39:01.131Z","avatar_url":"https://github.com/athena-oss.png","language":"Shell","funding_links":[],"categories":["Container Operations"],"sub_categories":["Orchestration"],"readme":"# ![image](docs/img/athena_logo.png)\n[![Build Status](https://travis-ci.org/athena-oss/athena.svg?branch=master)](https://travis-ci.org/athena-oss/athena) [![Join the chat at https://gitter.im/athena-oss/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/athena-oss/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n*Automate, Automate, Automate!*\n\nThe 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.\n\nMost 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\"*.\n\nThis is where **Athena** jumps in. The idea is quite simple, we minimize the start process by :\n\n * automating the wiring of the dependencies and tools\n * implement a plugin architecture to allow freedom and scalability\n * throw in a wizard that takes care of the boring stuff\n\nOnce that part is done, you can reuse it as much as you can and you can even share with other people or teams.\n\nSeems cool, right?\n\nWell, it might also seem too easy or too abstract so let's dig into it.\n\n## How does it work?\n\n**Athena** aims to be of simple usage and architecture and consists of 2 pillars:\n\n * the `Engine`: a declarative framework based in `bash` ( *say that again ???* Don't run away yet because it has proper [unit tests](tests/). To know more about it, have a look at the [bashUnit](https://github.com/athena-oss/bashunit) Testing Framework for `bash`. It has all of the common features an xUnit Framework gives, including Mocking.)\n\n * 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](https://www.docker.com/).\n\n\nAs 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`.\n\nHopefully 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.\n\n## Why did we choose `bash`?\n\nWe 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.\n\n`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.\n\n## Why should you use it?\n\nBesides having a very straightforward and simple architecture, which makes it easy to debug, it provides you built-in support for solving the following topics :\n  * Version validation\n  * Error handling\n  * Proper display of messages\n  * Stacktrace\n  * Testing\n  * Routing\n  * Support for Multiple and configurable environments\n  * Hooks\n  * Standardized way of building stuff\n  * etc...\n\nWith this already taken care of you will only need to focus on your specific problem.\n\n## Table of contents\n\n* [Quick start](#quick-start)\n* [Examples](#examples)\n* [Contributing](#contributing)\n* [Versioning](#versioning)\n* [License](#license)\n\n\n## Quick start\n\nPrerequisites\n * You have a `bash` shell.\n * You have [Git](https://git-scm.com/) installed.\n * You have [Docker](https://www.docker.com/) installed.\n\nThere are three quick start options available:\n\n**On Linux**\n\n * Using a `debian package` from the [releases](https://github.com/athena-oss/athena/releases) :\n\n```bash\n$ sudo dpkg -i \u003cdownloaded_debian_package\u003e\n```\n\n* Using `apt-get` :\n\n```bash\n$ sudo add-apt-repository ppa:athena-oss/athena\n$ sudo apt-get update\n$ sudo apt-get install athena\n```\n\n**On MAC OSX**\n\n* Using [Homebrew](http://brew.sh/) :\n\n```bash\n$ brew tap athena-oss/tap\n$ brew install athena\n```\n\n**Note:** You might be required to allow Docker to access folders managed by Homebrew. In order to do this, go to Docker `Preferences \u003e File Sharing` and add the folder `/usr/local/Cellar`.\n\n**Alternative**\n\n* [Download the latest release](https://github.com/athena-oss/athena/releases/latest)\n* Clone the repo: `git clone https://github.com/athena-oss/athena.git`\n\nGo to the [Documentation Website](http://athena-oss.github.io/athena) or download the [Documentation PDF](https://github.com/athena-oss/athena/raw/gh-pages/documentation.pdf) to find out more about using Athena.\n\n## Examples\n\nWe have several examples [here](docs/examples). Check these two **Athena** commands, so that you can have an idea how it looks like :\n\n### running a file/directory validator\n```bash\nCMD_DESCRIPTION=\"Validates a file or directory for possible issues.\"\n\nathena.usage 1 \"\u003cfile|directory\u003e\"\n\nif athena.plugins.base.check \"$(athena.path 1)\" ; then\n  athena.ok \"check passed\"\n  athena.exit 0\nfi\nathena.fatal \"check failed\"\n```\n\n### running a php webserver\n```bash\nCMD_DESCRIPTION=\"Starts the webserver.\"\n\nathena.usage 2 \"\u003csource_directory\u003e \u003cport\u003e\"\n\n# arguments are found below\nsource_directory=\"$(athena.path 1)\"\nport=\"$(athena.int 2)\"\n\n# clearing arguments from the stack\nathena.pop_args 2\n\n# options for container are found below\nathena.plugin.use_external_container_as_daemon \"php:7.0-apache\"\n\n# mounts the specified dir into the container\nathena.docker.mount_dir \"$source_directory\" \"/var/www/html\"\n\n# maps the specified host port to the port 80 of the container\nathena.docker.add_option \"-p $port:80\"\n```\n\n## Plugins\n\nHere is a list of some of the available plugins :\n\n* [PHP Plugin](https://github.com/athena-oss/plugin-php) - Plugin for Test Automation using PHP as a development language.\n* [Selenium Plugin](https://github.com/athena-oss/plugin-selenium) - Plugin to handle browser automation using Selenium.\n* [Proxy Plugin](https://github.com/athena-oss/plugin-proxy) - Plugin to handle a proxy server using Browsermob-proxy.\n* [Appium Plugin](https://github.com/athena-oss/plugin-appium) - Plugin to handle mobile automation using Appium.\n* [AVD Plugin](https://github.com/athena-oss/plugin-avd) - Plugin to manage Android Virtual Devices.\n* [Gradle Plugin](https://github.com/athena-oss/plugin-gradle) - Plugin for running gradle tasks.\n\n## Contributing\n\nCheckout our guidelines on how to contribute in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Versioning\n\nReleases are managed using github's release feature. We use [Semantic Versioning](http://semver.org) for all\nthe releases. Every change made to the code base will be referred to in the release notes (except for\ncleanups and refactorings).\n\n## License\n\nLicensed under the [Apache License Version 2.0 (APLv2)](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathena-oss%2Fathena","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathena-oss%2Fathena","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathena-oss%2Fathena/lists"}