Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

feat: Load Python version from .python-version file #34

Merged
merged 8 commits into from
Oct 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions .github/workflows/development-environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
pull_request:

jobs:
bootstrap:
fast-bootstrap:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Later on we can add caches and let the slow one take its time.

runs-on: macos-11
timeout-minutes: 45
env:
Expand All @@ -18,10 +18,34 @@ jobs:
- uses: actions/checkout@v2

- name: Execute bootstrap
env:
STRAP_DEBUG: 1
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is useful in case there's a failure so we can see what command failed.

# This enables iterating faster in the CI:
# - Only install required libraries rather than brew bundle
# - Skip updating Homebrew
QUICK: 1
run: |
./bootstrap.sh

# We can run a second time w/o anything breaking
slow-bootstrap:
runs-on: macos-11
timeout-minutes: 45
env:
PIP_DISABLE_PIP_VERSION_CHECK: on
# Make the environment more similar to what Mac defaults to
SHELL: /bin/zsh

steps:
- uses: actions/checkout@v2

- name: Execute bootstrap
env:
STRAP_DEBUG: 1
run: |
./bootstrap.sh

# This is import for assuring engineers that they can run the code once
# again if something where to fail
- name: Second run
run: |
./bootstrap.sh
15 changes: 5 additions & 10 deletions bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -432,14 +432,15 @@ ensure_docker_server() {
# Install required libraries of dir ($1)
install_prerequisites() {
if [ -d "$1" ]; then
log "Installing from sentry Brewfile (very slow)"
if [ -z "$QUICK" ]; then
log "Installing from sentry Brewfile (very slow)"
# This makes sure that we don't try to install Python packages from the cache
# This is useful when verifying a new platform and multiple executions of bootstrap.sh is required
export PIP_NO_CACHE_DIR=on
# The fallback is useful when trying to run the script on a non-clean machine multiple times
cd "$1" && (make prerequisites || log "Something failed during brew bundle but let's try to continue")
else
log "Installing minimal set of requirements"
export HOMEBREW_NO_AUTO_UPDATE=on
brew install libxmlsec1 pyenv
brew install --cask docker
Expand Down Expand Up @@ -577,7 +578,7 @@ sudo_refresh
# Before starting, get the user's code location root where we will clone sentry repos to
get_code_root_path

[ -z "$CI" ] && check_github_access
[ -z "$CI" ] && [ -z "$QUICK" ] && check_github_access
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's actually a slow step!


[ "$USER" = "root" ] && abort "Run as yourself, not root."
groups | grep $Q -E "\b(admin)\b" || abort "Add $USER to the admin group."
Expand All @@ -587,7 +588,7 @@ caffeinate -s -w $$ &

install_xcode_cli
xcode_license
install_homebrew
[ -z "$QUICK" ] && install_homebrew

### Sentry stuff ###
SENTRY_ROOT="$CODE_ROOT/sentry"
Expand All @@ -605,17 +606,11 @@ install_prerequisites "$SENTRY_ROOT"
setup_pyenv "$SENTRY_ROOT"
# Run it here to make sure pyenv's Python is selected
eval "$(pyenv init --path)"
# shellcheck disable=SC2155
export PYENV_VERSION=$(
# shellcheck disable=SC1090 disable=SC1091
source "${SENTRY_ROOT}/scripts/lib.sh"
get-pyenv-version
)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the actual fix.

setup_virtualenv "$SENTRY_ROOT"
install_sentry_env_vars

# Sadly, there's not much left to test on Macs. Perhaps, in the future, we can test on Linux
[ -n "$CI" ] && exit 0
[ -n "$CI" ] && STRAP_SUCCESS=1 && exit 0

install_volta

Expand Down