Em elaboração
Ambiente Utilizado: AlmaLinux-9 na OCI
Pre-requisito: Ter o Docker e Docker-Compose instalado
De acordo com a documentação oficial, Gitea é um serviço de desenvolvimento de software completo, auto-hospedado e simples. Inclui hospedagem Git, revisão de código, colaboração em equipe, registro de pacotes e CI/CD. É semelhante ao GitHub, Bitbucket e GitLab.
Seu objetivo é fornecer a maneira mais fácil, rápida e simples de configurar um serviço Git auto-hospedado. Escrito em
Go
, pode ser implementado em todas as plataformas suportadas por Go, incluindo Linux, macOS e Windows, em arquiteturas x86, amd64, ARM e PowerPC.
Embora a documentação oficial seja bastante simples de ser compreendida, um detalhe que me fez utilizar a imagem do bitnami ao invés da imagem oficial é o fato de o bitnami proporcionar uma pós configuração automática sem necessidade de passar pelo wizard (onde se define o BD, usuário administrador/senha, configuração de email, etc) diretamente dentro do
docker-compose.yml
.
mkdir -p ~/docker/gitea/; cd ~/docker/gitea/
cat << '_EOF' > docker-compose.yml
services:
gitea:
image: bitnami/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
# Admin/Site
- GITEA_ADMIN_USER=suporte
- GITEA_ADMIN_PASSWORD=Secret_Password
- [email protected]
- GITEA_APP_NAME=Gitea :) Tiozao do Linux - Bitnami
- GITEA_ROOT_URL=https://git.tiozaodolinux.com
# Mail
- GITEA_SMTP_ENABLED=true
- GITEA_SMTP_HOST=smtp.gmail.com
- GITEA_SMTP_PORT=465
- GITEA_SMTP_FROM=Gitea <[email protected]>
- [email protected]
- GITEA_SMTP_PASSWORD=XXXXXYYYYYY
# Database
- GITEA_DATABASE_TYPE=mysql
- GITEA_DATABASE_HOST=db
- GITEA_DATABASE_PORT_NUMBER=3306
- GITEA_DATABASE_NAME=gitea_database
- GITEA_DATABASE_USERNAME=gitea_user
- GITEA_DATABASE_PASSWORD=gitea_password
# Service
- GITEA__service__DISABLE_REGISTRATION=true
- GITEA__service__REGISTER_EMAIL_CONFIRM=false
- GITEA__service__ENABLE_NOTIFY_MAIL=true
- GITEA__service__DEFAULT_KEEP_EMAIL_PRIVATE=false
- GITEA__service__REQUIRE_SIGNIN_VIEW=true
- GITEA__service__DISABLE_USERS_PAGE=true
# Repository
- GITEA__repository__FORCE_PRIVATE=true
# Session
- GITEA__session__PROVIDER=db
# Log
- GITEA__log__ENABLE_SSH_LOG=true
- GITEA__log__LEVEL=info
# Other
- GITEA__other__SHOW_FOOTER_VERSION=true
- GITEA__other__SHOW_FOOTER_TEMPLATE_LOAD_TIME=true
- GITEA__other__SHOW_FOOTER_POWERED_BY=true
- GITEA__other__ENABLE_SITEMAP=true
- GITEA__other__ENABLE_FEED=true
# I18n
- GITEA__i18n__LANGS="pt-BR,en-US"
- GITEA__i18n__NAMES="Português do Brasil,English"
restart: unless-stopped
volumes:
- ./data:/bitnami/gitea
ports:
- "3002:3000"
- "2222:22"
depends_on:
- db
db:
image: bitnami/mariadb:latest
restart: unless-stopped
environment:
- ALLOW_EMPTY_PASSWORD=yes
- MARIADB_USER=gitea_user
- MARIADB_PASSWORD=gitea_password
- MARIADB_DATABASE=gitea_database
volumes:
- ./mariadb:/bitnami/mariadb
_EOF
¶ Detalhes das variáveis:
(1) GITEA_ADMIN_* utilizadas devem refletir seu próprio ambiente. Altere conforme seu ambiente
(2) GITEA__service__* possibilitam ter um ambiente mais restrito, principalmente não deixar aberto o acesso anonimamente
(3) GITEA_SMTP* possibilitam que o Gitea envie emails. Tenho um Tutorial Completo mostrando como utilizar uma conta do Gmail pra enviar emails
(4) GITEA__other__* permite esconder algumas informações que podem ser exploradas por atacantes
(5) GITEA__i18n__* limita idiomas a apenas en_US e pt_BR
Tanto o
gitea
quanto omariadb
utilizados são do bitnami e requerem que os volumes criados tenham as permissões corretas, caso contrário as imagens do bitnami não conseguem escrever no diretório do volume. Dessa forma faz-se necessário a criação/permissionamento dos diretórios (volumes) antes de subir os containers:
mkdir data mariadb; chown 1001:1001 data mariadb
docker compose up -d
Agora podemos olhar os logs:
docker compose logs -f
(1) Um detalhe interessante: o arquivo
data/custom/conf/app.ini
é gerado com as informações passadas pelas variáveis na primeira vezz que o container é executado.
(2) Se for necessário alterar algum comportamento do Gitea depois de já instanciado, basta alterar neste arquivo e restartar o container.
(3) Mais detalhes do que pode ser alterado você encontra aqui: https://docs.gitea.com/administration/config-cheat-sheet
head data/custom/conf/app.ini
APP_NAME=Gitea :) Tiozão do Linux - Bitnami
RUN_USER=gitea
RUN_MODE=prod
WORK_PATH=/opt/bitnami/gitea
[repository]
ROOT=/opt/bitnami/gitea/data/git/repositories
[repository.local]
LOCAL_COPY_PATH=/opt/bitnami/gitea/tmp/local-repo
Acesse a URL definida na variável GITEA_ROOT_URL
Clique no botão superior direito [-Acessar e entre com seu usuário/senha
definidos nas variáveis GITEA_ADMIN_USER/GITEA_ADMIN_PASSWORD
Act runner é um runner para o Gitea.
Normalmente o runner é executado em outra máquina devidamente preparada ser o servidor docker onde as aplicações irão ser executadas.
Porque na prática é melhor possuir três ambientes (DEV-Desenvolvimento, HOM-Homologação, PRD-Produção)?
Imagine um ambiente PRD com tudo funcionando e repentinamente um deploy de DEV equivocadamente é executado causando uma instabilidade no ambiente.
Com a separação desses ambientes garante-se um melhor controle do que está sendo executado.
Cada ambiente deve ser provido levando-se em conta a quantidade de recursos necessários suportar a execução dos containers.
Clique no ícone do usuário Administrador criado e na opção Site Administration:
Em Admin Settings, vá em Actions -> Runners -> Create new Runner.
mkdir -p ~/docker/act_runner/; cd ~/docker/act_runner
cat << '_EOF' > docker-compose.yml
services:
runner:
image: gitea/act_runner
environment:
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}"
restart: unless-stopped
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
_EOF
¶ Detalhes das variáveis:
(1) substitua
${INSTANCE_URL}
pela URL do Gitea
(2) substitua${REGISTRATION_TOKEN}
pelo Token obtido na interface do Gitea
(3) substitua${RUNNER_NAME}
pelo nome do seu Runner
Agora podemos iniciar o container do runner e observar os logs:
docker compose up -d && docker compose logs -f
Se desejar conferir os valores default ( equivalente ao /etc/gitlab-runner/config.toml ):
docker exec -it act_runner-runner-1 /usr/local/bin/act_runner generate-config > config.yaml
cat config.yaml
Confira se o arquivo de configuração do runner foi criado corretamente:
cat data/.runner
{
"WARNING": "This file is automatically generated by act-runner. Do not edit it manually unless you know what you are doing. Removing this file will cause act runner to re-register as a new runner.",
"id": 2,
"uuid": "3b6f8c21-2021-4204-ad57-ba1bd6e57c4a",
"name": "RUNNER_NAME",
"token": "11c2b0b767adb27cdc616cd467d12bb224366452",
"address": "https://git.tiozaodolinux.com",
"labels": [
"RUNNER_LABELS:host"
]
}
Para dirimir dúvidas e/ou sugestões entre no Grupo Tiozão do Linux
https://t.me/Grupo_Tiozao_Do_Linux
pull/push/tag/ls
- https://docs.docker.com/reference/cli/docker/image/