name: Release Charts on: workflow_run: workflows: [ "Validate Charts" ] branches: [ main ] types: - completed jobs: charts-changed: name: Get Charts being Changed runs-on: ci-os steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: List changed charts id: changed-charts run: | changed=$(ct --config .forgejo/ct.yaml list-changed | tr '\n' ' ' | jq -R -s -c 'split(" ") | map(select(length > 0))') if [[ -n "$changed" ]]; then echo "changesExist=true" >> $GITHUB_ENV echo "::set-output name=reposChanged::$changed" # Sets output as a JSON array fi outputs: reposChanged: ${{ steps.changed-charts.outputs.reposChanged }} changesExist: ${{ env.changesExist }} helm-publish: name: "Publish Helm Chart" needs: charts-changed if: needs.charts-changed.outputs.changesExist == 'true' runs-on: ci-os steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Publish env: FORGEJO_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | charts='${{ needs.charts-changed.outputs.reposChanged }}' export REPO=${{ github.repository }} export RELEASE_DIR=dist export RELEASE_NOTES=/var/ci-os/templates/release-notes-template.md export SHA=${{ github.sha }} export FORGEJO_TOKEN="${{ secrets.GITHUB_TOKEN }}" for chart in $(echo $charts | jq -r '.[]'); do rm -rf dist || true mkdir dist || true echo "packing $chart" helm package "$chart" -d dist CHART_NAME=$(yq -r .name "$chart/Chart.yaml") CHART_VERSION=$(yq -r .version "$chart/Chart.yaml") export TAG="$CHART_NAME-$CHART_VERSION" echo "$TAG" forgejo-release create done