diff --git a/.github/workflows/v2-build-rc-demos-daily.yml b/.github/workflows/v2-build-rc-demos-daily.yml new file mode 100644 index 0000000000..14cf30597b --- /dev/null +++ b/.github/workflows/v2-build-rc-demos-daily.yml @@ -0,0 +1,110 @@ +name: Build Daily RC Demos +on: + schedule: + - cron: '0 11 * * 1-5' # Runs weekdays 6 am ET + workflow_dispatch: + +jobs: + check-for-rc-branches: + runs-on: ubuntu-latest + outputs: + branch_exists: ${{ steps.check-rc-branches.outputs.branch_exists }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: PennyLaneAI/pennylane + + - name: Install latest setuptools + run: | + python -m pip install --upgrade pip + pip install --upgrade setuptools packaging + + - name: Check for RC branches + id: check-rc-branches + run: | + VERSION=$(python setup.py --version) + echo "Current version: $VERSION" + IFS=. read MAJ MIN PAT <<< "${VERSION%-dev[0-9]*}" + RC_BRANCH="v${MAJ}.$((MIN-2)).${PAT}-rc0" + if git ls-remote --exit-code origin "refs/heads/$RC_BRANCH"; then + echo "branch_exists=true" >> $GITHUB_OUTPUT + echo "rc_branch=$RC_BRANCH" >> $GITHUB_OUTPUT + else + echo "branch_exists=false" >> $GITHUB_OUTPUT + echo "No RC branch found." + fi + + build-demos-with-rc-branches: + runs-on: ubuntu-latest + needs: check-for-rc-branches + if: needs.check-for-rc-branches.outputs.branch_exists == 'true' + outputs: + pennylane-version: ${{ steps.setup-rc-versions.outputs.pennylane-version }} + lightning-version: ${{ steps.setup-rc-versions.outputs.lightning-version }} + catalyst-version: ${{ steps.setup-rc-versions.outputs.catalyst-version }} + rc-build-branch: ${{ steps.setup-rc-versions.outputs.rc-build-branch }} + steps: + - name: Checkout QML repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Set up rc versions + id: setup-rc-versions + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + rc_build_branch=rc-daily-build-$(date +'%Y-%m-%d-%H%M%S') + git checkout -b $rc_build_branch + python -m pip index versions pennylane 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true + pennylane_version=$(python -m pip index versions pennylane 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true) + lightning_version=$(python -m pip index versions pennylane-lightning 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 ||true ) + catalyst_version=$(python -m pip index versions pennylane-catalyst 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true) + echo "lightning-version=$lightning_version" >> $GITHUB_OUTPUT + echo "catalyst-version=$catalyst_version" >> $GITHUB_OUTPUT + echo "pennylane-version=$pennylane_version" >> $GITHUB_OUTPUT + echo "rc-build-branch=$rc_build_branch" >> $GITHUB_OUTPUT + echo "PennyLane version: $pennylane_version, PennyLane-Lightning version: $lightning_version, PennyLane-Catalyst version: $catalyst_version" + + - name: Update demo versions + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + sed -i -E "s#git\+https://github.com/PennyLaneAI/pennylane.git\#egg=pennylane\",#pennylane<=${{ steps.setup-rc-versions.outputs.pennylane-version }}\",\\n\\t\\t\\t\"—extra-index-url\",\\n\\t\\t\\t\"https://test.pypi.org/simple/\",\\n\\t\\t\\tpre=True,#" lib/qml/lib/demo.py + sed -i "s/PennyLane-Lightning/pennylane-lightning<=${{ steps.setup-rc-versions.outputs.lightning-version }}/" lib/qml/lib/demo.py + sed -i "s/PennyLane-Catalyst/pennylane-catalyst<=${{ steps.setup-rc-versions.outputs.catalyst-version }}/" lib/qml/lib/demo.py + git commit -am "Set up RC versions for demo builds" + git push --set-upstream origin ${{ steps.setup-rc-versions.outputs.rc-build-branch }} + + build-demos: + needs: build-demos-with-rc-branches + uses: ./.github/workflows/v2-build-demos.yml + with: + ref: '${{ needs.build-demos-with-rc-branches.outputs.rc-build-branch }}' + demo-names: '' + execute: true + dev: false + save-artifact: true + artifact-name: 'demo-build-use-rc' + artifact-retention: 10 + keep-going: false + quiet: false + batch_size: 10 + + cleanup: + runs-on: ubuntu-latest + needs: + - build-demos + - build-demos-with-rc-branches + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cleanup branch + run: | + echo "Cleaning up branch '${{ needs.build-demos-with-rc-branches.outputs.rc-build-branch }}'" + git push origin --delete '${{ needs.build-demos-with-rc-branches.outputs.rc-build-branch }}'|| true