GitHub 작업으로 자동 Helm 저장소 만들기
6456 단어 cihelmgithubkubernetes
내 연구에서 나는 이 목적을 위해 git 저장소를 사용하는 것이 가능하고 아주 쉽다는 것을 발견했습니다. 엄청난! 그러나 나는 그것이 내 사용에 충분하지 않다고 생각합니다. 한 번은 모든 차트 변경에 대해 수동으로 리포지토리를 패키징하고 인덱싱할 필요가 없었기 때문에 확장하기로 결정했습니다.
최종 결과
마지막으로 다음과 같이 구성된 git 저장소가 변경될 때마다 자체 업데이트되는 Helm 저장소가 있어야 합니다.
├── master
│ ├── charts/
│ │ └── example/
│ └── sync_repo.sh
└── repo
├── example-0.1.0.tgz
└── index.yaml
전체 예제는 myGitHub에서 볼 수 있습니다.
설정
이를 위해 새 git 저장소를 만들고 로컬로 복제한 다음
charts
디렉터리에 새 차트를 만듭니다.mkdir charts
cd charts
helm create example
완료되고 커밋되면 실제 Helm 저장소를 저장할 고아 분기를 만듭니다. 왜 고아 지점인가? 저장소에 대한 모든 커밋에서 CircleCI는 Helm 저장소를 업데이트하기 위해 자체 커밋을 수행합니다.
이 단계는 선택 사항이지만 개발자가 리포지토리를 변경할 때마다 풀 리베이스하지 않아도 되며 마스터 브랜치의 기록을 깨끗하게 유지하는 추가 이점이 있습니다.
다음과 같이
repo
라는 고아 분기를 만듭니다.git checkout --orphan repo
git rm -rf .
touch index.yaml
git add index.yaml
git commit -m 'Initial Commit'
git push -u origin repo
이제
master
분기로 돌아가자. 다음 단계는 CI가 커밋할 때마다 사용할 스크립트를 만드는 것입니다. 스크립트는 모든 차트를 패키징하고 index.yaml
파일을 다시 생성합니다.선택한 텍스트 편집기를 사용하여 생성
sync_repo.sh
하고 다음을 추가합니다.#!/bin/sh
mkdir -p repo
cd repo
helm package ../charts/*
helm repo index .
마지막으로 이 퍼즐의 마지막 조각을 추가하고 GitHub Actions를 이 프로세스에 통합합니다.
우리의 행동은 우리의 쉘 스크립트가 우리를 중단시킨 부분을 선택할 것입니다. 별도의
repo
분기를 복제하고 생성된 파일을 복사하여 최종적으로 변경 사항을 커밋하고 원본으로 푸시합니다.이를 위해
.github/workflows/sync_repo.yml
에서 다음 작업을 생성합니다.name: Sync Helm Repo
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: 'master'
path: 'master'
- uses: actions/checkout@v2
with:
ref: 'repo'
path: 'repo'
- uses: azure/setup-helm@v1
- name: Sync Helm Repo
run: cd master && sh sync_repo.sh
- name: Move repo folder
run: |
mv master/repo/* repo/
cd repo
git config user.email "[email protected]"
git config user.name "Idan Elhalwani"
git add -A
git diff --quiet && git diff --staged --quiet || git commit -m "Update repo [SKIP CI]" -m "${{ github.event.head_commit.message }}"
git push
작업을 분해해 보겠습니다.
# Move our generated files from the master branch folder to the repo branch folder
mv master/repo/* repo/
cd repo
# Configure git for when we're ready to commit
git config user.email "[email protected]"
git config user.name "Idan Elhalwani"
# Add all new files and attempt to commit. If there is nothing new, the commit won't go through and nothing will be pushed
git add -A
git diff --quiet && git diff --staged --quiet || git commit -m "Update repo [SKIP CI]" -m "${{ github.event.head_commit.message }}"
git push
결론
이 시점에서 완전히 작동하고 자동으로 업데이트되는 Helm 저장소가 있습니다. 이를 사용하려면
repo
분기에 대한 원시 URL을 가져옵니다.우리의 경우 다음과 같이 저장소를 추가합니다.
helm repo add example https://raw.githubusercontent.com/idane/helm-repo-example/repo
Reference
이 문제에 관하여(GitHub 작업으로 자동 Helm 저장소 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/idane/creating-an-automatic-helm-repository-with-github-actions-2ml5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)