Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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 |