From c576470f1d73aa0100f2ca70faa404fffa88d75e Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Tue, 19 Nov 2024 10:41:16 -0400 Subject: [PATCH] Bug 1932096 - Create a GitHub action cron job to periodiaclly update in-tree data dumps We want to keep the in-tree remote-settings dumps up to date. For this, a GitHub Actions workflow seems to be the easiest way for now. The workflow will check once a week if there is new data (through the `cargo remote-settings dump-sync` command). And commit any changes to a new branch and open a PR against main. --- .../update-remote-settings-dumps.yaml | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/update-remote-settings-dumps.yaml diff --git a/.github/workflows/update-remote-settings-dumps.yaml b/.github/workflows/update-remote-settings-dumps.yaml new file mode 100644 index 000000000..3dfd8ca2c --- /dev/null +++ b/.github/workflows/update-remote-settings-dumps.yaml @@ -0,0 +1,63 @@ +name: Update Remote Settings Dumps + +on: + schedule: + - cron: "0 0 * * 0" # Run weekly on Sunday at midnight + workflow_dispatch: # Allow manual trigger + inputs: + base_branch: + description: 'Base branch' + required: true + default: 'main' + +jobs: + update-dumps: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + submodules: recursive + + - name: Set up repository and install Rust + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source $HOME/.cargo/env + + - name: Create new branch and run dump + run: | + # Configure git + git config --local user.email "bgruber@mozilla.com" + git config --local user.name "Bastian Gruber" + + # Create new branch + BRANCH_NAME="update-remote-settings-dumps-$(date +%Y%m%d)" + git checkout -b $BRANCH_NAME + + # Run the dump command + cargo remote-settings dump-sync + + # Check for changes and create PR if needed + git add ./components/remote_settings/dumps/ + if git status --porcelain -- ./components/remote_settings/dumps/ | grep .; then + git commit -m "chore: Update remote settings dumps" + git push origin $BRANCH_NAME + + # Create the PR (gh is installed on GH Actions) + gh pr create \ + --title "Update Remote Settings Dumps" \ + --body "Automated PR to update remote settings dumps. + + Changes detected in: \`./components/remote_settings/dumps/\` + Generated by the Update Remote Settings Dumps workflow." \ + --base main \ + --head $BRANCH_NAME + else + echo "No changes detected in dumps directory" + fi \ No newline at end of file