Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gogolcorp/go-eland
🦤 | Go-éland is my personnal Ubuntu configuration setup assistant, including applications/packages/formulaes installation, dotfiles/aliases sync, ,zsh framework, VSCode settings, CLIs, [...], and more !
https://github.com/gogolcorp/go-eland
dotfiles dotfiles-installer dotfiles-manager setuptools ubuntu
Last synced: 14 days ago
JSON representation
🦤 | Go-éland is my personnal Ubuntu configuration setup assistant, including applications/packages/formulaes installation, dotfiles/aliases sync, ,zsh framework, VSCode settings, CLIs, [...], and more !
- Host: GitHub
- URL: https://github.com/gogolcorp/go-eland
- Owner: gogolcorp
- License: mit
- Created: 2021-10-11T14:06:51.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-22T16:41:22.000Z (over 1 year ago)
- Last Synced: 2024-06-21T14:11:06.175Z (5 months ago)
- Topics: dotfiles, dotfiles-installer, dotfiles-manager, setuptools, ubuntu
- Language: Shell
- Homepage:
- Size: 13.3 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## I - Introduction
![goeland](./assets/images/goeland.gif)
**Go-éland** is my *customizable system configuration wizard* made for **Ubuntu**.
Providing a **CLI**, it's written in `Golang` for the *UX/UI part*, and in `Bash` for all *executable content*.
Its operation is as follows:
Each task has **several actions**, each action **calls a `bash` file** that will be executed, and the logs will be sent back to the `Golang CLI`
There are many *packages, applications and others* that are optionally installable. all these resources are **centralized** in a **[config.sh](config/config.sh)** file.
## II - Table of content
- [I - Introduction](#i---introduction)
- [II - Table of content](#ii---table-of-content)
- [II - Features](#ii---features)
- [A - Apt packages](#a---apt-packages)
- [B - Bash dotfiles](#b---bash-dotfiles)
- [C - Zsh overlay](#c---zsh-overlay)
- [D - Snap packages](#d---snap-packages)
- [E - CLIs](#e---clis)
- [V - CI/CD, release and container registry](#v---cicd-release-and-container-registry)
- [A - CI](#a---ci)
- [B - CD](#b---cd)
- [C - Labeler](#c---labeler)
- [VI - Project setup](#vi---project-setup)
- [A - Stack](#a---stack)
- [B - Makefile](#b---makefile)
- [VII - Contributing](#vii---contributing)
- [VIII - License](#viii---license)## II - Features
### A - Apt packages
#### Install packages
- install `apt` packages from [config.sh](config/config.sh)
#### Update packages
- update and upgrade `apt` packages
### B - Bash dotfiles
#### Synchronize files
- copy [aliases](config/files/aliases.sh) and [functions](config/files/functions.sh) from this repo to the Ubuntu
#### Write imports
- write the files importation in the `.zshrc` or `.bashrc` file
### C - Zsh overlay
#### Oh My Zsh
- install [`oh-my-zsh`]( ohmyzsh/ohmyzsh/) framework
- install [`oh-my-zsh`](https://github.com/ohmyzsh/ohmyzsh/) plugins from [config.sh](config/config.sh)#### Prompt
- install [Starship](https://github.com/starship/starship) prompt
- synchronize [custom configuration](config/files/starship.toml)### D - Snap packages
- install `snap` packages from [config.sh](config/config.sh)
- refresh existing `snap` packages### E - CLIs
- install `CLIs` from [config.sh](config/config.sh) as `Docker`, `Kubectl`, `Terraform`,
#### Update packages
- update and upgrade `apt` packages
## V - CI/CD, release and container registry
### A - CI
[![CI](https://github.com/gogolcorp/go-eland/actions/workflows/ci.yml/badge.svg)](https://github.com/gogolcorp/go-eland/actions/workflows/ci.yml)
The **CI** workflow is located at [.github/workflows/ci.yml](.github/workflows/ci.yml). It's triggered a **each push** on **all branches**, scoping `Golang files`.
It consist of:
- **install Golang** on the VM
- get the dependancies **using the cache of other Actions run**
- **lint the files** to check or syntax errors
- **build** the application### B - CD
[![CD](https://github.com/gogolcorp/go-eland/actions/workflows/cd.yml/badge.svg)](https://github.com/gogolcorp/go-eland/actions/workflows/cd.yml)
The **CD** workflow is located at [.github/workflows/cd.docker.yml](.github/workflows/cd.docker.yml). It's triggered a **each push** on **`main` branch**, scoping `Golang files`.
It consist of:
- **login** into the GitHub container registry (ghcr.io)
- **build and push** the Golang api using the **production Dockerfile** located at [build/pakage/sample-api/Dockerfile](build/pakage/sample-api/Dockerfile)After that, you can check the **pushed container** at: `https://github.com/?tab=packages&repo_name=`
> IMPORTANT: you need to **update the production Dockerfile** with your **username** AND **_repository name_**. Otherwise, there will be errors at push:
```bash
LABEL org.opencontainers.image.source = "https://github.com//"
```### C - Labeler
[![LABELER](https://github.com/gogolcorp/go-eland/actions/workflows/labeler.yml/badge.svg)](https://github.com/gogolcorp/go-eland/actions/workflows/labeler.yml)
The **labeler** workflow consists in **assigning specific labels** on **pull requests** according to the files that have been modified in the **commits attached to this pull request**.
## VI - Project setup
The project use **Docker** and **Docker Compose** to build and run local and distant images in our workspace.
### A - Stack
All the images use the **same network**, more informations at [docker-compose.yml](docker-compose.yml)
| CONTAINER | PORT | IMAGE |
| :-------- | :---------- | :----------------------------------------------------------------------- |
| GOLANG | `3333:3333` | [build/pakage/sample-api/Dockerfile](build/pakage/sample-api/Dockerfile) |
| ADMINER | `3334:8080` | [build/package/adminer/Dockerfile](build/package/adminer/Dockerfile) |
| POSTGRES | `5432:5432` | [postgres:latest](https://hub.docker.com/_/postgres) |> Adminer is a GUI that allows us to **manage your database** by permetting to to **create, edit, delete** the different entities, tables, etc.
### B - Makefile
#### TL;DR
```bash
make setup-env start logs
```#### `make help`
**Display** informations about other commands.
#### `make setup-env`
**Copy** the sample environment files.
#### `make start`
Up the containers with **full cache reset** to avoid cache errors.
#### `make stop`
**Down** the containers.
#### `make logs`
**Display and follow** the logs.
#### `make lint`
**Lint** the Go files using `gofmt`.
## VII - Contributing
See [CONTRIBUTING.md](assets/docs/CONTRIBUTING.md) for more informations.
## VIII - License
Under [MIT](./LICENSE) license.