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
apt
packages from config.sh
- update and upgrade
apt
packages
- write the files importation in the
.zshrc
or.bashrc
file
- install [
oh-my-zsh
](https://github.com/configurationwith ohmyzsh/ohmyzsh/) framework - install
oh-my-zsh
plugins from config.sh
- install Starship prompt
- synchronize custom configuration
- install
snap
packages from config.sh - refresh existing
snap
packages
- install
CLIs
from config.sh asDocker
,Kubectl
,Terraform
,
- update and upgrade
apt
packages
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 logs
Display 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.