This repository creates preconfigured GitLab to download Your repos and run their CI/CD pipelines in EC2. ๐จ
Create your GitLab server only when you need it and destroy it afterwards using simple Terraform commands! ๐ฅ This will reduce your costs to minimum!
Use my init script and adapt them to your environment to quickly recreate a preconfigured GitLab for your own needs! Turn it on and off whenever your want. ๐
$ export AWS_ACCESS_KEY_ID=AK************IEVXQ
$ export AWS_SECRET_ACCESS_KEY=gbaIbK*********************iwN0dGfS
, or configure a default AWS profile
aws configure --profile default
AWS Access Key ID [None]: AK************IEVXQ
AWS Secret Access Key [None]: gbaIbK*********************iwN0dGfS
Default region name [None]: eu-central-1
Default output format [None]: json
-
Create preconfigured-gitlab-key certificate key to be able to login using ssh
-
Execute:
cd infrastructure-terra
terraform init
, and then:
terraform apply
, confirm with 'yes' and enjoy your newly created AWS EC2 GitLab server ;) The IP will be randomly generated and printed in the console output.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab should be available at http://<random-ip>/
- To destroy you EC2 instance execute:
terraform destroy
... and type: 'yes'.
Deploy your GitLab instance only when needed to reduce the costs and destroy it afterwards ;)
So far this server is only created and doesn't include any ready to go pipelines or repos.
Contact me if you need help at [email protected] .
-
use Amazon EC2 Spot Instances,
-
adhere to Spot Instances best practices,
-
automate with Kubernetes the deployment, management, and scaling of containers
-
setting up the infra / server
-
downloading gitlab or container hosted?
-
installation / first setup
-
unlocking gitlab for the first time (token?)
-
user creation (at least one for each: guest / dev / admin) with roles
-
gitlab master runners setup (one master and create at least one runner) (master - scheduling jobs, communicating and giving instr) (runner - execute jobs, takes cmds from master)
-
configure global security for runners
-
build pipelines (at least one for each project)
-
schedule some nightly / periodic builds
-
configure build triggers on git push (webhook and poll scm)
-
delegate user database or include LDAP
-
configure:
-
set system message
-
set # executors
-
email notifications (use plugin extended e-mail notification)
-
configure smtp (gmail? / docker mailserver)
-
html reports after tests
-
add .gitlab-ci.yml to each project
-
pipelines to build docker image from Dockerfile and upload to Dockerhub
-
multibranch jobs ?? like in jenkins?
-
deploy with AWS marketplace image? and then edit /etc/gitlab/gitlab.rb ? sudo gitlab-ctl reconfigure