Added CI
This commit is contained in:
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
150
.github/workflows/publish-charts.yml
vendored
Normal file
150
.github/workflows/publish-charts.yml
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
name: Publish Helm Charts
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, master ]
|
||||
pull_request:
|
||||
branches: [ main, master ]
|
||||
|
||||
env:
|
||||
GITEA_URL: https://gt.hexor.cy:30022
|
||||
GITEA_OWNER: ab
|
||||
|
||||
jobs:
|
||||
detect-charts:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
charts: ${{ steps.list_charts.outputs.charts }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Detect charts
|
||||
id: list_charts
|
||||
run: |
|
||||
CHARTS=()
|
||||
|
||||
# Find all directories with Chart.yaml in root
|
||||
for dir in */; do
|
||||
if [ -f "${dir}Chart.yaml" ]; then
|
||||
CHARTS+=("${dir%/}")
|
||||
fi
|
||||
done
|
||||
|
||||
# Convert to JSON array
|
||||
CHARTS_JSON=$(printf '%s\n' "${CHARTS[@]}" | jq -R . | jq -s .)
|
||||
echo "charts=$CHARTS_JSON" >> $GITHUB_OUTPUT
|
||||
echo "Found charts: ${CHARTS[*]}"
|
||||
|
||||
lint-test:
|
||||
needs: detect-charts
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.detect-charts.outputs.charts != '[]'
|
||||
strategy:
|
||||
matrix:
|
||||
chart: ${{ fromJson(needs.detect-charts.outputs.charts) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.14.0
|
||||
|
||||
- name: Lint chart - ${{ matrix.chart }}
|
||||
run: |
|
||||
echo "Linting chart: ${{ matrix.chart }}"
|
||||
helm lint ${{ matrix.chart }}/
|
||||
|
||||
- name: Template test - ${{ matrix.chart }}
|
||||
run: |
|
||||
echo "Template testing chart: ${{ matrix.chart }}"
|
||||
helm template test ${{ matrix.chart }}/ --debug
|
||||
|
||||
publish:
|
||||
needs: [detect-charts, lint-test]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
|
||||
strategy:
|
||||
matrix:
|
||||
chart: ${{ fromJson(needs.detect-charts.outputs.charts) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.14.0
|
||||
|
||||
- name: Get chart info - ${{ matrix.chart }}
|
||||
id: chart_info
|
||||
run: |
|
||||
VERSION=$(helm show chart ${{ matrix.chart }}/ | grep '^version:' | awk '{print $2}')
|
||||
NAME=$(helm show chart ${{ matrix.chart }}/ | grep '^name:' | awk '{print $2}')
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "name=$NAME" >> $GITHUB_OUTPUT
|
||||
echo "Chart: $NAME, Version: $VERSION"
|
||||
|
||||
- name: Create packages directory
|
||||
run: mkdir -p packages
|
||||
|
||||
- name: Package chart - ${{ matrix.chart }}
|
||||
run: |
|
||||
echo "Packaging chart: ${{ matrix.chart }}"
|
||||
helm package ${{ matrix.chart }}/ --destination ./packages/
|
||||
|
||||
- name: Publish to Gitea Registry - ${{ matrix.chart }}
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
run: |
|
||||
CHART_FILE="packages/${{ steps.chart_info.outputs.name }}-${{ steps.chart_info.outputs.version }}.tgz"
|
||||
|
||||
echo "Publishing chart: $CHART_FILE"
|
||||
|
||||
response=$(curl -w "%{http_code}" -s -H "Authorization: token $GITEA_TOKEN" \
|
||||
-X POST \
|
||||
--upload-file "$CHART_FILE" \
|
||||
"$GITEA_URL/api/packages/$GITEA_OWNER/helm/api/charts")
|
||||
|
||||
if [[ "$response" =~ ^2[0-9][0-9]$ ]]; then
|
||||
echo "✅ Chart ${{ matrix.chart }} published successfully!"
|
||||
else
|
||||
echo "❌ Failed to publish chart ${{ matrix.chart }}. HTTP status: $response"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Verify publication - ${{ matrix.chart }}
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
run: |
|
||||
echo "Checking if chart ${{ matrix.chart }} is available in registry..."
|
||||
|
||||
# Wait for indexing
|
||||
sleep 10
|
||||
|
||||
if curl -s -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_URL/api/packages/$GITEA_OWNER/helm/index.yaml" \
|
||||
| grep -q "${{ steps.chart_info.outputs.name }}-${{ steps.chart_info.outputs.version }}"; then
|
||||
echo "✅ Chart ${{ matrix.chart }} verified in registry!"
|
||||
else
|
||||
echo "⚠️ Chart ${{ matrix.chart }} not found in registry index yet"
|
||||
fi
|
||||
|
||||
summary:
|
||||
needs: [detect-charts, publish]
|
||||
runs-on: ubuntu-latest
|
||||
if: always() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
|
||||
steps:
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "📦 Helm Charts Publication Summary"
|
||||
echo "Charts processed: ${{ join(fromJson(needs.detect-charts.outputs.charts), ', ') }}"
|
||||
echo "Registry: $GITEA_URL/packages/$GITEA_OWNER"
|
||||
Reference in New Issue
Block a user