Skip to content
generated from gogolcorp/go-yave

🦤 | Go-éland is my personnal Ubuntu configuration setup assistant, including applications/packages/formulaes installation, dotfiles/aliases sync, ,zsh framework, VSCode settings, CLIs, [...], and more !

License

Notifications You must be signed in to change notification settings

gogolcorp/go-eland

Repository files navigation




I - Introduction

goeland

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 file.

II - Table of content

II - Features

A - Apt packages

Install packages

Update packages

  • update and upgrade apt packages

B - Bash dotfiles

Synchronize files

Write imports

  • write the files importation in the .zshrc or .bashrc file

C - Zsh overlay

Oh My Zsh

Prompt

D - Snap packages

  • install snap packages from config.sh
  • refresh existing snap packages

E - CLIs

  • install CLIs from config.sh as Docker, Kubectl, Terraform,

Update packages

  • update and upgrade apt packages

V - CI/CD, release and container registry

A - CI

CI

The CI workflow is located at .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

The CD workflow is located at .github/workflows/cd.docker.yml. It's triggered a each push on main branch, scoping Golang files.

It consist of:

After that, you can check the pushed container at: https://github.com/<username>?tab=packages&repo_name=<repository-name>

IMPORTANT: you need to update the production Dockerfile with your username AND repository name. Otherwise, there will be errors at push:

LABEL org.opencontainers.image.source = "https://github.com/<username>/<repository-name>"

C - Labeler

LABELER

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

CONTAINER PORT IMAGE
GOLANG 3333:3333 build/pakage/sample-api/Dockerfile
ADMINER 3334:8080 build/package/adminer/Dockerfile
POSTGRES 5432:5432 postgres:latest

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

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 for more informations.

VIII - License

Under MIT license.

About

🦤 | Go-éland is my personnal Ubuntu configuration setup assistant, including applications/packages/formulaes installation, dotfiles/aliases sync, ,zsh framework, VSCode settings, CLIs, [...], and more !

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published