Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
c622276
Define pyproject.toml (#3701)
lorenabalan Sep 22, 2025
7a82dd6
Remove requirements files (#3709)
lorenabalan Sep 22, 2025
abb170b
Restructure Connectors project (#3721)
mattnowzari Sep 26, 2025
07678d0
Minor cleanup before the next phase of restructuring (#3724)
mattnowzari Sep 26, 2025
4e52390
[Connectors Framework Improvements] connectors_service initial breako…
mattnowzari Sep 29, 2025
5b021a8
Extract an sdk package (#3737)
artem-shelkovnikov Sep 30, 2025
595d3b4
Merge branch 'main' into merge-main-to-develop
lorenabalan Oct 3, 2025
87ca5e2
Fix notice check
lorenabalan Oct 3, 2025
1b2575c
Update NOTICE.txt
elasticmachine Oct 3, 2025
deb3c2f
make autoformat
elasticmachine Oct 3, 2025
f753f8c
Fix deps
lorenabalan Oct 3, 2025
4fbbc6d
Fix bad merge
lorenabalan Oct 3, 2025
68bc1b7
Merge pull request #3749 from elastic/merge-main-to-develop
lorenabalan Oct 3, 2025
3b1dcf0
Fix typo in notice check (#3750)
lorenabalan Oct 3, 2025
f30e826
[Connectors Framework Improvements ] Break apart connectors source fi…
mattnowzari Oct 6, 2025
2a62725
Split blob storage connectors (#3762)
lorenabalan Oct 7, 2025
e1f8315
Move _message_doc func into GMailDataSource class (#3761)
mattnowzari Oct 7, 2025
a87ecdd
Update bk pipeline step with correct paths (#3767)
mattnowzari Oct 7, 2025
4d8f372
Split PostgresQL connector (#3769)
mattnowzari Oct 8, 2025
f8f8ff6
Split Atlassian connectors (#3766)
lorenabalan Oct 8, 2025
7cf0f29
Split MySQL connector (#3768)
mattnowzari Oct 8, 2025
5138712
Split Microsoft SQL connector (#3771)
mattnowzari Oct 8, 2025
cd76fdf
Split the Oracle DB connector (#3773)
mattnowzari Oct 8, 2025
1a238fd
Sharepoint connectors split (Online + Server) (#3775)
mattnowzari Oct 9, 2025
2db4c06
Bring recent diffs for GitHub connector into develop branch (#3780)
mattnowzari Oct 9, 2025
5ecf238
Split Notion, Slack, and Zoom connectors (#3772)
lorenabalan Oct 10, 2025
67e0e7e
Box connector split (#3776)
mattnowzari Oct 10, 2025
dbf27df
Redis Connector split (#3779)
mattnowzari Oct 10, 2025
e6eba73
Outlook Connector split (#3778)
mattnowzari Oct 10, 2025
83c75f7
Onedrive connector split (#3777)
mattnowzari Oct 10, 2025
802d0ff
Split GraphQL, Microsoft Teams, ServiceNow connectors (#3782)
lorenabalan Oct 15, 2025
2fe29be
Merge conflicts with sharepoint changes
lorenabalan Oct 16, 2025
7768df5
Update NOTICE.txt
elasticmachine Oct 16, 2025
046db91
make autoformat
elasticmachine Oct 16, 2025
2174782
Merge pull request #3792 from elastic/merge-main-to-develop
lorenabalan Oct 16, 2025
f832aae
GitHub, Sandfly & Salesforce connectors split (#3781)
mattnowzari Oct 20, 2025
23c1923
Merge branch 'main' into merge-main-to-develop
lorenabalan Oct 22, 2025
724cbc0
Update NOTICE.txt
elasticmachine Oct 22, 2025
0ac03ff
make autoformat
elasticmachine Oct 22, 2025
4073014
Merge pull request #3805 from elastic/merge-main-to-develop
lorenabalan Oct 22, 2025
6487acf
Fix diff logic (#3806)
lorenabalan Oct 22, 2025
124a47e
Add buildkite pipeline for publishing to PyPI (#3748)
lorenabalan Oct 28, 2025
e930cc8
Merge branch 'main' into merge-main-to-develop
lorenabalan Oct 30, 2025
c498d93
Merge branch 'develop' into merge-develop-to-main
lorenabalan Oct 30, 2025
7d93b63
Update NOTICE.txt
elasticmachine Oct 30, 2025
aacda27
Update NOTICE.txt
elasticmachine Oct 30, 2025
1605802
Merge main to develop (#3815)
lorenabalan Oct 30, 2025
7d14b35
Merge branch 'develop' into merge-develop-to-main
lorenabalan Oct 30, 2025
55eb762
Merge branch 'merge-develop-to-main' of github.com:elastic/connectors…
lorenabalan Oct 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .buildkite/diff
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

COMMIT=$1

if [ -n $BUILDKITE_PULL_REQUEST_BASE_BRANCH ]; then
if [ -n "$BUILDKITE_PULL_REQUEST_BASE_BRANCH" ]; then
HEAD_BRANCH="origin/$BUILDKITE_PULL_REQUEST_BASE_BRANCH"
MERGE_BASE=$(git merge-base "$HEAD_BRANCH" "$COMMIT")
echo "Checking against a base branch: $BUILDKITE_PULL_REQUEST_BASE_BRANCH with merge base at $MERGE_BASE"
git diff --raw "$COMMIT".."$MERGE_BASE" | awk '{print $6; if($7) {print $7}}'
git diff --raw "$MERGE_BASE".."$COMMIT" | awk '{print $6; if($7) {print $7}}'
else
echo "Checking against the head of the current branch"
git diff --raw HEAD~1 | awk '{print $6; if($7) {print $7}}'
Expand Down
325 changes: 187 additions & 138 deletions .buildkite/pipeline.yml

Large diffs are not rendered by default.

33 changes: 27 additions & 6 deletions .buildkite/publish/dra/init_dra_publishing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,28 @@ export RELEASE_DIR="${PROJECT_ROOT}"

# Create and stage the artifact
cd $PROJECT_ROOT
make clean sdist
make clean zip
export DRA_ARTIFACTS_DIR=$RELEASE_DIR/dist/dra-artifacts
mkdir -p $DRA_ARTIFACTS_DIR
cp $RELEASE_DIR/dist/elasticsearch_connectors-${VERSION}.zip $DRA_ARTIFACTS_DIR/connectors-${VERSION}.zip

cd -

# Download previous step artifacts
buildkite-agent artifact download '.artifacts/*.tar.gz*' $RELEASE_DIR/dist/ --step build_docker_image_amd64
buildkite-agent artifact download '.artifacts/*.tar.gz*' $RELEASE_DIR/dist/ --step build_docker_image_arm64
buildkite-agent artifact download 'app/connectors_service/dist/*.whl' $RELEASE_DIR/ --step test_packages
buildkite-agent artifact download 'app/connectors_service/dist/*.tar.gz' $RELEASE_DIR/ --step test_packages
buildkite-agent artifact download 'libs/connectors_sdk/dist/*.whl' $RELEASE_DIR/ --step test_packages
buildkite-agent artifact download 'libs/connectors_sdk/dist/*.tar.gz' $RELEASE_DIR/ --step test_packages


# Copy previous step artifacts to DRA dir
cp $RELEASE_DIR/dist/.artifacts/* $DRA_ARTIFACTS_DIR
cp $RELEASE_DIR/app/connectors_service/dist/* $DRA_ARTIFACTS_DIR
cp $RELEASE_DIR/libs/connectors_sdk/dist/* $DRA_ARTIFACTS_DIR

# Rename to match DRA expectations (<name>-<version>-<classifier>-<os>-<arch>)
# Rename docker images to match DRA expectations (<name>-<version>-<classifier>-<os>-<arch>)
cd $DRA_ARTIFACTS_DIR
mv $DOCKER_ARTIFACT_KEY-$VERSION-amd64.tar.gz $PROJECT_NAME-$VERSION-docker-image-linux-amd64.tar.gz
mv $DOCKER_ARTIFACT_KEY-$VERSION-arm64.tar.gz $PROJECT_NAME-$VERSION-docker-image-linux-arm64.tar.gz
Expand Down Expand Up @@ -138,9 +148,16 @@ if [[ "${PUBLISH_SNAPSHOT:-}" == "true" ]]; then
generateDependencyReport $DEPENDENCIES_REPORTS_DIR/$dependencyReportName

echo "-------- Publishing SNAPSHOT DRA Artifacts"
cp $RELEASE_DIR/dist/elasticsearch_connectors-${VERSION}.zip $DRA_ARTIFACTS_DIR/connectors-${VERSION}-SNAPSHOT.zip

# Make *-SNAPSHOT* copies
cp $DRA_ARTIFACTS_DIR/connectors-${VERSION}.zip $DRA_ARTIFACTS_DIR/connectors-${VERSION}-SNAPSHOT.zip
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION.whl $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION-SNAPSHOT.whl
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION.tar.gz $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION-SNAPSHOT.tar.gz
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION.whl $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION-SNAPSHOT.whl
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION.tar.gz $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION-SNAPSHOT.tar.gz
cp $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-docker-image-linux-amd64.tar.gz $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-SNAPSHOT-docker-image-linux-amd64.tar.gz
cp $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-docker-image-linux-arm64.tar.gz $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-SNAPSHOT-docker-image-linux-arm64.tar.gz

setDraVaultCredentials
export WORKFLOW="snapshot"

Expand All @@ -155,19 +172,23 @@ fi
if [[ "${PUBLISH_STAGING:-}" == "true" ]]; then
if [ -n "${VERSION_QUALIFIER:-}" ]; then
dependencyReportName="dependencies-${VERSION}-${VERSION_QUALIFIER}.csv";
zip_artifact_name="connectors-${VERSION}-${VERSION_QUALIFIER}.zip"

# Make *-$VERSION_QUALIFIER* copies
cp $DRA_ARTIFACTS_DIR/connectors-${VERSION}.zip $DRA_ARTIFACTS_DIR/$PROJECT_NAME-${VERSION}-${VERSION_QUALIFIER}.zip
cp $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-docker-image-linux-amd64.tar.gz $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-$VERSION_QUALIFIER-docker-image-linux-amd64.tar.gz
cp $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-docker-image-linux-arm64.tar.gz $DRA_ARTIFACTS_DIR/$PROJECT_NAME-$VERSION-$VERSION_QUALIFIER-docker-image-linux-arm64.tar.gz
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION.whl $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION-$VERSION_QUALIFIER.whl
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION.tar.gz $DRA_ARTIFACTS_DIR/elasticsearch_connectors-$VERSION-$VERSION_QUALIFIER.tar.gz
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION.whl $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION-$VERSION_QUALIFIER.whl
cp $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION.tar.gz $DRA_ARTIFACTS_DIR/elasticsearch_connectors_sdk-$VERSION-$VERSION_QUALIFIER.tar.gz
else
dependencyReportName="dependencies-${VERSION}.csv";
zip_artifact_name="connectors-${VERSION}.zip"
fi

echo "-------- Generating STAGING dependency report: ${dependencyReportName}"
generateDependencyReport $DEPENDENCIES_REPORTS_DIR/$dependencyReportName

echo "-------- Publishing STAGING DRA Artifacts"
cp $RELEASE_DIR/dist/elasticsearch_connectors-${VERSION}.zip $DRA_ARTIFACTS_DIR/${zip_artifact_name}
setDraVaultCredentials
export WORKFLOW="staging"

Expand Down
6 changes: 3 additions & 3 deletions .buildkite/publish/manual-release/update-release-version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ CURDIR="$(dirname "$REL_DIR")"

source $CURDIR/publish-common.sh

echo $VERSION > $PROJECT_ROOT/connectors/VERSION # adds the timestamp suffix
UPDATED_VERSION=`cat $PROJECT_ROOT/connectors/VERSION`
echo $VERSION > $PROJECT_ROOT/app/connectors/VERSION # adds the timestamp suffix
UPDATED_VERSION=`cat $PROJECT_ROOT/app/connectors/VERSION`

git add $PROJECT_ROOT/connectors/VERSION
git add $PROJECT_ROOT/app/connectors/VERSION
git commit -m "Bumping version from ${ORIG_VERSION} to ${UPDATED_VERSION}"
git push origin ${GIT_BRANCH}

Expand Down
2 changes: 1 addition & 1 deletion .buildkite/publish_docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ docker login -u "${DOCKER_USER}" -p ${DOCKER_PASSWORD} docker.elastic.co
echo "Done!"
echo
echo "Pushing the image to docker.elastic.co"
make docker-push
make docker-push
24 changes: 24 additions & 0 deletions .buildkite/publish_to_pypi.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

# !!! WARNING DO NOT add -x to avoid leaking vault passwords
set -euo pipefail

source .buildkite/shared.sh

init_python
cd "$PACKAGE_PATH"
python -m pip install --upgrade build twine
python -m build

export TWINE_USERNAME="__token__"

# upload to test or real PyPI based on TEST_PYPI=1 env var or arg
if [[ "${1:-}" == "TEST_PYPI=1" ]] || [[ "${TEST_PYPI:-}" =~ ^(1|TRUE|true)$ ]]; then
TWINE_PASSWORD=$(vault read -field publishing-api-key secret/ci/elastic-connectors/test-pypi)
export TWINE_PASSWORD
python -m twine upload --repository testpypi dist/*
else
TWINE_PASSWORD=$(vault read -field publishing-api-key secret/ci/elastic-connectors/pypi)
export TWINE_PASSWORD
python -m twine upload --repository pypi dist/*
fi
92 changes: 92 additions & 0 deletions .buildkite/pypi-publish-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
## .buildkite/pypi-publish-pipeline.yml
# Manually-triggered pipeline to build and publish Python packages to PyPI
notify:
- if: 'build.branch =~ /^((main)|([0-9]+\.[0-9]+))$/ && (build.state == "failed" || pipeline.started_passing)'
slack:
channels:
- "#search-et-alerts"
message: "${BUILDKITE_MESSAGE}"

# add paths for all the packages we want to build here
# then make sure they're added to the matrix.setup.package_path lists in the steps below
env:
SERVICE_PACKAGE_PATH: "app/connectors_service"
SDK_PACKAGE_PATH: "libs/connectors_sdk"

steps:
- group: ":building_construction: Build Python Packages"
key: "build_package"
steps:
- label: ":python: Build Python {{matrix.python_version}} {{matrix.package_path}} package"
key: build_python_package
agents:
provider: "gcp"
machineType: "n1-standard-8"
useVault: true
image: family/enterprise-search-ubuntu-2204-connectors-py
matrix:
setup:
python_version:
- "3.10"
- "3.11"
package_path:
- "${SERVICE_PACKAGE_PATH}"
- "${SDK_PACKAGE_PATH}"
env:
PYTHON_VERSION: "{{ matrix.python_version }}"
PACKAGE_PATH: "{{ matrix.package_path }}"
commands: ".buildkite/test_python_packages.sh"

- wait

- group: ":test_tube: Publish to Test PyPI"
key: "publish_to_test_pypi"
depends_on:
- build_package
steps:
- label: ":package: Publish to Test PyPI"
key: publish_test_pypi
agents:
provider: "gcp"
machineType: "n1-standard-8"
useVault: true
image: family/enterprise-search-ubuntu-2204-connectors-py
matrix:
setup:
package_path:
- "${SERVICE_PACKAGE_PATH}"
- "${SDK_PACKAGE_PATH}"
env:
PYTHON_VERSION: "3.11"
PACKAGE_PATH: "{{ matrix.package_path }}"
commands: "TEST_PYPI=1 ./buildkite/publish_to_pypi.sh"

# FOR WHEN WE'RE READY TO PUBLISH TO PRODUCTION PYPI
#
# - block: ":rocket: Publish to Production PyPI?"
# prompt: "Test PyPI publish succeeded. Proceed to publish to Production PyPI?"
# key: "confirm_production_publish"
# depends_on:
# - publish_to_test_pypi
#
# - group: ":truck: Publish to Production PyPI"
# key: "publish_to_pypi"
# depends_on:
# - confirm_production_publish
# steps:
# - label: ":package: Publish to Production PyPI"
# key: publish_pypi
# agents:
# provider: "gcp"
# machineType: "n1-standard-8"
# useVault: true
# image: family/enterprise-search-ubuntu-2204-connectors-py
# matrix:
# setup:
# package_path:
# - "${SERVICE_PACKAGE_PATH}"
# - "${SDK_PACKAGE_PATH}"
# env:
# PYTHON_VERSION: "3.11"
# PACKAGE_PATH: "{{ matrix.package_path }}"
# commands: ".buildkite/publish_to_pypi.sh"
4 changes: 2 additions & 2 deletions .buildkite/release-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ steps:
key: "release_setup"
steps:
# ----
# Set the build timestamp (for the verion suffix)
# Set the build timestamp (for the version suffix)
# ---
- label: "Set build metadata"
commands:
- buildkite-agent meta-data set timestamp "$(date -u +'%Y%m%d%H%M')"
- buildkite-agent meta-data set orig_version "$(cat connectors/VERSION)"
- buildkite-agent meta-data set orig_version "$(cat app/connectors/VERSION)"
key: set_timestamp
- wait
- label: ":github: update version and tag"
Expand Down
2 changes: 1 addition & 1 deletion .buildkite/run_functional_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ init_python

BASEDIR=$(realpath $(dirname $0))
ROOT=$(realpath $BASEDIR/../)
VENV_ROOT=$ROOT/.venv
VENV_ROOT=$ROOT/app/connectors_service/.venv

cd $ROOT

Expand Down
5 changes: 3 additions & 2 deletions .buildkite/run_notice_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ if is_pr && ! is_fork; then
echo 'New changes to NOTICE.txt:'
git --no-pager diff

git add NOTICE.txt
git commit -m"Update NOTICE.txt"
git status --porcelain | grep app/connectors_service/NOTICE.txt && git add app/connectors_service/NOTICE.txt
git status --porcelain | grep libs/connectors_sdk/NOTICE.txt && git add libs/connectors_sdk/NOTICE.txt
git commit -m "Update NOTICE.txt"
git push

exit 1
Expand Down
32 changes: 32 additions & 0 deletions .buildkite/test_python_packages.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

# !!! WARNING DO NOT add -x to avoid leaking vault passwords
set -euo pipefail

source .buildkite/shared.sh

init_python

python -m pip install --upgrade build twine
python -m build "$PACKAGE_PATH"
ls -lah "$PACKAGE_PATH/dist/"
python -m twine check "$PACKAGE_PATH/dist/*"

# If this is the connectors_service package, test the installation and CLI
if [[ "$PACKAGE_PATH" == *app/connectors_service* ]]; then
echo "Testing connectors_service package installation and CLI..."

# Install the connectors_sdk package first
LIB_PATH="libs/connectors_sdk"
python -m build "$LIB_PATH"
python -m pip install "$LIB_PATH"/dist/*.whl

python -m pip install "$PACKAGE_PATH"/dist/*.whl
connectors --help
elastic-ingest --help
# elastic-agent-connectors --help
test-connectors --help
else
python -m pip install "$PACKAGE_PATH"/dist/*.whl
python -c "import connectors_sdk; print(f'🎉 Success! connectors_sdk version: {connectors_sdk.__version__}')"
fi
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pyvenv.cfg
__pycache__

# real configurations
config.yml
app/connectors_service/config.yml

# jetbrains files
.idea
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ COPY --chown=nonroot:nonroot . /app

USER nonroot
WORKDIR /app
RUN make clean install
RUN ln -s .venv/bin /app/bin
RUN make clean install-package
RUN ln -s app/connectors_service/.venv/bin /app/bin

USER root
RUN apk del make git
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.wolfi
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ FROM docker.elastic.co/wolfi/python:3.11-dev@sha256:c85a849c182a812950c3036b3965
USER root
COPY . /app
WORKDIR /app
RUN make clean install
RUN ln -s .venv/bin /app/bin
RUN make clean install-package
RUN ln -s app/connectors_service/.venv/bin /app/bin
ENTRYPOINT []
5 changes: 0 additions & 5 deletions MANIFEST.in

This file was deleted.

Loading