Skip to content

bump version to 10.19 #5150

bump version to 10.19

bump version to 10.19 #5150

Workflow file for this run

# Copyright (c) 2020, Massachusetts Institute of Technology.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
---
name: CI
on:
pull_request:
types:
- opened
- reopened
- synchronize
pull_request_target:
types:
- opened
- reopened
- synchronize
- labeled
push:
branches:
- master
schedule:
- cron: '0 8 * * *'
jobs:
# First job: Check if we should run tests with solutions
check-approval:
name: Check PR approval status
runs-on: ubuntu-latest
if: github.event_name == 'pull_request_target'
outputs:
should-run: ${{ steps.check.outputs.should-run }}
is-trusted: ${{ steps.check.outputs.is-trusted }}
steps:
- name: Check approval status
id: check
run: |
# Check if this is a trusted contributor
if [[ "${{ github.event.pull_request.author_association }}" == "COLLABORATOR" ]] || \
[[ "${{ github.event.pull_request.author_association }}" == "MEMBER" ]] || \
[[ "${{ github.event.pull_request.author_association }}" == "OWNER" ]]; then
echo "is-trusted=true" >> $GITHUB_OUTPUT
echo "should-run=true" >> $GITHUB_OUTPUT
echo "✅ Trusted contributor - running tests automatically"
elif [[ "${{ contains(github.event.pull_request.labels.*.name, 'approved-for-ci') }}" == "true" ]]; then
echo "is-trusted=false" >> $GITHUB_OUTPUT
echo "should-run=true" >> $GITHUB_OUTPUT
echo "✅ First-time contributor approved via label - running tests"
else
echo "is-trusted=false" >> $GITHUB_OUTPUT
echo "should-run=false" >> $GITHUB_OUTPUT
echo "⏳ First-time contributor - waiting for maintainer approval"
echo "To approve this PR for CI, add the 'approved-for-ci' label"
fi
noble:
name: ubuntu 24.04 noble
runs-on: ubuntu-24.04
container: ubuntu:24.04
needs: [check-approval]
if: >
(github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target')
steps:
- name: pre-checkout setup
run: |
export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 DEBIAN_FRONTEND=noninteractive
apt-get update -o APT::Acquire::Retries=4 -qq
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends ca-certificates gnupg
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E1DD270288B4E6030699E45FA1715D88E1DF1F24
echo 'deb http://ppa.launchpad.net/git-core/ppa/ubuntu noble main' > /etc/apt/sources.list.d/git.list
apt-get update -o APT::Acquire::Retries=4 -qq
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends git
rm -rf /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin /var/lib/apt/lists/* /var/log/apt/*
shell: bash
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: checkout solutions
run: |
git clone https://x-access-token:${{ secrets.SOLUTIONS_TOKEN }}@github.com/RobotLocomotion/manipulation-solutions.git solutions
cd solutions && git checkout $(cat ../solutions_sha.txt) && cd ..
shell: bash
- name: setup and build
run: |
./setup/submodule_checkout
./setup/ubuntu/24.04/install_prereqs.sh
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends xvfb
rm -rf /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin /var/lib/apt/lists/* /var/log/apt/*
# Run bazel operations as root (Python 3.12 via .bazelrc linux config)
bazel fetch //...
bazel run //manipulation:prefetch_remotes
shell: bash
# - name: Check disk space
# run: |
# dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head
# df . -h
# du /usr/ -hx -d 4 --threshold=1G | sort -hr | head
# shell: bash
- name: test
run: ./book/htmlbook/workflows/ci/noble/test
shell: bash
sonoma:
name: macos sonoma 14
runs-on: macos-14
needs: [check-approval]
if: >
(github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target')
steps:
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: checkout solutions
run: |
git clone https://x-access-token:${{ secrets.SOLUTIONS_TOKEN }}@github.com/RobotLocomotion/manipulation-solutions.git solutions
cd solutions && git checkout $(cat ../solutions_sha.txt) && cd ..
shell: zsh -efuo pipefail {0}
- name: submodule checkout
run: ./setup/submodule_checkout
shell: zsh -efuo pipefail {0}
- name: setup
run: |
./book/htmlbook/workflows/ci/sonoma/setup
bazel run //manipulation:prefetch_remotes
shell: zsh -efuo pipefail {0}
- name: test
run: ./book/htmlbook/workflows/ci/sonoma/test
shell: zsh -efuo pipefail {0}
lint:
runs-on: ubuntu-latest
needs: [check-approval]
if: >
(github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target')
steps:
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout repo
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: black
uses: psf/black@stable
with:
version: 24.10.0
jupyter: true
- name: isort
uses: isort/isort-action@master
with:
configuration: "--profile black --check-only"
isort-version: 5.12.0
- name: autoflake
uses: creyD/autoflake_action@master
with:
options: --remove-all-unused-imports --in-place
# Pegging version s.t. https://github.com/creyD/autoflake_action/issues/1
- name: Install and configure Poetry
uses: snok/install-poetry@v1
with:
version: 2.1.4
virtualenvs-create: true
virtualenvs-in-project: true
- name: build the docs
run: |
poetry install --only docs
source .venv/bin/activate
sphinx-build -M html manipulation book/python
shell: bash
- name: Test full poetry install
run: poetry install
# The following jobs rely on the pip wheels being up to date. They can be disabled for a PR by adding the "requires new pip wheels" label.
docker:
name: dockerfile
runs-on: ubuntu-latest
needs: [check-approval]
if: >
((github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target'))
&&
!contains(github.event.pull_request.labels.*.name, 'requires new pip wheels')
container: russtedrake/manipulation:latest
steps:
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: checkout solutions
run: |
git clone https://x-access-token:${{ secrets.SOLUTIONS_TOKEN }}@github.com/RobotLocomotion/manipulation-solutions.git solutions
cd solutions && git checkout $(cat ../solutions_sha.txt) && cd ..
shell: bash
- name: setup
run: |
apt-get update -o APT::Acquire::Retries=4 -qq
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends python3-pip git xvfb
./setup/submodule_checkout
# Note: we **don't** reinstall drake's dependencies here. If we need
# to do that, we should update our docker image.
# Install manipulation via pip (to mimic student experience)
# Use --break-system-packages to handle externally managed environment
# Only install manipulation[all] to avoid conflicts with system packages
pip install --upgrade manipulation[all] --extra-index-url https://drake-packages.csail.mit.edu/whl/nightly/ --break-system-packages
shell: bash
- name: test
run: |
./book/htmlbook/workflows/ci/noble/test_wheels
shell: bash
noble-pip-core:
# This should emulate a student's experience if they are doing exercises
# via pip install manipulation.
name: pip notebooks on noble
runs-on: ubuntu-24.04
needs: [check-approval]
if: >
((github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target'))
&&
!contains(github.event.pull_request.labels.*.name, 'requires new pip wheels')
container: ubuntu:24.04
steps:
- name: pre-checkout setup
run: |
apt-get update -o APT::Acquire::Retries=4 -qq
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends python3-pip git xvfb
shell: bash
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: checkout solutions
run: |
git clone https://x-access-token:${{ secrets.SOLUTIONS_TOKEN }}@github.com/RobotLocomotion/manipulation-solutions.git solutions
cd solutions && git checkout $(cat ../solutions_sha.txt) && cd ..
shell: bash
- name: setup
run: |
./setup/submodule_checkout
# Install system dependencies for Drake
./setup/ubuntu/24.04/install_prereqs.sh
# Install manipulation via pip (to mimic student experience)
# Handle system package conflicts by using --ignore-installed for problematic packages
pip install manipulation jupyter nbconvert ipykernel --extra-index-url https://drake-packages.csail.mit.edu/whl/nightly/ --break-system-packages --ignore-installed traitlets
shell: bash
- name: test
run: |
# The manipulation library needs be robust against partial
# installations, but the examples will assume a full installation. So
# we test only the manipulation library here.
./book/htmlbook/workflows/ci/noble/test_wheels --core-library-only
shell: bash
noble-pip-extra:
# This should emulate a student's experience if they are doing exercises
# via pip install manipulation[all].
name: pip extra on noble
runs-on: ubuntu-24.04
needs: [check-approval]
if: >
((github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
||
(github.event_name == 'pull_request_target' &&
needs.check-approval.outputs.should-run == 'true')
||
(github.event_name != 'pull_request' &&
github.event_name != 'pull_request_target'))
&&
!contains(github.event.pull_request.labels.*.name, 'requires new pip wheels')
container: ubuntu:24.04
steps:
- name: pre-checkout setup
run: |
apt-get update -o APT::Acquire::Retries=4 -qq
apt-get install -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 -qy --no-install-recommends python3-pip git xvfb
shell: bash
# For pull_request_target: carefully checkout PR code excluding .github/
- name: checkout PR code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
sparse-checkout: |
*
!.github
sparse-checkout-cone-mode: false
# For regular events: normal checkout
- name: checkout
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v4
- name: checkout solutions
run: |
git clone https://x-access-token:${{ secrets.SOLUTIONS_TOKEN }}@github.com/RobotLocomotion/manipulation-solutions.git solutions
cd solutions && git checkout $(cat ../solutions_sha.txt) && cd ..
shell: bash
- name: setup
run: |
./setup/submodule_checkout
# Install system dependencies for Drake
./setup/ubuntu/24.04/install_prereqs.sh
# Install manipulation via pip (to mimic student experience)
# Handle system package conflicts by using --ignore-installed for problematic packages
pip install manipulation[all] jupyter nbconvert ipykernel --extra-index-url https://drake-packages.csail.mit.edu/whl/nightly/ --break-system-packages --ignore-installed traitlets
shell: bash
- name: test
run: |
./book/htmlbook/workflows/ci/noble/test_wheels
shell: bash