Skip to content

Workflow file for this run

---
name: Publish Release on Merge to Master
on:
pull_request:
branches:
- master
types:
- closed
jobs:
publish-release-draft:
if: github.event.pull_request.merged == true
runs-on: ubuntu-22.04
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.MINITRINO_TOKEN }}
run: |-
RELEASE_NOTES=./release-notes/"${GITHUB_HEAD_REF}".md
DESCRIPTION=$(cat "${RELEASE_NOTES}")
if [ ! -f "${RELEASE_NOTES}" ]; then
echo "Release notes file not found at ${RELEASE_NOTES}. Exiting..."
exit 1
fi
echo "Checking existing releases..."
gh release list
if gh release list | grep -q -e "${GITHUB_HEAD_REF}"; then
echo "Release ${GITHUB_HEAD_REF} found. Deleting release..."
gh release delete "${GITHUB_HEAD_REF}" -y --cleanup-tag || echo "Release not found during deletion."
else
echo "Release ${GITHUB_HEAD_REF} not found. Proceeding to creation..."
fi
echo "Creating release from branch ${GITHUB_HEAD_REF}..."
gh release create "${GITHUB_HEAD_REF}" \
--prerelease \
--draft=true \
--title "${GITHUB_HEAD_REF}" \
--notes "${DESCRIPTION}" \
--target "${GITHUB_HEAD_REF}"
publish-release:
runs-on: ubuntu-22.04
needs: publish-release-draft
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Publish release
env:
GITHUB_TOKEN: ${{ secrets.MINITRINO_TOKEN }}
run: |-
gh release edit "${GITHUB_HEAD_REF}" \
--prerelease=false \
--draft=false \
--latest
pypi-publish:
runs-on: ubuntu-22.04
needs: publish-release
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |-
pip install wheel twine
- name: Build and check distribution
run: |-
cd src/cli
python setup.py sdist bdist_wheel
twine check dist/*
- name: Publish distribution to PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: |-
PYPI_URL="https://pypi.org/pypi/minitrino/${GITHUB_HEAD_REF}/json"
RESPONSE=$(curl --silent "${PYPI_URL}")
if echo "${RESPONSE}" | grep -q "\"${GITHUB_HEAD_REF}\""; then
echo "Package version ${GITHUB_HEAD_REF} already exists on PyPI. \
Skipping upload."
else
echo "Uploading package version ${GITHUB_HEAD_REF} to PyPI..."
twine upload src/cli/dist/*
fi
- name: Check package
run: |-
MAX_ATTEMPTS=5
ATTEMPT=1
pip uninstall -y minitrino
until pip install minitrino==${GITHUB_HEAD_REF} --no-cache-dir; do
if [ $ATTEMPT -ge $MAX_ATTEMPTS ]; then
echo "Failed to install the latest version after \
$ATTEMPT attempts."
exit 1
fi
echo "Attempt $ATTEMPT failed. Retrying in 30 seconds..."
ATTEMPT=$((ATTEMPT+1))
sleep 30
done
minitrino --help || exit 1