Skip to content

release-prepare

release-prepare #5

Workflow file for this run

---
name: release-prepare
on:
workflow_dispatch:
create:
branches: [misc/prepare-release-*]
env:
ZENML_ANALYTICS_OPT_IN: false
jobs:
prepare-changes:
if: github.repository == 'zenml-io/zenml'
runs-on: ubuntu-latest
steps:
# Check out the code
- name: Checkout code
uses: actions/[email protected]
# Configure Git
- name: Configure git
shell: bash
run: |
git config --global user.email "[email protected]"
git config --global user.name "ZenML GmbH"
# Extract the new version form the branch name
- name: Extract version from branch name
run: |
BRANCH_NAME=${GITHUB_REF#refs/heads/}
NEW_VERSION=${BRANCH_NAME#misc/prepare-release-}
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
# Validate the new version
- name: Validate new version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
scripts/validate-new-version.sh ${{ env.NEW_VERSION }}
# Send a message to Discord to alert everyone for the release
- name: Send message to Discord
run: |
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"content": "[Prepare Release PR](${{ env.PR_URL }}) opened by @${{ env.PR_AUTHOR }}.\n\n@growth and @product, please do not merge anything to develop until the process is completed.",
"thread_name": "Preparing release: ${{ env.NEW_VERSION }}"
}' \
${{ secrets.DISCORD_WEBHOOK_RELEASE }}
# Set up Python
- name: Set up Python
uses: actions/[email protected]
with:
python-version: '3.12'
# 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
# Alembic migration file
- name: Run Alembic merge
shell: bash
run: |
alembic merge -m "Release" heads --rev-id ${{ env.NEW_VERSION }}
scripts/format.sh
git add src/zenml/zen_stores/migrations/versions
# Update the README, pyproject.toml, version and helm files
- name: Update main files
run: |
OLD_VERSION=$(cat src/zenml/VERSION)
echo "OLD_VERSION=$OLD_VERSION" >> $GITHUB_ENV
sed -i "s/${{ env.OLD_VERSION }}/${{ env.NEW_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
# 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 ${{ env.OLD_VERSION }} --arg NEW ${{ env.NEW_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/${{ env.OLD_VERSION }}/${{ env.NEW_VERSION }}/g" "$file"
fi
done
git add examples/quickstart
# 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.NEW_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
# Push the changes
- name: Push the changes
run: |
git commit -m "Adding the new version to the necessary files."
git push origin HEAD:${{ github.event.pull_request.head.ref }}
build-test-images:
runs-on: ubuntu-latest
needs: prepare-changes
permissions:
contents: read
id-token: write
steps:
# Check out the prepare-release branch
- name: Checkout code
uses: actions/[email protected]
# Extract the new version form the branch name
- name: Extract version from branch name
run: |
BRANCH_NAME=${GITHUB_REF#refs/heads/}
NEW_VERSION=${BRANCH_NAME#misc/prepare-release-}
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
# 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.event.pull_request.head.ref }} \
--substitutions=_NEW_VERSION=${{ env.NEW_VERSION }}
# 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-${{ env.NEW_VERSION }}
- name: Push quickstart image to ECR
run: |
docker tag zenmldocker/prepare-release:quickstart-aws-${{ env.NEW_VERSION }} 715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws-${{ env.NEW_VERSION }}
docker push 715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws-${{ env.NEW_VERSION }}
setup-prep-release-tenant:
needs: build-test-images
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 Python
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.12'
# Install requests
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests
# Extract the new version form the branch name
- name: Extract version from branch name
run: |
BRANCH_NAME=${GITHUB_REF#refs/heads/}
NEW_VERSION=${BRANCH_NAME#misc/prepare-release-}
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
# Deactivate and redeploy 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 }}
ZENML_NEW_VERSION: ${{ env.NEW_VERSION }}
run: python scripts/redeploy-release-prep-tenant.py
run_quickstart_pipelines:
needs: setup-prep-release-tenant
runs-on: ubuntu-latest
env:
ZENML_STORE_URL: ${{ secrets.RELEASE_TENANT_URL }}
ZENML_STORE_API_KEY: ${{ secrets.RELEASE_TENANT_SERVICE_ACCOUNT_KEY }}
strategy:
fail-fast: false
matrix:
include:
- cloud: aws
parent_image: 715803424590.dkr.ecr.eu-central-1.amazonaws.com/prepare-release:quickstart-aws-${{ env.NEW_VERSION }}

Check failure on line 193 in .github/workflows/release_prepare.yml

View workflow run for this annotation

GitHub Actions / release-prepare

Invalid workflow file

The workflow is not valid. .github/workflows/release_prepare.yml (Line: 193, Col: 27): Unrecognized named-value: 'env'. Located at position 1 within expression: env.NEW_VERSION .github/workflows/release_prepare.yml (Line: 195, Col: 27): Unrecognized named-value: 'env'. Located at position 1 within expression: env.NEW_VERSION
- cloud: azure
parent_image: zenmldocker/prepare-release:quickstart-azure${{ env.NEW_VERSION }}-${{
env.NEW_VERSION }}
- cloud: gcp
parent_image: zenmldocker/prepare-release:quickstart-gcp-${{ env.NEW_VERSION }}
steps:
# Check out the code
- name: Checkout code
uses: actions/[email protected]
# Setting up Python
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.12'
# Extract the new version form the branch name
- name: Extract version from branch name
run: |
BRANCH_NAME=${GITHUB_REF#refs/heads/}
NEW_VERSION=${BRANCH_NAME#misc/prepare-release-}
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
# ZenML Integrations
- name: Install ZenML and the required integrations
run: |
scripts/install-zenml-dev.sh --system --integrations "no"
# Run the Quickstart pipeline
- name: Run on ${{ matrix.cloud }}
run: |-
cd examples/quickstart
zenml stack set ${{ matrix.cloud }}
sed -i "s|parent_image:.*|parent_image: \"${{ matrix.parent_image }}\"|" "configs/training_${{ matrix.cloud }}.yaml"
sed -i 's|zenml\[server\]==[^[:space:]]*|git+https://github.com/zenml-io/zenml.git@${{ github.event.pull_request.head.ref }}#egg=zenml[server]|g' requirements_${{ matrix.cloud }}.txt
pip install -r requirements_${{ matrix.cloud }}.txt
zenml integration install ${{ matrix.cloud }} -y
python run.py --model_type=t5-small