new workflow new script [build] #9
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 | ||
push: | ||
branches: [misc/prepare-release-*] | ||
env: | ||
ZENML_ANALYTICS_OPT_IN: false | ||
jobs: | ||
prepare-release: | ||
if: contains(github.event.head_commit.message, '[prepare]') # TODO: Remove | ||
&& github.repository == 'zenml-io/zenml' | ||
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 | ||
&& github.repository == 'zenml-io/zenml' | ||
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 | ||
&& github.repository == 'zenml-io/zenml' | ||
env: | ||
TENANT_URL: ${{ secrets.TENANT_URL }} | ||
SERVICE_ACCOUNT_API_KEY: ${{ secrets.SERVICE_ACCOUNT_API_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: | ||
STAGING_CLIENT_ID: ${{ secrets.STAGING_CLIENT_ID }} | ||
STAGING_CLIENT_SECRET: ${{ secrets.STAGING_CLIENT_SECRET }} | ||
TENANT_ID: ${{ secrets.TENANT_ID }} | ||
run: python .github/scripts/tenant_management.py | ||
- name: Test | ||
run: zenml stack list | ||
# # TODO: Change the config somewhere here | ||
# - name: Run on AWS | ||
# run: | | ||
# zenml stack set aws | ||
# python run.py --model_type=t5-small | ||
# - name: Run on GCP | ||
# run: | | ||
# zenml stack set gcp | ||
# python run.py --model_type=t5-small | ||
# - name: Run on Azure | ||
# run: |- | ||
# zenml stack set azure | ||
# python run.py --model_type=t5-small |