Skip to content

Prepare 2.20.0 (#20791) #202

Prepare 2.20.0 (#20791)

Prepare 2.20.0 (#20791) #202

Workflow file for this run

# GENERATED, DO NOT EDIT!
# To change, edit `src/python/pants_release/generate_github_workflows.py` and run:
# ./pants run src/python/pants_release/generate_github_workflows.py
jobs:
build_wheels_linux_arm64:
container:
image: ghcr.io/pantsbuild/wheel_build_aarch64:v3-8384c5cf
env:
PANTS_REMOTE_CACHE_READ: 'false'
PANTS_REMOTE_CACHE_WRITE: 'false'
if: github.repository_owner == 'pantsbuild'
name: Build wheels (Linux-ARM64)
needs:
- release_info
runs-on:
- self-hosted
- Linux
- ARM64
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 10
ref: ${{ needs.release_info.outputs.build-ref }}
- name: Configure Git
run: git config --global safe.directory "$GITHUB_WORKSPACE"
- name: Install rustup
run: 'curl --proto ''=https'' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s --
-v -y --default-toolchain none
echo "${HOME}/.cargo/bin" >> $GITHUB_PATH
'
- name: Expose Pythons
run: 'echo "/opt/python/cp37-cp37m/bin" >> $GITHUB_PATH
echo "/opt/python/cp38-cp38/bin" >> $GITHUB_PATH
echo "/opt/python/cp39-cp39/bin" >> $GITHUB_PATH
'
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- env:
PANTS_CONFIG_FILES: +['pants.ci.toml','pants.ci.aarch64.toml']
name: Build wheels
run: ./pants run src/python/pants_release/release.py -- build-wheels
- env:
PANTS_CONFIG_FILES: +['pants.ci.toml','pants.ci.aarch64.toml']
name: Build Pants PEX
run: ./pants package src/python/pants:pants-pex
- continue-on-error: true
if: always()
name: Upload pants.log
uses: actions/upload-artifact@v3
with:
name: logs-wheels-and-pex-Linux-ARM64
path: .pants.d/workdir/*.log
- if: needs.release_info.outputs.is-release == 'true'
name: Upload Wheel and Pex
run: "PANTS_VER=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"\
import pants.version;print(pants.version.VERSION)\")\nPY_VER=$(PEX_INTERPRETER=1\
\ dist/src.python.pants/pants-pex.pex -c \"import sys;print(f'cp{sys.version_info[0]}{sys.version_info[1]}')\"\
)\nPLAT=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"import\
\ os;print(f'{os.uname().sysname.lower()}_{os.uname().machine.lower()}')\"\
)\nPEX_FILENAME=pants.$PANTS_VER-$PY_VER-$PLAT.pex\n\nmv dist/src.python.pants/pants-pex.pex\
\ dist/src.python.pants/$PEX_FILENAME\n\ncurl -L --fail \\\n -X POST \\\
\n -H \"Authorization: Bearer ${{ github.token }}\" \\\n -H \"Content-Type:\
\ application/octet-stream\" \\\n ${{ needs.release_info.outputs.release-asset-upload-url\
\ }}?name=$PEX_FILENAME \\\n --data-binary \"@dist/src.python.pants/$PEX_FILENAME\"\
\n\nWHL=$(find dist/deploy/wheels/pantsbuild.pants -type f -name \"pantsbuild.pants-*.whl\"\
)\ncurl -L --fail \\\n -X POST \\\n -H \"Authorization: Bearer ${{ github.token\
\ }}\" \\\n -H \"Content-Type: application/octet-stream\" \\\n \"${{\
\ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\
\ \\\n --data-binary \"@$WHL\";\n"
timeout-minutes: 90
build_wheels_linux_x86_64:
container:
image: quay.io/pypa/manylinux2014_x86_64:latest
env:
PANTS_REMOTE_CACHE_READ: 'false'
PANTS_REMOTE_CACHE_WRITE: 'false'
if: github.repository_owner == 'pantsbuild'
name: Build wheels (Linux-x86_64)
needs:
- release_info
runs-on:
- ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 10
ref: ${{ needs.release_info.outputs.build-ref }}
- name: Configure Git
run: git config --global safe.directory "$GITHUB_WORKSPACE"
- name: Install rustup
run: 'curl --proto ''=https'' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s --
-v -y --default-toolchain none
echo "${HOME}/.cargo/bin" >> $GITHUB_PATH
'
- name: Expose Pythons
run: 'echo "/opt/python/cp37-cp37m/bin" >> $GITHUB_PATH
echo "/opt/python/cp38-cp38/bin" >> $GITHUB_PATH
echo "/opt/python/cp39-cp39/bin" >> $GITHUB_PATH
'
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.19.5
- env:
PANTS_PROCESS_EXECUTION_LOCAL_PARALLELISM: '1'
name: Build wheels
run: ./pants run src/python/pants_release/release.py -- build-wheels
- env:
PANTS_PROCESS_EXECUTION_LOCAL_PARALLELISM: '1'
name: Build Pants PEX
run: ./pants package src/python/pants:pants-pex
- continue-on-error: true
if: always()
name: Upload pants.log
uses: actions/upload-artifact@v3
with:
name: logs-wheels-and-pex-Linux-x86_64
path: .pants.d/workdir/*.log
- if: needs.release_info.outputs.is-release == 'true'
name: Upload Wheel and Pex
run: "PANTS_VER=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"\
import pants.version;print(pants.version.VERSION)\")\nPY_VER=$(PEX_INTERPRETER=1\
\ dist/src.python.pants/pants-pex.pex -c \"import sys;print(f'cp{sys.version_info[0]}{sys.version_info[1]}')\"\
)\nPLAT=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"import\
\ os;print(f'{os.uname().sysname.lower()}_{os.uname().machine.lower()}')\"\
)\nPEX_FILENAME=pants.$PANTS_VER-$PY_VER-$PLAT.pex\n\nmv dist/src.python.pants/pants-pex.pex\
\ dist/src.python.pants/$PEX_FILENAME\n\ncurl -L --fail \\\n -X POST \\\
\n -H \"Authorization: Bearer ${{ github.token }}\" \\\n -H \"Content-Type:\
\ application/octet-stream\" \\\n ${{ needs.release_info.outputs.release-asset-upload-url\
\ }}?name=$PEX_FILENAME \\\n --data-binary \"@dist/src.python.pants/$PEX_FILENAME\"\
\n\nWHL=$(find dist/deploy/wheels/pantsbuild.pants -type f -name \"pantsbuild.pants-*.whl\"\
)\ncurl -L --fail \\\n -X POST \\\n -H \"Authorization: Bearer ${{ github.token\
\ }}\" \\\n -H \"Content-Type: application/octet-stream\" \\\n \"${{\
\ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\
\ \\\n --data-binary \"@$WHL\";\n"
- if: needs.release_info.outputs.is-release == 'true'
name: Upload testutil Wheel
run: "WHL=$(find dist/deploy/wheels/pantsbuild.pants -type f -name \"pantsbuild.pants.testutil*.whl\"\
)\ncurl -L --fail \\\n -X POST \\\n -H \"Authorization: Bearer ${{ github.token\
\ }}\" \\\n -H \"Content-Type: application/octet-stream\" \\\n \"${{\
\ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\
\ \\\n --data-binary \"@$WHL\";\n"
timeout-minutes: 90
build_wheels_macos10_15_x86_64:
env:
PANTS_REMOTE_CACHE_READ: 'false'
PANTS_REMOTE_CACHE_WRITE: 'false'
if: github.repository_owner == 'pantsbuild'
name: Build wheels (macOS10-15-x86_64)
needs:
- release_info
runs-on:
- self-hosted
- macOS-10.15-X64
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 10
ref: ${{ needs.release_info.outputs.build-ref }}
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Set rustup profile
run: rustup set profile default
- name: Cache Rust toolchain
uses: actions/cache@v3
with:
key: macOS10-15-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain')
}}-v2
path: '~/.rustup/toolchains/1.75.0-*
~/.rustup/update-hashes
~/.rustup/settings.toml
'
- name: Cache Cargo
uses: benjyw/rust-cache@461b9f8eee66b575bce78977bf649b8b7a8d53f1
with:
cache-bin: 'false'
shared-key: engine
workspaces: src/rust/engine
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.19.5
- env:
ARCHFLAGS: -arch x86_64
name: Build wheels
run: ./pants run src/python/pants_release/release.py -- build-wheels
- env:
ARCHFLAGS: -arch x86_64
name: Build Pants PEX
run: ./pants package src/python/pants:pants-pex
- continue-on-error: true
if: always()
name: Upload pants.log
uses: actions/upload-artifact@v3
with:
name: logs-wheels-and-pex-macOS10-15-x86_64
path: .pants.d/workdir/*.log
- if: needs.release_info.outputs.is-release == 'true'
name: Upload Wheel and Pex
run: "PANTS_VER=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"\
import pants.version;print(pants.version.VERSION)\")\nPY_VER=$(PEX_INTERPRETER=1\
\ dist/src.python.pants/pants-pex.pex -c \"import sys;print(f'cp{sys.version_info[0]}{sys.version_info[1]}')\"\
)\nPLAT=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"import\
\ os;print(f'{os.uname().sysname.lower()}_{os.uname().machine.lower()}')\"\
)\nPEX_FILENAME=pants.$PANTS_VER-$PY_VER-$PLAT.pex\n\nmv dist/src.python.pants/pants-pex.pex\
\ dist/src.python.pants/$PEX_FILENAME\n\ncurl -L --fail \\\n -X POST \\\
\n -H \"Authorization: Bearer ${{ github.token }}\" \\\n -H \"Content-Type:\
\ application/octet-stream\" \\\n ${{ needs.release_info.outputs.release-asset-upload-url\
\ }}?name=$PEX_FILENAME \\\n --data-binary \"@dist/src.python.pants/$PEX_FILENAME\"\
\n\nWHL=$(find dist/deploy/wheels/pantsbuild.pants -type f -name \"pantsbuild.pants-*.whl\"\
)\ncurl -L --fail \\\n -X POST \\\n -H \"Authorization: Bearer ${{ github.token\
\ }}\" \\\n -H \"Content-Type: application/octet-stream\" \\\n \"${{\
\ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\
\ \\\n --data-binary \"@$WHL\";\n"
timeout-minutes: 90
build_wheels_macos11_arm64:
env:
PANTS_REMOTE_CACHE_READ: 'false'
PANTS_REMOTE_CACHE_WRITE: 'false'
if: github.repository_owner == 'pantsbuild'
name: Build wheels (macOS11-ARM64)
needs:
- release_info
runs-on:
- self-hosted
- macOS-11-ARM64
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 10
ref: ${{ needs.release_info.outputs.build-ref }}
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Set rustup profile
run: rustup set profile default
- name: Cache Rust toolchain
uses: actions/cache@v3
with:
key: macOS11-ARM64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain')
}}-v2
path: '~/.rustup/toolchains/1.75.0-*
~/.rustup/update-hashes
~/.rustup/settings.toml
'
- name: Cache Cargo
uses: benjyw/rust-cache@461b9f8eee66b575bce78977bf649b8b7a8d53f1
with:
cache-bin: 'false'
shared-key: engine
workspaces: src/rust/engine
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.19.5
- env:
ARCHFLAGS: -arch arm64
name: Build wheels
run: ./pants run src/python/pants_release/release.py -- build-wheels
- env:
ARCHFLAGS: -arch arm64
name: Build Pants PEX
run: ./pants package src/python/pants:pants-pex
- continue-on-error: true
if: always()
name: Upload pants.log
uses: actions/upload-artifact@v3
with:
name: logs-wheels-and-pex-macOS11-ARM64
path: .pants.d/workdir/*.log
- if: needs.release_info.outputs.is-release == 'true'
name: Upload Wheel and Pex
run: "PANTS_VER=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"\
import pants.version;print(pants.version.VERSION)\")\nPY_VER=$(PEX_INTERPRETER=1\
\ dist/src.python.pants/pants-pex.pex -c \"import sys;print(f'cp{sys.version_info[0]}{sys.version_info[1]}')\"\
)\nPLAT=$(PEX_INTERPRETER=1 dist/src.python.pants/pants-pex.pex -c \"import\
\ os;print(f'{os.uname().sysname.lower()}_{os.uname().machine.lower()}')\"\
)\nPEX_FILENAME=pants.$PANTS_VER-$PY_VER-$PLAT.pex\n\nmv dist/src.python.pants/pants-pex.pex\
\ dist/src.python.pants/$PEX_FILENAME\n\ncurl -L --fail \\\n -X POST \\\
\n -H \"Authorization: Bearer ${{ github.token }}\" \\\n -H \"Content-Type:\
\ application/octet-stream\" \\\n ${{ needs.release_info.outputs.release-asset-upload-url\
\ }}?name=$PEX_FILENAME \\\n --data-binary \"@dist/src.python.pants/$PEX_FILENAME\"\
\n\nWHL=$(find dist/deploy/wheels/pantsbuild.pants -type f -name \"pantsbuild.pants-*.whl\"\
)\ncurl -L --fail \\\n -X POST \\\n -H \"Authorization: Bearer ${{ github.token\
\ }}\" \\\n -H \"Content-Type: application/octet-stream\" \\\n \"${{\
\ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\
\ \\\n --data-binary \"@$WHL\";\n"
timeout-minutes: 90
publish:
env:
MODE: debug
if: github.repository_owner == 'pantsbuild' && needs.release_info.outputs.is-release
== 'true'
needs:
- build_wheels_linux_x86_64
- build_wheels_linux_arm64
- build_wheels_macos10_15_x86_64
- build_wheels_macos11_arm64
- release_info
runs-on: ubuntu-latest
steps:
- name: Checkout Pants at Release Tag
uses: actions/checkout@v3
with:
fetch-depth: '0'
fetch-tags: true
ref: ${{ needs.release_info.outputs.build-ref }}
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Expose Pythons
uses: pantsbuild/actions/expose-pythons@627a8ce25d972afa03da1641be9261bbbe0e3ffe
- name: Install Protoc
uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 23.x
- name: Set rustup profile
run: rustup set profile default
- name: Cache Rust toolchain
uses: actions/cache@v3
with:
key: Linux-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2
path: '~/.rustup/toolchains/1.75.0-*
~/.rustup/update-hashes
~/.rustup/settings.toml
'
- name: Cache Cargo
uses: benjyw/rust-cache@461b9f8eee66b575bce78977bf649b8b7a8d53f1
with:
cache-bin: 'false'
shared-key: engine
workspaces: src/rust/engine
- id: get-engine-hash
name: Get native engine hash
run: echo "hash=$(./build-support/bin/rust/print_engine_hash.sh)" >> $GITHUB_OUTPUT
shell: bash
- name: Cache native engine
uses: actions/cache@v3
with:
key: Linux-x86_64-engine-${{ steps.get-engine-hash.outputs.hash }}-v1
path: 'src/python/pants/bin/native_client
src/python/pants/engine/internals/native_engine.so
src/python/pants/engine/internals/native_engine.so.metadata'
- name: Generate announcement
run: './pants run src/python/pants_release/generate_release_announcement.py --
--output-dir=${{ runner.temp }}
'
- env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
name: Announce to Slack
uses: slackapi/slack-github-action@v1.24.0
with:
channel-id: C18RRR4JK
payload-file-path: ${{ runner.temp }}/slack_announcement.json
- name: Announce to pants-devel
uses: dawidd6/action-send-mail@v3.8.0
with:
body: file://${{ runner.temp }}/email_announcement_body.md
connection_url: ${{ secrets.EMAIL_CONNECTION_URL }}
convert_markdown: true
from: Pants Announce
secure: true
subject: file://${{ runner.temp }}/email_announcement_subject.txt
to: pants-devel@googlegroups.com
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
name: Get release notes
run: './pants run src/python/pants_release/changelog.py -- "${{ needs.release_info.outputs.build-ref
}}" > notes.txt
'
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
name: Publish GitHub Release
run: 'gh release edit ${{ needs.release_info.outputs.build-ref }} --draft=false
--notes-file notes.txt
'
- env:
GH_TOKEN: ${{ secrets.WORKER_PANTS_CHEESESHOP_TRIGGER_PAT }}
name: Trigger cheeseshop build
run: 'gh api -X POST "/repos/pantsbuild/wheels.pantsbuild.org/dispatches" -F
event_type=github-pages
'
- env:
GH_TOKEN: ${{ secrets.WORKER_PANTS_PANTSBUILD_ORG_TRIGGER_PAT }}
if: needs.release_info.outputs.is-release == 'true'
name: Trigger docs sync
run: 'RELEASE_TAG=${{ needs.release_info.outputs.build-ref }}
RELEASE_VERSION="${RELEASE_TAG#release_}"
gh workflow run sync_docs.yml -F "version=$RELEASE_VERSION" -F "reviewer=${{
github.actor }}" -R pantsbuild/pantsbuild.org
'
release_info:
if: github.repository_owner == 'pantsbuild'
name: Create draft release and output info
outputs:
build-ref: ${{ steps.get_info.outputs.build-ref }}
is-release: ${{ steps.get_info.outputs.is-release }}
release-asset-upload-url: ${{ steps.make_draft_release.outputs.release-asset-upload-url
}}
runs-on: ubuntu-latest
steps:
- env:
REF: ${{ github.event.inputs.ref }}
id: get_info
name: Determine ref to build
run: "if [[ -n \"$REF\" ]]; then\n ref=\"$REF\"\nelse\n ref=\"${GITHUB_REF#refs/tags/}\"\
\nfi\necho \"build-ref=${ref}\" >> $GITHUB_OUTPUT\nif [[ \"${ref}\" =~ ^release_.+$\
\ ]]; then\n echo \"is-release=true\" >> $GITHUB_OUTPUT\nfi\n"
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
id: make_draft_release
if: github.repository_owner == 'pantsbuild' && steps.get_info.outputs.is-release
== 'true'
name: Make GitHub Release
run: "RELEASE_TAG=${{ steps.get_info.outputs.build-ref }}\nRELEASE_VERSION=\"\
${RELEASE_TAG#release_}\"\n\n# NB: This could be a re-run of a release, in\
\ the event a job/step failed.\nif ! gh release view $RELEASE_TAG ; then\n\
\ GH_RELEASE_ARGS=(\"--notes\" \"\")\n GH_RELEASE_ARGS+=(\"--title\"\
\ \"$RELEASE_TAG\")\n if [[ $RELEASE_VERSION =~ [[:alpha:]] ]]; then\n\
\ GH_RELEASE_ARGS+=(\"--prerelease\")\n GH_RELEASE_ARGS+=(\"\
--latest=false\")\n else\n STABLE_RELEASE_TAGS=$(gh api -X GET -F\
\ per_page=100 /repos/{owner}/{repo}/releases --jq '.[].tag_name | sub(\"\
^release_\"; \"\") | select(test(\"^[0-9.]+$\"))')\n LATEST_TAG=$(echo\
\ \"$STABLE_RELEASE_TAGS $RELEASE_TAG\" | tr ' ' '\\n' | sort --version-sort\
\ | tail -n 1)\n if [[ $RELEASE_TAG == $LATEST_TAG ]]; then\n \
\ GH_RELEASE_ARGS+=(\"--latest=true\")\n else\n GH_RELEASE_ARGS+=(\"\
--latest=false\")\n fi\n fi\n\n gh release create \"$RELEASE_TAG\"\
\ \"${GH_RELEASE_ARGS[@]}\" --draft\nfi\n\nASSET_UPLOAD_URL=$(gh release view\
\ \"$RELEASE_TAG\" --json uploadUrl --jq '.uploadUrl | sub(\"\\\\{\\\\?.*$\"\
; \"\")')\necho \"release-asset-upload-url=$ASSET_UPLOAD_URL\" >> $GITHUB_OUTPUT\n"
name: Release
'on':
push:
tags:
- release_*
workflow_dispatch:
inputs:
ref:
required: true
type: string