third full [test] run #24
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: 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 |