diff --git a/.github/workflows/update-main-source.yml b/.github/workflows/update-main-source.yml new file mode 100644 index 0000000000..a40203388c --- /dev/null +++ b/.github/workflows/update-main-source.yml @@ -0,0 +1,41 @@ +name: Auto-update charts + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Configure git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Update main-source branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_WORKFLOW: ${{ github.workflow }} + GITHUB_REPOSITORY: ${{ github.repository }} + run: | + scripts/pull-ci-scripts + BRANCH="auto-update/$(date '+%s')" + git checkout -b "$BRANCH" + bin/partner-charts-ci auto + + # exit if there are no changes + git diff --quiet main-source "$BRANCH" && exit 0 + + # close all existing PRs from branches starting with "auto-update" + gh pr --repo "$GITHUB_REPOSITORY" list --search 'head:auto-update' --json 'headRefName' --jq '.[] | join("\n")' | \ + xargs -n 1 gh pr --repo "$GITHUB_REPOSITORY" close + + # push changes + git push --set-upstream origin "$BRANCH" + TITLE="Auto-update charts on main-source" + BODY="This PR was created by the \"$GITHUB_WORKFLOW\" workflow. It auto-updates the helm charts on the main-source branch." + gh pr create --repo "$GITHUB_REPOSITORY" --base main-source --head "$BRANCH" --title "$TITLE" --body "$BODY" diff --git a/.github/workflows/release.yaml b/.github/workflows/update-main.yml similarity index 50% rename from .github/workflows/release.yaml rename to .github/workflows/update-main.yml index 8eae513c60..32f22df569 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/update-main.yml @@ -1,12 +1,13 @@ -name: Release Partner Charts +name: Update main branch from main-source on: workflow_dispatch: - schedule: - - cron: '0 0 * * *' + push: + branches: + - main-source jobs: - release: + update: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -16,17 +17,14 @@ jobs: git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" - - name: Update main-source branch + - name: Update main branch with latest from main-source run: | - scripts/pull-ci-scripts - bin/partner-charts-ci auto - git push origin main-source - - - name: Update main branch - run: | - # checkout action only fetches main-source, so we need to fetch main branch also + # checkout action only fetches main-source, so we need to fetch main git fetch origin main --depth 1 git checkout main - git checkout main-source -- index.yaml assets - git commit -m "Release partner charts" - git push origin main + git rm -r assets index.yaml + git checkout main-source -- assets index.yaml + # exit if there are no changes + git diff-index --quiet HEAD assets index.yaml && exit 0 + git commit -m "Update partner charts" + git push origin