-
Notifications
You must be signed in to change notification settings - Fork 184
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add end-to-end cloud test workflow with Microsoft Entra ID. (#4841)
This PR adds the foundations for testing connectivity of TileDB to the real clouds by adding a new workflow named `test-cloud-e2e`. Currently only Azure with Microsoft Entra ID authentication is provided. Authentication happens [with OpenID Connect](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure). A new environment was created that has read-only access to the `core` container of the `tiledbci` storage account, and we test that the file `test.txt` in that container exists. The test is configured with environment variables, making it reusable for subsequent tests with other cloud providers. --- TYPE: NO_HISTORY --------- Co-authored-by: Theodore Tsirpanis <[email protected]>
- Loading branch information
1 parent
86ef4c5
commit 6dff6fa
Showing
2 changed files
with
127 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
name: End-to-End cloud service tests | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
run_azure: | ||
description: 'Run Azure tests' | ||
required: true | ||
default: true | ||
type: boolean | ||
push: | ||
branches: | ||
- dev | ||
- release-* | ||
|
||
env: | ||
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite' | ||
SCCACHE_GHA_ENABLED: "true" | ||
|
||
jobs: | ||
azure: | ||
runs-on: ubuntu-latest | ||
if: inputs.run_azure != 'false' | ||
environment: azure-e2e-test | ||
env: | ||
bootstrap_args: --enable-azure --enable-ccache | ||
permissions: | ||
id-token: write # Get OIDC token for authentication to Azure | ||
name: Azure | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
# Configure required environment variables for vcpkg to use | ||
# GitHub's Action Cache | ||
- uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); | ||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); | ||
- name: Prevent vpckg from building debug variants | ||
run: python ./scripts/ci/patch_vcpkg_triplets.py | ||
|
||
- name: Setup sccache | ||
uses: mozilla-actions/[email protected] | ||
|
||
- name: 'Configure libtiledb' | ||
id: configure | ||
shell: bash | ||
run: | | ||
set -e pipefail | ||
# Show CMake Version | ||
cmake --version | ||
source $GITHUB_WORKSPACE/scripts/ci/bootstrap_libtiledb.sh | ||
- name: 'Build libtiledb' | ||
id: build | ||
shell: bash | ||
run: | | ||
set -e pipefail | ||
##################################################### | ||
# Build libtiledb using previous bootstrap | ||
source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh | ||
- name: 'Az CLI login' | ||
uses: azure/login@v2 | ||
with: | ||
client-id: ${{ secrets.AZURE_CLIENT_ID }} | ||
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | ||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | ||
|
||
- name: 'Test libtiledb' | ||
id: test | ||
shell: bash | ||
env: | ||
# Allow forks to specify different values. | ||
AZURE_STORAGE_ACCOUNT: ${{ vars.AZURE_STORAGE_ACCOUNT || 'tiledbci' }} | ||
TILEDB_VFS_E2E_TEST_FILE: ${{ vars.AZURE_E2E_TEST_FILE || 'azure://tiledb/test.txt' }} | ||
run: | | ||
set -e pipefail | ||
cd $GITHUB_WORKSPACE/build | ||
################################################### | ||
# Run tests | ||
# Bypass Catch2 Framework stdout interception with awk on test output | ||
./tiledb/test/tiledb_unit -d yes "[vfs-e2e]" | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' | ||
- name: 'Test status check' | ||
run: | | ||
# tiledb_unit is configured to set a variable TILEDB_CI_SUCCESS=1 | ||
# following the test run. If this variable is not set, the build should fail. | ||
# see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) | ||
if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then | ||
exit 1; | ||
fi | ||
- name: "Print log files (failed build only)" | ||
run: | | ||
source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh | ||
if: ${{ failure() }} # only run this job if the build step failed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters