diff --git a/.github/workflows/microservice-build-image.yaml b/.github/workflows/microservice-build-image.yaml new file mode 100644 index 0000000000..cce259b196 --- /dev/null +++ b/.github/workflows/microservice-build-image.yaml @@ -0,0 +1,38 @@ +# +name: Create and publish a Docker image + +on: + workflow_call: + +# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository.lowercase }} + JAVA_VERSION: '11' + JAVA_DISTRIBUTION: 'zulu' #This is the default on v1 of the action for 1.8 + USER_NAME: ${{ github.actor }} + ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build-and-push-datawave-images: + runs-on: ubuntu-latest + steps: + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ env.USER_NAME }} + password: ${{ env.ACCESS_TOKEN }} + - name: Checkout Code + uses: actions/checkout@v4 + - name: Set up JDK ${{env.JAVA_VERSION}} + uses: actions/setup-java@v4 + with: + distribution: ${{env.JAVA_DISTRIBUTION}} + java-version: ${{env.JAVA_VERSION}} + cache: 'maven' + - name: Build And Push Docker Image (Maven) + run: | + mvn -s $GITHUB_WORKSPACE/.github/workflows/settings.xml -V -B -e clean install -Pdocker,exec -Ddocker.image.prefix=ghcr.io/nationalsecurityagency/ -DpushImage + + diff --git a/.github/workflows/microservice-maven-tests.yaml b/.github/workflows/microservice-maven-tests.yaml new file mode 100644 index 0000000000..c32242816b --- /dev/null +++ b/.github/workflows/microservice-maven-tests.yaml @@ -0,0 +1,60 @@ +name: Tests + +on: + workflow_call: + +jobs: + # Runs the pom sorter and code formatter to ensure that the code + # is formatted and poms are sorted according to project rules. This + # will fail if the formatter makes any changes. + check-code-formatting: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + java-version: 11 + - uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-format-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-format- + ${{ runner.os }}-maven- + - name: Format code + run: | + mvn -s $GITHUB_WORKSPACE/.github/workflows/settings.xml -V -B -e clean formatter:format sortpom:sort -Pautoformat + git status + git diff-index --quiet HEAD || (echo "Error! There are modified files after formatting." && false) + env: + MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Djava.awt.headless=true" + USER_NAME: ${{ secrets.USER_NAME }} + ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} + + # Build the code and run the unit/integration tests. + build-and-test: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + java-version: 11 + - 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- + - name: Build and Run Unit Tests + run: mvn -s $GITHUB_WORKSPACE/.github/workflows/settings.xml -V -B -e -Ddist clean verify + env: + MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Djava.awt.headless=true" + USER_NAME: ${{ secrets.USER_NAME }} + ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} +