name: Nightly pre-release on PyPI on: schedule: # Run at midnight UTC every day - cron: "0 0 * * *" workflow_dispatch: env: HATCH_VERSION: "1.16.5" permissions: contents: read jobs: nightly-release: runs-on: ubuntu-latest environment: pypi permissions: id-token: write # Always build from main for consistency (scheduled and manual runs) steps: - name: Checkout main uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false ref: main fetch-depth: 1 # Reads VERSION.txt, strips any -rcN suffix, and appends .devYYYYMMDDHHMMSS # (e.g. 2.25.0.dev20250217000000) so each run gets a unique, PEP 440–valid pre-release version. - name: Set nightly version id: set-version run: | BASE_VERSION=$(sed 's/-rc[0-9]*$//' VERSION.txt) TIMESTAMP=$(date +%Y%m%d%H%M%S) NIGHTLY_VERSION="${BASE_VERSION}.dev${TIMESTAMP}" echo "version=${NIGHTLY_VERSION}" >> "$GITHUB_OUTPUT" echo "${NIGHTLY_VERSION}" > VERSION.txt echo "Building haystack-ai version: ${NIGHTLY_VERSION}" - name: Install Hatch run: | python -m pip install --upgrade pip pip install hatch==${{ env.HATCH_VERSION }} --uploaded-prior-to=P1D - name: Build Haystack run: hatch build - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0