CI #1964
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: CI | |
on: | |
schedule: | |
- cron: '30 9 * * *' # Pacific Time 01:30 AM in UTC | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- ready_for_review | |
- synchronize | |
paths-ignore: | |
- '**.md' | |
workflow_dispatch: | |
inputs: | |
PUBLISH: | |
type: boolean | |
description: Publish dated images and update the 'latest' tag? | |
default: false | |
required: false | |
BUMP_MANIFEST: | |
type: boolean | |
description: Bump git repos in manifest.yaml to head of tree? | |
default: false | |
required: false | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
permissions: | |
contents: write # to fetch code and push branch | |
actions: write # to cancel previous workflows | |
packages: write # to upload container | |
jobs: | |
metadata: | |
runs-on: ubuntu-22.04 | |
outputs: | |
BUILD_DATE: ${{ steps.date.outputs.BUILD_DATE }} | |
PUBLISH: ${{ steps.if-publish.outputs.PUBLISH }} | |
BUMP_MANIFEST: ${{ steps.manifest-branch.outputs.BUMP_MANIFEST }} | |
MANIFEST_BRANCH: ${{ steps.manifest-branch.outputs.MANIFEST_BRANCH }} | |
steps: | |
- name: Cancel workflow run if the trigger is a draft PR | |
id: cancel-if-draft | |
if: github.event_name == 'pull_request' && github.event.pull_request.draft == true | |
run: | | |
echo "Cancelling workflow for draft PR" | |
curl -X POST -H "Authorization: token ${{ github.token }}" \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
"https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel" | |
while true; do sleep 1; done # blocks execution in case workflow cancellation takes time | |
- name: Set build date | |
id: date | |
shell: bash -x -e {0} | |
run: | | |
BUILD_DATE=$(TZ='US/Los_Angeles' date '+%Y-%m-%d') | |
echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_OUTPUT | |
- name: Determine whether results will be 'published' | |
id: if-publish | |
shell: bash -x -e {0} | |
run: | | |
echo "PUBLISH=${{ github.event_name == 'schedule' || inputs.PUBLISH }}" >> $GITHUB_OUTPUT | |
- name: Set manifest branch name | |
id: manifest-branch | |
shell: bash -x -e {0} | |
run: | | |
# Prepend nightly manifest branch with "z" to make it appear at the end | |
if [[ "${{ github.event_name == 'schedule' || inputs.BUMP_MANIFEST }}" ]]; then | |
# This branch is for scheduled nightlies or manually run nightlies | |
echo "MANIFEST_BRANCH=znightly-${{ steps.date.outputs.BUILD_DATE }}-${{ github.run_id }}" | |
echo "BUMP_MANIFEST=true" | |
else | |
# This branch is for presubmits (no bumping needed) | |
echo "MANIFEST_BRANCH=${{ github.sha }}" | |
echo "BUMP_MANIFEST=false" | |
fi | tee -a $GITHUB_OUTPUT | |
maybe-bump-manifest: | |
name: ${{ needs.metadata.outputs.BUMP_MANIFEST == 'true' && 'bump-manifest' || 'no-bump-manifest' }} | |
needs: metadata | |
runs-on: ubuntu-22.04 | |
if: ${{ needs.metadata.outputs.BUMP_MANIFEST == 'true' }} | |
steps: | |
- name: Check out the repository under ${GITHUB_WORKSPACE} | |
uses: actions/checkout@v4 | |
- name: Update manifest and patches in-place - show diff | |
working-directory: .github/container | |
shell: bash -x -e {0} | |
run: | | |
bash bump.sh --input-manifest manifest.yaml | |
git diff | |
- name: Push manifest branch | |
shell: bash -x -e {0} | |
run: | | |
git config user.name "JAX-Toolbox CI" | |
git config user.email "[email protected]" | |
manifest_branch=${{ needs.metadata.outputs.MANIFEST_BRANCH }} | |
git switch -c $manifest_branch | |
git status | |
git add .github/container/patches/ | |
git status | |
git commit -a -m "Nightly Manifest Bump (${{ needs.metadata.outputs.BUILD_DATE }}) for run_id=${{ github.run_id }}: https://github.com/NVIDIA/JAX-Toolbox/actions/runs/${{ github.run_id }}" | |
git push --set-upstream origin $manifest_branch | |
amd64: | |
needs: [metadata, maybe-bump-manifest] | |
uses: ./.github/workflows/_ci_tmp.yaml | |
with: | |
ARCHITECTURE: amd64 | |
BUILD_DATE: ${{ needs.metadata.outputs.BUILD_DATE }} | |
BUMP_MANIFEST: ${{ needs.metadata.outputs.BUMP_MANIFEST == 'true' }} | |
secrets: inherit | |
arm64: | |
needs: [metadata, maybe-bump-manifest] | |
uses: ./.github/workflows/_ci_tmp.yaml | |
with: | |
ARCHITECTURE: arm64 | |
BUILD_DATE: ${{ needs.metadata.outputs.BUILD_DATE }} | |
BUMP_MANIFEST: ${{ needs.metadata.outputs.BUMP_MANIFEST == 'true' }} | |
secrets: inherit | |
# Only bump if everything succeeds | |
commit-new-manifest: | |
runs-on: ubuntu-22.04 | |
needs: | |
- metadata | |
- amd64 | |
- arm64 | |
steps: | |
- name: Creating PR for MANIFEST_BRANCH=${{ needs.metadata.outputs.MANIFEST_BRANCH }} | |
uses: octokit/[email protected] | |
with: | |
route: POST /repos/{owner_and_repo}/pulls | |
owner_and_repo: ${{ github.repository }} | |
head: ${{ needs.metadata.outputs.MANIFEST_BRANCH }} | |
base: main | |
body: | | |
https://github.com/NVIDIA/JAX-Toolbox/actions/runs/${{ github.run_id }} | |
title: Nightly Manifest Bump (${{ needs.metadata.outputs.BUILD_DATE }}) | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |