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.
- I - Introduction
- II - Table of content
- II - Features
- V - CI/CD, release and container registry
- VI - Project setup
- VII - Contributing
- VIII - License
- install
aptpackages from config.sh
- update and upgrade
aptpackages
- write the files importation in the
.zshrcor.bashrcfile
- install [
oh-my-zsh](https://github.com/configurationwith ohmyzsh/ohmyzsh/) framework - install
oh-my-zshplugins from config.sh
- install Starship prompt
- synchronize custom configuration
- install
snappackages from config.sh - refresh existing
snappackages
- install
CLIsfrom config.sh asDocker,Kubectl,Terraform,
- update and upgrade
aptpackages
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
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:
- 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
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>"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.
The project use Docker and Docker Compose to build and run local and distant images in our workspace.
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.
make setup-env start logsDisplay informations about other commands.
Copy the sample environment files.
Up the containers with full cache reset to avoid cache errors.
Down the containers.
Display and follow the logs.
Lint the Go files using gofmt.
See CONTRIBUTING.md for more informations.
Under MIT license.

