540675597a
Ship Harbor/Hub push with latest+version tags, deploy to ovirt.devops.org.ru, and show the package version badge in Help → About.
78 lines
3.2 KiB
Markdown
78 lines
3.2 KiB
Markdown
**Language / Язык:** [English](../ci-cd.md) | [Русский](ci-cd.md)
|
||
|
||
# CI/CD (Jenkins + Gitea)
|
||
|
||
SemVer хранится в [`VERSION`](../../VERSION). Локальный bump:
|
||
`make bump-patch` / `make bump-minor` (синхронизирует `pyproject.toml` и Helm).
|
||
Jenkins версию **не** поднимает — собирает то, что в коммите.
|
||
|
||
Публичный URL после деплоя: **https://ovirt.devops.org.ru/**
|
||
|
||
## Pipeline
|
||
|
||
Один [`Jenkinsfile`](../../Jenkinsfile) на ветках `main` / `master`:
|
||
|
||
1. **Build & push** (agent `docker` / DinD) — multi-arch `linux/amd64,linux/arm64`
|
||
в Harbor и Docker Hub, теги только **`:{VERSION}`** и **`:latest`**.
|
||
2. **Deploy** — `kubectl set image` для `simulators/simulators-ovirt`
|
||
(контейнер `simulator` + initContainer `migrate`), затем rollout status
|
||
(`--timeout=1200s`).
|
||
|
||
Первый install в кластере (Ingress, Postgres, секреты) — **не** этот job, а
|
||
`make addon-simulators` в DevOpsTools/K3S (`simulators_proxmox_host:
|
||
ovirt.devops.org.ru`).
|
||
|
||
### Образы
|
||
|
||
| Registry | Repository |
|
||
|---|---|
|
||
| Harbor | `hub.antropoff.ru/devops-tools/ovirt-api-simulator` |
|
||
| Docker Hub | `inecs/ovirt-api-simulator` |
|
||
|
||
### Credentials (Jenkins Global)
|
||
|
||
| ID | Тип | Назначение |
|
||
|---|---|---|
|
||
| `harbor-devops-tools-push-pull-access` | Username/password | Push в Harbor |
|
||
| `docker-hub` | Username/password | Docker Hub `inecs` |
|
||
| `k3s-kubeconfig` | Secret file | Kubeconfig для deploy |
|
||
| `ssh-gitea-key` | SSH private key | Checkout из Gitea |
|
||
|
||
## Что сделать в Gitea
|
||
|
||
1. Репозиторий на Gitea (зеркало или primary), ветка `main`.
|
||
2. Deploy key / credential Jenkins `ssh-gitea-key` с правом clone
|
||
(`git@…:…/ovirt_api_simulator.git`).
|
||
3. По желанию: webhook Gitea → Jenkins Multibranch (или polling / Organization
|
||
Folder).
|
||
|
||
## Что сделать в Jenkins
|
||
|
||
1. **Credentials** — четыре ID выше (как у Wrapped), если ещё нет.
|
||
2. **Agent** — pod template label `docker` с контейнером `docker` (DinD /
|
||
buildx), как у Wrapped.
|
||
3. **Job** — Multibranch Pipeline (или Pipeline from SCM):
|
||
- Script Path: `Jenkinsfile`
|
||
- Ветки: `main` (и `master` при необходимости)
|
||
- SCM: SSH URL Gitea + `ssh-gitea-key`
|
||
4. **Harbor** — проект `devops-tools`, robot может push
|
||
`ovirt-api-simulator`.
|
||
5. **Docker Hub** — репозиторий `inecs/ovirt-api-simulator`, права у
|
||
`docker-hub`.
|
||
6. **Кластер** — релиз `simulators` в ns `simulators` уже установлен
|
||
(`make addon-simulators`). Deployment: `simulators-ovirt`.
|
||
7. После bump `VERSION` и push в `main` — прогнать job и проверить:
|
||
- теги `:0.x.y` и `:latest` в Harbor/Hub
|
||
- `kubectl -n simulators get deploy,ing`
|
||
- Help → About: badge `v0.x.y` на https://ovirt.devops.org.ru/
|
||
|
||
## Локальный релиз без Jenkins
|
||
|
||
```bash
|
||
make bump-patch # или bump-minor
|
||
make version-commit
|
||
git push origin HEAD
|
||
# или только Hub вручную:
|
||
make release
|
||
```
|