Skip to content

The git config -l command stopped working after upgrading to Bitbucket 8 #138

@gnustavo

Description

@gnustavo

I'm using External Hooks version 13.1.1 on Bitbucket Data Center, running in a container based on the atlassian/bitbucket:7.21.4 Docker image.

I upgraded Bitbucket, recreating the container based on the atlassian/bitbucket:8.9.4 image. After the upgrade, my external hooks stopped working.

I investigated and noticed that the external hook scripts are being invoked in an environment in which the command git config -l does not find the repository's configuration.

I made the hook script output its environment variables and current directory both before the upgrade and after it.

Before the upgrade, the hook script is invoked in the /var/atlassian/application-data/bitbucket/shared/data/repositories/2295 directory with the following environment variables (I replaced some sensitive parts with xxxxxxxx):

APPLICATION_MODE=default
APP_NAME=bitbucket
BB_BASE_URL=https://bitbucket.xxxxxxxx.br
BB_HOOK_TRIGGER_ID=push
BB_HOOK_TYPE=PRE
BB_IS_DRY_RUN=false
BB_PROJECT_KEY=GTIC
BB_REPO_CLONE_HTTP=https://bitbucket.xxxxxxxx.br/scm/gtic/cds.git
BB_REPO_CLONE_SSH=ssh://git\@bitbucket.xxxxxxxx.br:7999/gtic/cds.git
BB_REPO_IS_FORK=false
BB_REPO_IS_PUBLIC=false
BB_REPO_SLUG=cds
BB_USER_DISPLAY_NAME=Gustavo xxxxxxxx
BB_USER_EMAIL=gustavo\@xxxxxxxx.br
BB_USER_NAME=gustavo
BB_USER_PERMISSION=SYS_ADMIN
BIN_DIR=/opt/atlassian/bitbucket/bin
BITBUCKET_HOME=/var/atlassian/application-data/bitbucket
BITBUCKET_INSTALL_DIR=/opt/atlassian/bitbucket
BITBUCKET_USER=
FEATURE_PUBLIC_ACCESS=false
GIT_ALTERNATE_OBJECT_DIRECTORIES=/var/atlassian/application-data/bitbucket/shared/data/repositories/2295/./objects
GIT_OBJECT_DIRECTORY=/var/atlassian/application-data/bitbucket/shared/data/repositories/2295/./objects/incoming-m0PJSe
GIT_QUARANTINE_PATH=/var/atlassian/application-data/bitbucket/shared/data/repositories/2295/./objects/incoming-m0PJSe
HOME=/var/atlassian/application-data/bitbucket
HOSTNAME=9ca50b5dcc0a
INST_DIR=/opt/atlassian/bitbucket
JAVA_BINARY=/opt/java/openjdk/bin/java
JAVA_HOME=/opt/java/openjdk
JAVA_VERSION=11.0.20
JDBC_DRIVER=org.postgresql.Driver
JDBC_PASSWORD=xxxxxxxx
JDBC_URL=jdbc:postgresql://postgres:5432/bitbucket?targetServerType=master
JDBC_USER=bitbucket
JMX_ENABLED=false
JRE_HOME=/opt/java/openjdk
JVM_MAXIMUM_MEMORY=2G
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
LOGNAME=bitbucket
OLDPWD=/opt/atlassian/bitbucket/bin
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PLUGIN_SEARCH_CONFIG_BASEURL=http://opensearch:9200
PWD=/var/atlassian/application-data/bitbucket/shared/data/repositories/2295
REMOTE_USER=gustavo
RUN_GID=2003
RUN_GROUP=bitbucket
RUN_UID=2003
RUN_USER=bitbucket
SEARCH_ENABLED=false
SHELL=/bin/bash
SHLVL=1
STASH_BASE_URL=https://bitbucket.xxxxxxxx.br
STASH_IS_ADMIN=false
STASH_IS_DIRECT_ADMIN=
STASH_IS_DIRECT_WRITE=
STASH_PROJECT_KEY=GTIC
STASH_PROJECT_NAME=
STASH_REPO_CLONE_HTTP=https://bitbucket.xxxxxxxx.br/scm/gtic/cds.git
STASH_REPO_CLONE_SSH=ssh://git\@bitbucket.xxxxxxxx.br:7999/gtic/cds.git
STASH_REPO_IS_FORK=false
STASH_REPO_NAME=cds
STASH_USER_DISPLAY_NAME=Gustavo xxxxxxxx
STASH_USER_EMAIL=gustavo\@xxxxxxxx.br
STASH_USER_NAME=gustavo
TMPDIR=/var/atlassian/application-data/bitbucket/tmp
TZ=America/Sao_Paulo
USER=bitbucket
_=/var/atlassian/application-data/bitbucket/shared/external-hooks/pre-receive

After the upgrade, the pre-receive script is invoked in the /var/atlassian/application-data/bitbucket/mesh/tmp/script-sandbox7711861015479551760 directory with the following environment variables:

APPLICATION_MODE=default
APP_NAME=bitbucket
BB_BASE_URL=https://bitbucket.xxxxxxxx.br
BB_HOOK_TRIGGER_ID=push
BB_HOOK_TYPE=PRE
BB_IS_DRY_RUN=false
BB_PROJECT_KEY=GTIC
BB_REPO_CLONE_HTTP=https://bitbucket.xxxxxxxx.br/scm/gtic/cds.git
BB_REPO_CLONE_SSH=ssh://git\@bitbucket.xxxxxxxx.br:7999/gtic/cds.git
BB_REPO_IS_FORK=false
BB_REPO_IS_PUBLIC=false
BB_REPO_SLUG=cds
BB_USER_DISPLAY_NAME=Gustavo xxxxxxxx
BB_USER_EMAIL=gustavo\@xxxxxxxx.br
BB_USER_NAME=gustavo
BB_USER_PERMISSION=SYS_ADMIN
BIN_DIR=/opt/atlassian/bitbucket/bin
BITBUCKET_HOME=/var/atlassian/application-data/bitbucket
BITBUCKET_INSTALL_DIR=/opt/atlassian/bitbucket
BITBUCKET_USER=
FEATURE_PUBLIC_ACCESS=false
GIT_ALTERNATE_OBJECT_DIRECTORIES=/var/atlassian/application-data/bitbucket/shared/data/repositories/2295/./objects/incoming-vezKfG
HOME=/var/atlassian/application-data/bitbucket
HOSTNAME=868e01573c1f
INST_DIR=/opt/atlassian/bitbucket
JAVA_BINARY=/opt/java/openjdk/bin/java
JAVA_HOME=/opt/java/openjdk
JAVA_VERSION=11.0.20
JDBC_DRIVER=org.postgresql.Driver
JDBC_PASSWORD=xxxxxxxx
JDBC_URL=jdbc:postgresql://postgres:5432/bitbucket?targetServerType=master
JDBC_USER=bitbucket
JMX_ENABLED=false
JRE_HOME=/opt/java/openjdk
JVM_MAXIMUM_MEMORY=2G
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
LOGNAME=bitbucket
OLDPWD=/opt/atlassian/bitbucket/bin
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PLUGIN_SEARCH_CONFIG_BASEURL=http://opensearch:9200
PWD=/var/atlassian/application-data/bitbucket/mesh/tmp/script-sandbox7711861015479551760
RUN_GID=2003
RUN_GROUP=bitbucket
RUN_UID=2003
RUN_USER=bitbucket
SEARCH_ENABLED=false
SHELL=/bin/bash
SHLVL=1
STASH_BASE_URL=https://bitbucket.xxxxxxxx.br
STASH_IS_ADMIN=false
STASH_IS_DIRECT_ADMIN=
STASH_IS_DIRECT_WRITE=
STASH_PROJECT_KEY=GTIC
STASH_PROJECT_NAME=
STASH_REPO_CLONE_HTTP=https://bitbucket.xxxxxxxx.br/scm/gtic/cds.git
STASH_REPO_CLONE_SSH=ssh://git\@bitbucket.xxxxxxxx.br:7999/gtic/cds.git
STASH_REPO_IS_FORK=false
STASH_REPO_NAME=cds
STASH_USER_DISPLAY_NAME=Gustavo xxxxxxxx
STASH_USER_EMAIL=gustavo\@xxxxxxxx.br
STASH_USER_NAME=gustavo
TMPDIR=/var/atlassian/application-data/bitbucket/mesh/tmp
TZ=America/Sao_Paulo
USER=bitbucket
_=/var/atlassian/application-data/bitbucket/shared/external-hooks/pre-receive

The command git config -l invoked by the external hook script returns just three lines:

core.repositoryformatversion=0
core.filemode=true
core.bare=true

Since the script is being invoked from a different directory, perhaps the GIT_OBJECT_DIRECTORY is missing.

I read the documentation but couldn't find anything related to this problem.

Can you help me figure this out?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions