mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-21 07:15:49 +00:00
Updated build scripts
This commit is contained in:
parent
30d74c2519
commit
a19cc9c7a3
4 changed files with 210 additions and 9 deletions
41
.github/workflows/docker-build.yml
vendored
Normal file
41
.github/workflows/docker-build.yml
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
name: Build and Tag Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-tag:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup JFrog CLI
|
||||||
|
uses: jfrog/setup-jfrog-cli@v3
|
||||||
|
env:
|
||||||
|
JF_URL: ${{ secrets.JF_URL }}
|
||||||
|
JF_ACCESS_TOKEN: ${{ secrets.JF_ACCESS_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build Tag and push Docker Image
|
||||||
|
env:
|
||||||
|
IMAGE_NAME: simonanderson.jfrog.io/petclinic-docker/jfrog-docker-example-image:${{ github.run_number }}
|
||||||
|
run: |
|
||||||
|
jf docker build -t $IMAGE_NAME .
|
||||||
|
jf docker push $IMAGE_NAME
|
||||||
|
|
||||||
|
- name: Publish Build info With JFrog CLI
|
||||||
|
env:
|
||||||
|
# Generated and maintained by GitHub
|
||||||
|
JFROG_CLI_BUILD_NAME: jfrog-docker-build-example
|
||||||
|
# JFrog organization secret
|
||||||
|
JFROG_CLI_BUILD_NUMBER : ${{ github.run_number }}
|
||||||
|
run: |
|
||||||
|
# Export the build name and build nuber
|
||||||
|
# Collect environment variables for the build
|
||||||
|
jf rt build-collect-env
|
||||||
|
# Collect VCS details from git and add them to the build
|
||||||
|
jf rt build-add-git
|
||||||
|
# Publish build info
|
||||||
|
jf rt build-publish
|
91
.github/workflows/maven-build.yml
vendored
91
.github/workflows/maven-build.yml
vendored
|
@ -1,29 +1,102 @@
|
||||||
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
|
name: Build Spring Petclinic with JFrog Artifactory
|
||||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
|
|
||||||
|
|
||||||
name: Java CI with Maven
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
name: 'Build Spring Petclinic'
|
||||||
|
env:
|
||||||
|
JFROG_CLI_BUILD_NAME: 'Petclinic from GitHub workflow'
|
||||||
|
JFROG_CLI_BUILD_NUMBER: ${{ github.run_number }}
|
||||||
|
JFROG_CLI_BUILD_PROJECT: ${{ vars.JF_PROJECT }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
java: [ '17' ]
|
java: [ '17' ]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
-
|
||||||
- name: Set up JDK ${{matrix.java}}
|
name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
-
|
||||||
|
name: Set up JDK ${{matrix.java}}
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
java-version: ${{matrix.java}}
|
java-version: ${{matrix.java}}
|
||||||
distribution: 'adopt'
|
distribution: 'adopt'
|
||||||
cache: maven
|
cache: maven
|
||||||
- name: Build with Maven Wrapper
|
-
|
||||||
run: ./mvnw -B package
|
name: Setup JFrog CLI
|
||||||
|
uses: jfrog/setup-jfrog-cli@v4
|
||||||
|
env:
|
||||||
|
JF_URL: ${{ vars.JF_URL }}
|
||||||
|
JF_USER: ${{ secrets.JF_USER }}
|
||||||
|
JF_PASSWORD: ${{ secrets.JF_PASSWORD }}
|
||||||
|
JF_PROJECT: ${{ vars.JF_PROJECT }}
|
||||||
|
-
|
||||||
|
name: Read POM
|
||||||
|
run: |
|
||||||
|
echo "petclinicArtifactName=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV
|
||||||
|
echo "petclinicVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
|
||||||
|
-
|
||||||
|
name: Run Source Code Audit
|
||||||
|
run: |
|
||||||
|
jf audit --licenses --format=table --mvn=true
|
||||||
|
-
|
||||||
|
name: Build Maven package
|
||||||
|
run: |
|
||||||
|
jf mvn-config --repo-resolve-releases fg-maven --repo-resolve-snapshots fg-maven --repo-deploy-releases fg-maven-dev-local-releases --repo-deploy-snapshots fg-maven-dev-local-snapshots
|
||||||
|
jf mvn clean package -Dtest=!PostgresIntegrationTests* '-Dspring-javaformat.skip=true' --project ${{ env.JFROG_CLI_BUILD_PROJECT }}
|
||||||
|
-
|
||||||
|
name: Scan Maven package
|
||||||
|
run: |
|
||||||
|
jf scan --watches fredericg-watch --licenses --format=json ./target/${{ env.petclinicArtifactName }}-${{ env.petclinicVersion }}.jar
|
||||||
|
-
|
||||||
|
name: Deploy Maven package to Artifactory
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
run: |
|
||||||
|
jf mvn deploy -Dmaven.main.skip=true -Dmaven.install.skip=true -DskipTests --project ${{ env.JFROG_CLI_BUILD_PROJECT }}
|
||||||
|
-
|
||||||
|
name: Build Docker image
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
env:
|
||||||
|
JF_URL: ${{ vars.JF_URL }}
|
||||||
|
JF_USER: ${{ secrets.JF_USER }}
|
||||||
|
JF_PASSWORD: ${{ secrets.JF_PASSWORD }}
|
||||||
|
JF_PROJECT: ${{ vars.JF_PROJECT }}
|
||||||
|
run: |
|
||||||
|
jf docker build -t soleng.jfrog.io/fg-docker/${{ env.petclinicArtifactName }}:${{ env.petclinicVersion }} --build-arg petclinicArtifact=./target/${{ env.petclinicArtifactName }}-${{ env.petclinicVersion }}.jar .
|
||||||
|
jf docker push soleng.jfrog.io/fg-docker/${{ env.petclinicArtifactName }}:${{ env.petclinicVersion }} --project ${{ env.JFROG_CLI_BUILD_PROJECT }}
|
||||||
|
-
|
||||||
|
name: Scan Docker image
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
run: |
|
||||||
|
jf docker scan soleng.jfrog.io/fg-docker/${{ env.petclinicArtifactName }}:${{ env.petclinicVersion }} --severity='HIGH,CRITICAL'
|
||||||
|
-
|
||||||
|
name: Publish build info
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
run: |
|
||||||
|
jf rt build-publish --project ${{ env.JFROG_CLI_BUILD_PROJECT }} "${{ env.JFROG_CLI_BUILD_NAME }}" "${{ env.JFROG_CLI_BUILD_NUMBER }}"
|
||||||
|
-
|
||||||
|
name: Create Release Bundle
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
run: |
|
||||||
|
echo "=== Generating Release Bundle ==="
|
||||||
|
echo '
|
||||||
|
{
|
||||||
|
"builds": [
|
||||||
|
{
|
||||||
|
"name": "${{ env.JFROG_CLI_BUILD_NAME }}",
|
||||||
|
"number": "${{ env.JFROG_CLI_BUILD_NUMBER }}",
|
||||||
|
"project": "${{ env.JFROG_CLI_BUILD_PROJECT }}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
' > builds.json
|
||||||
|
jf release-bundle-create --builds=./builds.json --project ${{ env.JFROG_CLI_BUILD_PROJECT }} --signing-key fredericg-gpg "${{ env.petclinicArtifactName }}" "${{ env.petclinicVersion }}"
|
72
.github/workflows/pull-request-scan.yml
vendored
Normal file
72
.github/workflows/pull-request-scan.yml
vendored
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
|
# Frogbot Scan Pull Request does the following:
|
||||||
|
# Automatically scans new pull requests for security vulnerabilities.
|
||||||
|
# Uses JFrog Xray to scan the project.
|
||||||
|
# Read more about Frogbot here - https://github.com/jfrog/frogbot#frogbot
|
||||||
|
|
||||||
|
# Some projects require creating a frogbot-config.yml file. Read more about it here - https://github.com/jfrog/frogbot/blob/master/docs/frogbot-config.md
|
||||||
|
|
||||||
|
name: "Frogbot Scan Pull Request"
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [ opened, synchronize ]
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
jobs:
|
||||||
|
scan-pull-request:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# A pull request needs to be approved, before Frogbot scans it. Any GitHub user who is associated with the
|
||||||
|
# "frogbot" GitHub environment can approve the pull request to be scanned.
|
||||||
|
# Read more here (Install Frogbot Using GitHub Actions): https://github.com/jfrog/frogbot/blob/master/docs/install-github.md
|
||||||
|
environment: frogbot
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
|
-
|
||||||
|
name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
distribution: 'adopt'
|
||||||
|
cache: maven
|
||||||
|
|
||||||
|
# IMPORTANT:
|
||||||
|
# 1. See the following link for information about the tools that need to be installed for Frogbot to work - https://github.com/jfrog/frogbot/tree/master/docs/templates/github-actions/scan-and-fix
|
||||||
|
# 2. Some projects require creating a frogbot-config.yml file. Read more about it here - https://github.com/jfrog/frogbot/blob/master/docs/frogbot-config.md
|
||||||
|
- uses: jfrog/frogbot@v2 # v2.10.0
|
||||||
|
env:
|
||||||
|
# [Mandatory if the two conditions below are met]
|
||||||
|
# 1. The project uses npm, yarn 2, NuGet or .NET to download its dependencies
|
||||||
|
# 2. The `installCommand` variable isn't set in your frogbot-config.yml file.
|
||||||
|
#
|
||||||
|
# The command that installs the project dependencies (e.g "npm i", "nuget restore" or "dotnet restore")
|
||||||
|
# JF_INSTALL_DEPS_CMD: ""
|
||||||
|
|
||||||
|
# [Mandatory]
|
||||||
|
# JFrog platform URL
|
||||||
|
JF_URL: ${{ secrets.JF_URL }}
|
||||||
|
JF_USER: ${{ secrets.JF_USER }}
|
||||||
|
JF_PASSWORD: ${{ secrets.JF_PASSWORD }}
|
||||||
|
JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
JF_PROJECT: "fg"
|
||||||
|
JF_WATCH: "fredericg-watch"
|
||||||
|
JF_INCLUDE_ALL_VULNERABILITIES: "TRUE"
|
||||||
|
JFROG_CLI_LOG_LEVEL: “DEBUG”
|
||||||
|
# [Optional]
|
||||||
|
# If the machine that runs Frogbot has no access to the internat, set the name of a remote repository
|
||||||
|
# in Artifactory, which proxies https://releases.jfrog.io/artifactory
|
||||||
|
# The 'frogbot' executable and other tools it needs will be downloaded through this repository.
|
||||||
|
# JF_RELEASES_REPO: ""
|
||||||
|
|
||||||
|
# [Optional]
|
||||||
|
# Frogbot will download the project dependencies, if they're not cached locally. To download the
|
||||||
|
# dependencies from a virtual repository in Artifactory, set the name of of the repository. There's no
|
||||||
|
# need to set this value, if it is set in the frogbot-config.yml file.
|
||||||
|
# JF_DEPS_REPO: ""
|
15
.github/workflows/xray-scan.yml
vendored
Normal file
15
.github/workflows/xray-scan.yml
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# https://github.com/marketplace/actions/xray-action
|
||||||
|
|
||||||
|
- name: xray-action
|
||||||
|
uses: mikepenz/xray-action@v3
|
||||||
|
|
||||||
|
|
||||||
|
- name: "Import results to Xray"
|
||||||
|
uses: mikepenz/xray-action@{latest-release}
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.XRAY_CLIENT_ID }}
|
||||||
|
password: ${{ secrets.XRAY_CLIENT_SECRET }}
|
||||||
|
testFormat: "junit"
|
||||||
|
testPaths: "**/test/*.xml"
|
||||||
|
testExecKey: "TEST-1"
|
||||||
|
projectKey: "TEST"
|
Loading…
Reference in a new issue