Document avoid collection copies (#3082) #562
This file contains hidden or 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
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 |