Skip to content

Document avoid collection copies (#3082) #562

Document avoid collection copies (#3082)

Document avoid collection copies (#3082) #562

name: Compose and Quickstart Tests
on:
push:
paths-ignore: ['*.md', 'CODEOWNERS', 'LICENSE']
branches:
- 'integration'
- 'release/version*'
pull_request:
paths-ignore: ['*.md', 'CODEOWNERS', 'LICENSE']
merge_group:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
JAVA_VERSION: '11'
JAVA_DISTRIBUTION: 'zulu' #This is the default on v1 of the action for 1.8
MAVEN_OPTS: "-Djansi.force=true -Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Djava.awt.headless=true -XX:ThreadStackSize=1m -Daether.connector.basic.threads=8 -Daether.metadataResolver.threads=8 -Daether.syncContext.named.time=480"
GITHUB_REGISTRY: ghcr.io
GITHUB_USER_NAME: ${{ secrets.GHCR_WRITE_USER_NAME }}
GITHUB_ACCESS_TOKEN: ${{ secrets.GHCR_WRITE_ACCESS_TOKEN }}
jobs:
# Runs the pom sorter and code formatter to ensure that the code
# is formatted and poms are sorted according to project rules. If changes are found,
# they are committed back to the branch
compose-build-and-test-latest-snapshots:
runs-on: ubuntu-latest
steps:
- name: Extract branch name
shell: bash
run: |
echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Checkout Code
uses: actions/checkout@v4
# Clean up free space
- uses: ./.github/actions/free-space
with:
tool-cache: false
- name: Set up JDK ${{env.JAVA_VERSION}}
uses: actions/setup-java@v4
with:
distribution: ${{env.JAVA_DISTRIBUTION}}
java-version: ${{env.JAVA_VERSION}}
cache: 'maven'
# Builds the quickstart and microservice docker images and runs a query test
- name: Docker Compose Query Tests
run: |
if [[ ${{ steps.extract_branch.outputs.branch }} =~ ^release/version* ]] then
echo "Nothing to do since this is a release branch."
else
# update datawave dependencies to use the latest snapshots
mvn --settings $GITHUB_WORKSPACE/.github/workflows/settings.xml --show-version --batch-mode --errors -Dutils -Dservices \
-Dstarters versions:update-properties versions:update-parent -DallowSnapshots=true -Dincludes=gov.nsa.*
mvn --settings $GITHUB_WORKSPACE/.github/workflows/settings.xml --show-version --batch-mode --errors -Dutils -Dservices \
-Dstarters -Pcompose -Dmicroservice-docker -Dquickstart-docker -Ddeploy -Dtar -DskipTests \
-Djkube.container-image.tags.1=latest \
clean install
# free up some space so that we don't run out
docker system prune -f
mvn --settings $GITHUB_WORKSPACE/.github/workflows/settings.xml --show-version --batch-mode --errors -Dutils -Dservices \
-Dstarters -Pcompose -Dmicroservice-docker -Dquickstart-docker -Ddeploy -Dtar -DskipTests clean
cd docker
./bootstrap.sh
attempt=0
max_attempts=20
while [ $attempt -lt $max_attempts ]; do
attempt=$((attempt+1))
echo "Starting docker compose (Attempt ${attempt}/${max_attempts})"
nohup docker compose up -d --no-recreate < /dev/null > compose.out 2>&1 &
sleep 60s
cat compose.out
# check to see if the query service is running
QUERY="$(docker compose ps --status running --services | grep query || true)"
if [ "$QUERY" == "query" ] ; then
echo "Docker compose started successfully"
break
elif [ $attempt -eq $max_attempts ] ; then
echo "Failed to start docker compose"
exit 1
fi
done
cd scripts
./testAll.sh
fi
- name: Dump Logs
if: failure()
run: |
cd docker
docker compose logs
compose-build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
# Clean up free space
- uses: ./.github/actions/free-space
with:
tool-cache: false
- name: Set up JDK ${{env.JAVA_VERSION}}
uses: actions/setup-java@v4
with:
distribution: ${{env.JAVA_DISTRIBUTION}}
java-version: ${{env.JAVA_VERSION}}
- uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-build-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-build-
${{ runner.os }}-maven-format-
${{ runner.os }}-maven-
# Builds the quickstart and microservice docker images and runs a query test
- name: Docker Compose Query Tests
run: |
mvn --settings $GITHUB_WORKSPACE/.github/workflows/settings.xml --show-version --batch-mode --errors -Dutils -Dservices -Dstarters \
-Pcompose -Dmicroservice-docker -Dquickstart-docker -Ddeploy -Dtar -DskipTests -Dmaven.build.cache.enabled=false \
-Djkube.container-image.tags.1=latest \
clean install
# free up some space so that we don't run out
docker system prune -f
mvn --settings $GITHUB_WORKSPACE/.github/workflows/settings.xml --show-version --batch-mode --errors -Dutils -Dservices -Dstarters \
-Pcompose -Dmicroservice-docker -Dquickstart-docker -Ddeploy -Dtar -DskipTests -Dmaven.build.cache.enabled=false clean
cd docker
./bootstrap.sh
attempt=0
max_attempts=20
while [ $attempt -lt $max_attempts ]; do
attempt=$((attempt+1))
echo "Starting docker compose (Attempt ${attempt}/${max_attempts})"
nohup docker compose up -d --no-recreate < /dev/null > compose.out 2>&1 &
sleep 60s
cat compose.out
# check to see if the query service is running
QUERY="$(docker compose ps --status running --services | grep query || true)"
if [ "$QUERY" == "query" ] ; then
echo "Docker compose started successfully"
break
elif [ $attempt -eq $max_attempts ] ; then
echo "Failed to start docker compose"
exit 1
fi
done
cd scripts
./testAll.sh
- name: Dump Logs
if: failure()
run: |
cd docker
docker compose logs
- name: Docker Compose Web Tests
run: |
cd docker
docker compose down
sed -i -e 's/command: \["datawave-bootstrap.sh", "--accumulo"\]/command: \["datawave-bootstrap.sh", "--ingest", "--web", "--test"\]/g' docker-compose.yml
while [ $attempt -lt $max_attempts ]; do
attempt=$((attempt+1))
echo "Starting docker compose (Attempt ${attempt}/${max_attempts})"
nohup docker compose up -d --no-recreate < /dev/null > compose.out 2>&1 &
sleep 60s
cat compose.out
# check to see if the query service is running
QUERY="$(docker compose ps --status running --services | grep query || true)"
if [ "$QUERY" == "query" ] ; then
echo "Docker compose started successfully"
break
elif [ $attempt -eq $max_attempts ] ; then
echo "Failed to start docker compose"
exit 1
fi
done
docker compose logs -f quickstart