Skip to content

Commit 745db60

Browse files
committed
[uk] Howto
Signed-off-by: Andrii Holovin <[email protected]>
1 parent 331a33f commit 745db60

File tree

4 files changed

+426
-0
lines changed

4 files changed

+426
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
---
2+
title: Chart Releaser Action для автоматизації публікації чартів на GitHub Pages
3+
description: Описує, як використовувати Chart Releaser Action для автоматизації публікації чартів за допомогою GitHub Pages.
4+
sidebar_position: 3
5+
---
6+
7+
Цей посібник описує, як використовувати [Chart Releaser Action](https://github.com/marketplace/actions/helm-chart-releaser) для автоматизації публікації чартів за допомогою GitHub Pages. Chart Releaser Action — це GitHub Action workflow, який перетворює GitHub проєкт на репозиторій чартів Helm, використовуючи CLI-інструмент [helm/chart-releaser](https://github.com/helm/chart-releaser).
8+
9+
## Зміни в репозиторії {#repository-changes}
10+
11+
Створіть Git-репозиторій у вашій організації на GitHub. Ви можете назвати репозиторій `helm-charts`, хоча інші назви також прийнятні. Сирці всіх чартів можуть бути розміщені в гілці `main`. Чарти повинні бути розміщені в теці `/charts` на верхньому рівні дерева тек.
12+
13+
Також має бути інша гілка з назвою `gh-pages`, щоб публікувати чарти. Зміни в цій гілці будуть автоматично створюватися за допомогою Chart Releaser Action, описаного тут. Крім створення гілки `gh-pages` ви можете додати файл `README.md` до неї, який буде показуватись користувачам, що відвідують сторінку.
14+
15+
Ви можете додати інструкції в `README.md` щодо встановлення чартів, як показано нижче (замініть `<alias>`, `<orgname>`, і `<chart-name>`):
16+
17+
```md
18+
## Використання
19+
20+
Щоб використовувати чарти, необхідно встановити [Helm](https://helm.sh/uk).
21+
Будь ласка, ознайомтеся з [документацією Helm](https://helm.sh/uk/docs), щоб розпочати.
22+
23+
Як тільки Helm буде налаштовано правильно, додайте репозиторій наступним чином:
24+
25+
helm repo add <alias> https://<orgname>.github.io/helm-charts
26+
27+
Якщо ви вже додавали цей репозиторій раніше, виконайте команду `helm repo update`,
28+
щоб отримати останні версії пакетів. Потім ви можете виконати `helm search repo <alias>`, щоб побачити чарти.
29+
30+
Щоб встановити чарт `<chart-name>`:
31+
32+
helm install my-<chart-name> <alias>/<chart-name>
33+
34+
Щоб видалити чарт:
35+
36+
helm uninstall my-<chart-name>
37+
```
38+
39+
Чарти будуть опубліковані на вебсайті з URL-адресою типу:
40+
41+
https://<orgname>.github.io/helm-charts
42+
43+
## GitHub Actions Workflow {#github-actions-workflow}
44+
45+
Створіть файл GitHub Actions workflow в гілці `main` за адресою `.github/workflows/release.yml`:
46+
47+
```yaml
48+
name: Release Charts
49+
50+
on:
51+
push:
52+
branches:
53+
- main
54+
55+
jobs:
56+
release:
57+
permissions:
58+
contents: write
59+
runs-on: ubuntu-latest
60+
steps:
61+
- name: Checkout
62+
uses: actions/checkout@v5
63+
with:
64+
fetch-depth: 0
65+
66+
- name: Configure Git
67+
run: |
68+
git config user.name "$GITHUB_ACTOR"
69+
git config user.email "[email protected]"
70+
71+
- name: Run chart-releaser
72+
uses: helm/[email protected]
73+
env:
74+
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
75+
```
76+
77+
Наведена конфігурація використовує [@helm/chart-releaser-action](https://github.com/helm/chart-releaser-action), щоб перетворити ваш GitHub проєкт на самостійний репозиторій чартів Helm. Вона виконує це під час кожної операції push в гілку `main` шляхом перевірки кожного чарту у вашому проєкті, і коли знаходить нову версію чарту, створює відповідний реліз GitHub, додає артефакти Helm чарту до релізу і створює або оновлює файл `index.yaml` з метаданими про ці релізи, який потім хоститься на GitHub Pages.
78+
79+
Версія Chart Releaser Action, використана в наведеному прикладі, — `v1.7.0`. Ви можете змінити її на [останню доступну версію](https://github.com/helm/chart-releaser-action/releases).
80+
81+
:::note
82+
Chart Releaser Action майже завжди використовується в парі з [Helm Testing Action](https://github.com/marketplace/actions/helm-chart-testing) та [Kind Action](https://github.com/marketplace/actions/kind-cluster).
83+
:::
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: Синхронізація вашого репозиторію чартів
3+
description: Описує, як синхронізувати ваші локальні та віддалені репозиторії чартів.
4+
sidebar_position: 2
5+
---
6+
7+
:::note
8+
Цей приклад для хмарного сховища Google (Google Cloud Storage, GCS), кошик якого використовужться як репозиторій чартів.
9+
:::
10+
11+
## Попередні умови {#prerequisites}
12+
13+
* Встановіть [gsutil](https://cloud.google.com/storage/docs/gsutil). *Ми значною мірою покладаємося на використання gsutil rsync.*
14+
* Переконайтеся, що у вас є доступ до бінарного файлу Helm.
15+
* _Опціонально: Мирекомендуємо увімкнути [версіювання обʼєктів](https://cloud.google.com/storage/docs/gsutil/addlhelp/ObjectVersioningandConcurrencyControl#top_of_page) у вашому сховищі GCS, на випадок, якщо ви випадково щось видалите._
16+
17+
## Set up a local chart repository directory
18+
19+
Створіть локальну теку, як ми це робили в [керівництві з репозиторію чартів](/topics/chart_repository.md), і помістіть ваші упаковані чарти в цю теку.
20+
21+
Наприклад:
22+
23+
```console
24+
$ mkdir fantastic-charts
25+
$ mv alpine-0.1.0.tgz fantastic-charts/
26+
```
27+
28+
## Генерація оновленого файлу index.yaml {#generate-an-updated-index.yaml}
29+
30+
Використовуйте Helm для генерації оновленого файлу index.yaml, передавши шлях до теки та URL-адресу віддаленого репозиторію команді `helm repo index`, як показано нижче:
31+
32+
```console
33+
$ helm repo index fantastic-charts/ --url https://fantastic-charts.storage.googleapis.com
34+
```
35+
36+
Це згенерує оновлений файл index.yaml і помістить його в теку `fantastic-charts/`.
37+
38+
## Синхронізація ваших локальних та віддалених репозиторіїв чартів {#sync-your-local-and-remote-chart-repositories}
39+
40+
Завантажте вміст теки у ваше сховище GCS, запустивши `scripts/sync-repo.sh` та передавши назву локальної теки та назву сховища GCS.
41+
42+
Наприклад:
43+
44+
```console
45+
$ pwd
46+
/Users/me/code/go/src/helm.sh/helm
47+
$ scripts/sync-repo.sh fantastic-charts/ fantastic-charts
48+
Getting ready to sync your local directory (fantastic-charts/) to a remote repository at gs://fantastic-charts
49+
Verifying Prerequisites....
50+
Thumbs up! Looks like you have gsutil. Let's continue.
51+
Building synchronization state...
52+
Starting synchronization
53+
Would copy file://fantastic-charts/alpine-0.1.0.tgz to gs://fantastic-charts/alpine-0.1.0.tgz
54+
Would copy file://fantastic-charts/index.yaml to gs://fantastic-charts/index.yaml
55+
Are you sure you would like to continue with these changes?? [y/N]} y
56+
Building synchronization state...
57+
Starting synchronization
58+
Copying file://fantastic-charts/alpine-0.1.0.tgz [Content-Type=application/x-tar]...
59+
Uploading gs://fantastic-charts/alpine-0.1.0.tgz: 740 B/740 B
60+
Copying file://fantastic-charts/index.yaml [Content-Type=application/octet-stream]...
61+
Uploading gs://fantastic-charts/index.yaml: 347 B/347 B
62+
Congratulations your remote chart repository now matches the contents of fantastic-charts/
63+
```
64+
65+
## Оновлення вашого репозиторію чартів {#updating-your-chart-repository}
66+
67+
Ви захочете зберегти локальну копію вмісту вашого репозиторію чартів або використати `gsutil rsync` для копіювання вмісту вашого віддаленого репозиторію чартів до локальної теки.
68+
69+
Наприклад:
70+
71+
```console
72+
$ gsutil rsync -d -n gs://bucket-name local-dir/ # прапорець -n виконує пробний запуск
73+
Building synchronization state...
74+
Starting synchronization
75+
Would copy gs://bucket-name/alpine-0.1.0.tgz to file://local-dir/alpine-0.1.0.tgz
76+
Would copy gs://bucket-name/index.yaml to file://local-dir/index.yaml
77+
78+
$ gsutil rsync -d gs://bucket-name local-dir/ # виконує дії копіювання
79+
Building synchronization state...
80+
Starting synchronization
81+
Copying gs://bucket-name/alpine-0.1.0.tgz...
82+
Downloading file://local-dir/alpine-0.1.0.tgz: 740 B/740 B
83+
Copying gs://bucket-name/index.yaml...
84+
Downloading file://local-dir/index.yaml: 346 B/346 B
85+
```
86+
87+
Helpful Links:
88+
89+
* Документація [gsutil rsync](https://cloud.google.com/storage/docs/gsutil/commands/rsync#description)
90+
* [Керівництво репозиторію чартів](/topics/chart_repository.md)
91+
* Документація щодо [версіювання обʼєктів та керування паралельністю](https://cloud.google.com/storage/docs/gsutil/addlhelp/ObjectVersioningandConcurrencyControl#overview) в Google Cloud Storage

0 commit comments

Comments
 (0)