Skip to content

third full [test] run #24

third full [test] run

third full [test] run #24

Workflow file for this run

---
name: prepare-release
on:
# TODO: Change this back into pull_request and add proper precautions
# TODO: Parallize the quickstart run more logically
push:
branches: [misc/prepare-release-*]
env:
ZENML_ANALYTICS_OPT_IN: false
jobs:
prepare-release:
if: contains(github.event.head_commit.message, '[prepare]') # TODO: Remove
runs-on: ubuntu-latest
steps:
# 0. Check out the repository
- name: Checkout code
uses: actions/[email protected]
# 0. Extract the version name
- name: Extract version from branch name
run: |
BRANCH_NAME=${GITHUB_REF#refs/heads/}
VERSION=${BRANCH_NAME#misc/prepare-release-}
echo "VERSION=$VERSION" >> $GITHUB_ENV
# 0. Set up python
- name: Set up Python
uses: actions/[email protected]
with:
python-version: '3.12'
# 0. Configure Git
- name: Configure git
shell: bash
run: |
git config --global user.email "[email protected]"
git config --global user.name "ZenML GmbH"
# 0. Install ZenML
- name: Install ZenML and dependencies
shell: bash
run: |
scripts/install-zenml-dev.sh --system --integrations "no"
uv pip list
uv pip check || true
# # 1. Send a message to Discord to alert everyone for the release
# - name: Send message to Discord
# run: |
# curl -H "Content-Type: application/json" \
# -d "{\"content\": \"New changes pushed to the main branch!\"}" \
# ${{ secrets.DISCORD_WEBHOOK_URL }}
# 4. Alembic merge
- name: Run Alembic merge
shell: bash
run: |
alembic merge -m "Release" heads --rev-id ${{ env.VERSION }}
scripts/format.sh
git add src/zenml/zen_stores/migrations/versions
# 5. Update the main files
- name: Update main files
run: |
OLD_VERSION=$(cat src/zenml/VERSION)
echo "OLD_VERSION=$OLD_VERSION" >> $GITHUB_ENV
sed -i "s/$OLD_VERSION/${{ env.VERSION }}/g" README.md pyproject.toml src/zenml/VERSION src/zenml/zen_server/deploy/helm/Chart.yaml src/zenml/zen_server/deploy/helm/README.md
git add README.md pyproject.toml src/zenml/VERSION src/zenml/zen_server/deploy/helm/Chart.yaml src/zenml/zen_server/deploy/helm/README.md
# 5.5. Update the quickstart references
- name: Replace the references in the quickstart example
run: |
find examples/quickstart -type f \( -name "*.txt" -o -name "*.yaml" -o -name "*.ipynb" \) -print0 |
while IFS= read -r -d '' file; do
if [[ "$file" == *.ipynb ]]; then
# For .ipynb files, we need to parse JSON
jq --arg OLD "$OLD_VERSION" --arg NEW ${{ env.VERSION }} \
'(.cells[] | select(.cell_type == "code") | .source) |= map(gsub($OLD; $NEW))' "$file" > "${file}.tmp" && mv "${file}.tmp" "$file"
else
# For .txt and .yaml files, we can use sed
sed -i "s/$OLD_VERSION/${{ env.VERSION }}/g" "$file"
fi
done
git add examples/quickstart
# 6. Generate and append release notes
- name: Generate release notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASE_NOTES=$(gh api repos/${{ github.repository }}/releases/generate-notes -F tag_name=${{ env.VERSION }} -F target_commitish=${{ github.sha }} -F previous_tag_name=${{ env.OLD_VERSION }} | jq -r '.body')
echo "$RELEASE_NOTES" >> RELEASE_NOTES.md
git add RELEASE_NOTES.md
# 7. Push the changes
# TODO: Change the reference to ${{ github.event.pull_request.head.ref }}
- name: Push the changes
run: |
git commit -m "Adding the new version to the necessary files."
git push origin HEAD:${{ github.ref }}
build-release:
if: contains(github.event.head_commit.message, '[build]') # TODO: Remove
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
# Check out the prepare-release branch
- name: Checkout code
uses: actions/[email protected]
# Sign in to Google
- uses: google-github-actions/setup-gcloud@v0
with:
service_account_email: ${{ secrets.GCP_CLOUDBUILD_EMAIL }}
service_account_key: ${{ secrets.GCP_CLOUDBUILD_KEY }}
project_id: ${{ secrets.GCP_CLOUDBUILD_PROJECT }}
# Submit the Cloudbuild job
- name: Build docker images
run: |
gcloud builds submit \
--quiet \
--config=release-cloudbuild-preparation.yaml \
--substitutions=_ZENML_BRANCH=${{ github.ref }}
# Sign in to AWS
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::715803424590:role/gh-action-role-zenml-quickstart-ecr
aws-region: eu-central-1
- name: Login to Amazon ECR
id: login-ecr
run: |
aws ecr get-login-password --region eu-central-1 | docker login 715803424590.dkr.ecr.eu-central-1.amazonaws.com --username AWS --password-stdin
# Publish the AWS image
- name: Pull quickstart image from Dockerhub
run: |
docker pull zenmldocker/prepare-release:quickstart-aws
- name: Push quickstart image to ECR
run: |
docker tag zenmldocker/prepare-release:quickstart-aws 715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws
docker push 715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws
test-release:
if: contains(github.event.head_commit.message, '[test]') # TODO: Remove
env:
ZENML_STORE_URL: ${{ secrets.RELEASE_TENANT_URL }}
ZENML_STORE_API_KEY: ${{ secrets.RELEASE_TENANT_SERVICE_ACCOUNT_KEY }}
runs-on: ubuntu-latest
steps:
# Check out the code
- name: Checkout code
uses: actions/[email protected]
# Setting up the Python
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
# Install requests
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests
# Deactivate and rerun the tenant
- name: Run tenant management script
env:
CLOUD_STAGING_CLIENT_ID: ${{ secrets.CLOUD_STAGING_CLIENT_ID }}
CLOUD_STAGING_CLIENT_SECRET: ${{ secrets.CLOUD_STAGING_CLIENT_SECRET }}
RELEASE_TENANT_ID: ${{ secrets.RELEASE_TENANT_ID }}
run: python scripts/redeploy-release-prep-tenant.py
# ZenML Integrations
- name: Install ZenML and the required integrations
run: |
scripts/install-zenml-dev.sh --system --integrations "no"
# Run the Quickstart on the AWS stack
- name: Run on AWS
run: |
cd examples/quickstart
zenml stack set aws
# Adjust the config to use the right parent image
sed -i "s|parent_image:.*|parent_image: \"715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws\"|" "configs/training_aws.yaml"
# Adjust the requirements to use the right zenml installation
sed -i 's|zenml\[server\]==[^[:space:]]*|git+https://github.com/zenml-io/zenml.git@${{ github.ref }}#egg=zenml[server]|g' requirements_aws.txt
pip install -r requirements_aws.txt
python run.py --model_type=t5-small
# Run the Quickstart on the Azure stack
- name: Run on Azure
run: |
cd examples/quickstart
zenml stack set azure
# Adjust the config to use the right parent image
sed -i "s|parent_image:.*|parent_image: \"zenmldocker/prepare-release:quickstart-azure\"|" "configs/training_azure.yaml"
# Adjust the requirements to use the right zenml installation
sed -i 's|zenml\[server\]==[^[:space:]]*|git+https://github.com/zenml-io/zenml.git@${{ github.ref }}#egg=zenml[server]|g' requirements_azure.txt
pip install -r requirements_azure.txt
python run.py --model_type=t5-small
# Run the Quickstart on the GCP stack
- name: Run on GCP
run: |-
cd examples/quickstart
zenml stack set gcp
# Adjust the config to use the right parent image
sed -i "s|parent_image:.*|parent_image: \"zenmldocker/prepare-release:quickstart-gcp\"|" "configs/training_gcp.yaml"
# Adjust the requirements to use the right zenml installation
sed -i 's|zenml\[server\]==[^[:space:]]*|git+https://github.com/zenml-io/zenml.git@${{ github.ref }}#egg=zenml[server]|g' requirements_gcp.txt
pip install -r requirements_gcp.txt
python run.py --model_type=t5-small