Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mritd/autobuild

Earthly Auto Build Repo
https://github.com/mritd/autobuild

autobuild docker dockerfile earthfile earthly

Last synced: 23 days ago
JSON representation

Earthly Auto Build Repo

Awesome Lists containing this project

README

        

# Earthly Auto Build Repo

> This repo contains the Earthfile of some useful images under the Docker Hub [`mritd`](https://hub.docker.com/u/mritd) user.

| Status | Docker Hub |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [![mritd/alpine](https://github.com/mritd/autobuild/actions/workflows/alpine.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/alpine.yaml) | [https://hub.docker.com/r/mritd/alpine](https://hub.docker.com/r/mritd/alpine) |
| [![mritd/caddy](https://github.com/mritd/autobuild/actions/workflows/caddy.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/caddy.yaml) | [https://hub.docker.com/r/mritd/caddy](https://hub.docker.com/r/mritd/caddy) |
| [![mritd/confluence](https://github.com/mritd/autobuild/actions/workflows/confluence.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/confluence.yaml) | [https://hub.docker.com/r/mritd/confluence](https://hub.docker.com/r/mritd/confluence) |
| [![mritd/ddns](https://github.com/mritd/autobuild/actions/workflows/ddns.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/ddns.yaml) | [https://hub.docker.com/r/mritd/ddns](https://hub.docker.com/r/mritd/ddns) |
| [![mritd/demo](https://github.com/mritd/autobuild/actions/workflows/demo.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/demo.yaml) | [https://hub.docker.com/r/mritd/demo](https://hub.docker.com/r/mritd/demo) |
| [![mritd/derper](https://github.com/mritd/autobuild/actions/workflows/derper.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/derper.yaml) | [https://hub.docker.com/r/mritd/derper](https://hub.docker.com/r/mritd/derper) |
| [![mritd/idgen](https://github.com/mritd/autobuild/actions/workflows/idgen.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/idgen.yaml) | [https://hub.docker.com/r/mritd/idgen](https://hub.docker.com/r/mritd/idgen) |
| [![mritd/jira](https://github.com/mritd/autobuild/actions/workflows/jira.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/jira.yaml) | [https://hub.docker.com/r/mritd/jira](https://hub.docker.com/r/mritd/jira) |
| [![mritd/nginx-singlepage](https://github.com/mritd/autobuild/actions/workflows/nginx-singlepage.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/nginx-singlepage.yaml) | [https://hub.docker.com/r/mritd/nginx-singlepage](https://hub.docker.com/r/mritd/nginx-singlepage) |
| [![mritd/nodebuild](https://github.com/mritd/autobuild/actions/workflows/nodebuild.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/nodebuild.yaml) | [https://hub.docker.com/r/mritd/nodebuild](https://hub.docker.com/r/mritd/nodebuild) |
| [![mritd/openjdk](https://github.com/mritd/autobuild/actions/workflows/openjdk.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/openjdk.yaml) | [https://hub.docker.com/r/mritd/openjdk8](https://hub.docker.com/r/mritd/openjdk8) |
| [![mritd/poetbot](https://github.com/mritd/autobuild/actions/workflows/poetbot.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/poetbot.yaml) | [https://hub.docker.com/r/mritd/poetbot](https://hub.docker.com/r/mritd/poetbot) |
| [![mritd/s2h](https://github.com/mritd/autobuild/actions/workflows/s2h.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/s2h.yaml) | [https://hub.docker.com/r/mritd/s2h](https://hub.docker.com/r/mritd/s2h) |
| [![mritd/ssh](https://github.com/mritd/autobuild/actions/workflows/ssh.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/ssh.yaml) | [https://hub.docker.com/r/mritd/ssh](https://hub.docker.com/r/mritd/ssh) |
| [![mritd/derper](https://github.com/mritd/autobuild/actions/workflows/derper.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/derper.yaml) | [https://hub.docker.com/r/mritd/derper](https://hub.docker.com/r/mritd/derper) |
| [![mritd/bandwagonmon](https://github.com/mritd/autobuild/actions/workflows/bandwagonmon.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/bandwagonmon.yaml) | [https://hub.docker.com/r/mritd/bandwagonmon](https://hub.docker.com/r/mritd/bandwagonmon) |
| [![mritd/notibot](https://github.com/mritd/autobuild/actions/workflows/notibot.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/notibot.yaml) | [https://hub.docker.com/r/mritd/notibot](https://hub.docker.com/r/mritd/notibot) |
| [![mritd/open-vm-tools](https://github.com/mritd/autobuild/actions/workflows/open-vm-tools.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/open-vm-tools.yaml) | [https://hub.docker.com/r/mritd/open-vm-tools](https://hub.docker.com/r/mritd/open-vm-tools) |
| [![mritd/container-cli](https://github.com/mritd/autobuild/actions/workflows/container-cli.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/container-cli.yaml) | [https://hub.docker.com/r/mritd/container-cli](https://hub.docker.com/r/mritd/container-cli) |
| [![mritd/dnsacme](https://github.com/mritd/autobuild/actions/workflows/dnsacme.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/dnsacme.yaml) | [https://hub.docker.com/r/mritd/dnsacme](https://hub.docker.com/r/mritd/dnsacme) |
| [![mritd/aria2](https://github.com/mritd/autobuild/actions/workflows/aria2.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/aria2.yaml) | [https://hub.docker.com/r/mritd/aria2](https://hub.docker.com/r/mritd/aria2) |
| [![mritd/makeself](https://github.com/mritd/autobuild/actions/workflows/makeself.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/makeself.yaml) | [https://hub.docker.com/r/mritd/makeself](https://hub.docker.com/r/mritd/makeself) |
| [![mritd/tuic-server](https://github.com/mritd/autobuild/actions/workflows/tuic-server.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/tuic-server.yaml) | [https://hub.docker.com/r/mritd/tuic-server](https://hub.docker.com/r/mritd/tuic-server) |
| [![mritd/snell](https://github.com/mritd/autobuild/actions/workflows/snell.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/snell.yaml) | [https://hub.docker.com/r/mritd/snell](https://hub.docker.com/r/mritd/snell) |
| [![mritd/ci-runner](https://github.com/mritd/autobuild/actions/workflows/ci-runner.yaml/badge.svg)](https://github.com/mritd/autobuild/actions/workflows/ci-runner.yaml) | [https://hub.docker.com/r/mritd/ci-runner](https://hub.docker.com/r/mritd/ci-runner) |

## Why not use Dockerfile?

In the past few years, I have to admit that Dockerfile is great; but as the number of Dockerfile increases, I have to do a lot of repetitive work to solve some problems.

For example, "unify the basic image version"、"fix compatibility issues for specific languages"、"cross compile for each platform", etc...

Well, I can write some "magic scripts" to be lazy; but this will cause the production-level Docker image to become unmaintainable, just like a messy network cable...

Now, Earthly has solved this problem; I unified the specific language version、the operating system at compile time、the basic runtime environment、and some general fixes. Also use GitHub Action for reliable cross-compilation to generate multi-arch images. It all got better 🤪.

## Directory Structure

```sh
.
├── caddy # The directory name is the target image
│   └── Earthfile
├── openjdk
│   ├── cgradle # If the build image needs some other files, they will also be saved in this directory
│   ├── cmvn
│   └── Earthfile # Earthfile is a file similar to Dockerfile, it is modular, it is very convenient to reuse code


├── udcs # udcs (user-defined commands) is a special directory where most common Earthfiles are stored
│ ├── Earthfile # udcs/Earthfile stores general commands that do not depend on system os and language
│ ├── image # udcs/image stores the basic runtime or compile image of most programming languages
│ ├── language # udcs/language stores special commands for specific languages
│ └── os # udcs/os stores special commands for specific system os


├── .github
│   └── workflows # The workflows directory stores job definitions for each docker image automated build
│   ├── alpine.yaml
│   ├── caddy.yaml
│   ├── confluence.yaml
│   ├── ddns.yaml
│   ├── demo.yaml
│   ├── idgen.yaml
│   ├── jira.yaml
│   ├── nginx-singlepage.yaml
│   ├── nodebuild.yaml
│   ├── openjdk.yaml
│   ├── poetbot.yaml
│   ├── s2h.yaml
│   └── ssh.yaml
└── LICENSE
```