# 05 - Test Runner ve Deploy Ön Koşulları Bu aşamanın amacı test ortamında Gitea Actions runner'ı (`act_runner`) systemd servisi olarak kurmak ve CI/CD pipeline'larının çalışabileceği ortamı hazırlamaktır. ## Runner Yerleşimi Test ortamında maliyet ve basitlik için tek runner kullanılır: | Host | Servis Adı | Label | | --- | --- | --- | | `iklim-app-01` | `gitea-act-runner` | `test-runner`, `iklim-app-01`, `docker` | ## 1. Runner Kullanıcısı ve Yetkiler Runner, host üzerinde Docker komutlarını çalıştırabilmelidir. ```bash # Kullanıcıyı oluştur sudo useradd -m -s /bin/bash gitea-runner # Docker grubuna ekle sudo usermod -aG docker gitea-runner ``` ## 2. act_runner Kurulumu ### Binary İndirme ```bash wget -O act_runner https://dl.gitea.com/act_runner/0.2.10/act_runner-0.2.10-linux-amd64 sudo mv act_runner /usr/local/bin/ sudo chmod +x /usr/local/bin/act_runner ``` ### Kayıt (Registration) Gitea arayüzünden (Organization -> Settings -> Actions -> Runners) bir **Registration Token** alın. ```bash # Config dosyasını oluştur act_runner generate-config > config.yaml # Kayıt işlemini gerçekleştir act_runner register --instance https://git.tarla.io --token --no-interactive ``` *Not: Kayıt sırasında label olarak `test-runner,iklim-app-01,docker` girildiğinden emin olun.* ## 3. Systemd Servisi `/etc/systemd/system/gitea-act-runner.service` dosyasını oluşturun: ```ini [Unit] Description=Gitea Actions runner After=network.target docker.service [Service] ExecStart=/usr/local/bin/act_runner daemon --config /etc/gitea-act-runner/config.yaml WorkingDirectory=/var/lib/gitea-runner User=gitea-runner Group=gitea-runner Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` Servisi başlatın: ```bash sudo systemctl daemon-reload sudo systemctl enable --now gitea-act-runner ``` ## 4. Deploy Ön Koşulları Pipeline'ın `iklim-app-01` üzerinde başarılı deploy yapabilmesi için şu araçların kurulu olması şarttır: - `docker-ce` ve `docker-compose-plugin` - `gettext` (`envsubst` komutu için) - `jq` - `git` ## 5. Gitea Organization Secrets Pipeline'ların çalışması için Gitea Organization seviyesinde şu secret'lar tanımlanmalıdır: | Secret | Açıklama | | --- | --- | | `STORAGEBOX_SSH_PRIV` | StorageBox'a erişim için private key | | `HARBOR_USERNAME` | Container registry kullanıcı adı | | `HARBOR_PASSWORD` | Container registry şifresi | ## Kabul Kriterleri 1. Gitea Runners sayfasında `iklim-app-01` statusü **Idle** (yeşil) görünür. 2. Bir test workflow'u (`runs-on: test-runner`) başarıyla tetiklenir. 3. Runner, host üzerindeki Docker daemon'a erişip konteyner oluşturabilir. 4. `8200/tcp` (Vault) portu public internete kapalıdır.