Problem

When configuring the SeaLights agent for Java, it is difficult to manage the .jar files are in the correct version - especially in standalone environments (containers, backend servers etc)

Solution

The following shell script checks for the recommended agent and latest version, and in case it does not exist locally - downloads & unzips it in the given directory.

Downloading the Recommended Agent set in settings

#!/bin/bash

export DOMAIN=<CustomerDomain>.sealights.co
export SEALIGHTS_AGENT_TOKEN=`cat sltoken.txt`

if [ -f "sealights-java-agent.zip" ]; then
    export SL_LOCAL_VERSION=`cat sealights-java-version.txt`
    export SL_SETTINGS_VERSION=`curl -sX GET "https://$DOMAIN/sl-api/v1/agent-apis/agents/types/sealights-java/default-version" -H "Authorization: Bearer $SEALIGHTS_AGENT_TOKEN" -H "accept: application/json" | jq  -r .version`
    
    if [ "${SL_LOCAL_VERSION}" == "${SL_SETTINGS_VERSION}" ]; then
        echo "Skipping Download - Local agent matches the current latest version:" $SL_SETTINGS_VERSION
    else
        echo "Local agent is not using the latest version. Deleting local agent."
        rm -fr sealights-java-*  sl-*.jar     
    fi
fi

if [ ! -f "sealights-java-agent.zip" ]; then
    echo "Downloading Java Agent version set in Settings..."
    wget -nv -O sealights-java-agents.zip --header "accept: application/json" --header "Authorization: Bearer $SEALIGHTS_AGENT_TOKEN" \
        https://$DOMAIN/api/v2/agents/sealights-java/recommended/download

    unzip -oq sealights-java-agents.zip
    echo "Local agent version is now:" `cat sealights-java-version.txt`
fi
BASH

Downloading the latest agent

#!/bin/bash

if [ -f "sealights-java-latest.zip" ]; then
    export LOCL_SL_VERSION=`cat sealights-java-version.txt`
    export CURR_SL_VERSION=`curl -s https://agents.sealights.co/sealights-java/sealights-java-version.txt`
    
    if [ "${LOCL_SL_VERSION}" == "${CURR_SL_VERSION}" ]; then
        echo "Skipping Download - Local agent matches the current latest version:" $CURR_SL_VERSION
    else
        echo "Local agent is not using the latest version. Deleting local agent."
        rm -fr sealights-java-*  sl-*.jar     
    fi
fi

if [ ! -f "sealights-java-latest.zip" ]; then
    echo "Downloading Sealights Latest Agent..."
    wget -nv https://agents.sealights.co/sealights-java/sealights-java-latest.zip
    unzip -o sealights-java-latest.zip
    echo "Local agent version is now:" `cat sealights-java-version.txt`
fi
BASH