Skip to content

pipeline: create dev pipeline #15

pipeline: create dev pipeline

pipeline: create dev pipeline #15

Workflow file for this run

on:
pull_request:
paths:
- 'charts/**'
jobs:
create-matrix:
runs-on: ubuntu-latest
outputs:
charts: ${{ steps.charts.outputs.charts }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create changed charts matrix
id: charts
run: |
charts=$(git diff --merge-base origin/main --name-only | grep ^charts/ | cut -d/ -f2 | uniq | sort | jq -R -s -c 'split("\n")[:-1]')
echo "charts=${charts}"
echo "charts=${charts}" >> "$GITHUB_OUTPUT"
build-charts:
runs-on: ubuntu-latest
needs: create-matrix
strategy:
fail-fast: false
matrix:
chart: ${{ fromJSON(needs.create-matrix.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.12.0
- name: Run Helm dependency build
run: |
helm dependency build charts/${{ matrix.chart }}
- name: Run Helm template
run: |
helm template "${{ matrix.chart }}" charts/${{ matrix.chart }}
- name: Run Helm lint
run: |
helm lint charts/${{ matrix.chart }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Check for chart version change
run: |
old_version=$(git show origin/main:charts/${{ matrix.chart }}/Chart.yaml | yq eval ".version")
new_version=$(yq eval ".version" charts/${{ matrix.chart }}/Chart.yaml)
if [ "$old_version" == "$new_version" ]; then
echo "Chart version not changed"
exit 1
fi
- name: Push chart to GHCR
run: |
version=$(yq eval ".version" charts/${{ matrix.chart }}/Chart.yaml)
yq e -i '.version = "env(version)-${{ github.base_ref }}.${{ github.run_id }}"' charts/${{ matrix.chart }}/Chart.yaml
echo "Pushing chart ${{ matrix.chart }} with version $version-${{ github.ref_name }}.${{ github.run_id }}"
# helm push "${{ matrix.chart }}" "oci://ghcr.io/${{ github.repository }}"