85 lines
2.7 KiB
YAML
85 lines
2.7 KiB
YAML
name: Build and Deploy Versioned Spring Boot Server
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "*" # Match all tags
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# 1. Checkout the code
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
|
|
# 2. Set up Java and Maven
|
|
- name: Set up JDK (Eclipse Temurin)
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: "17"
|
|
cache: maven
|
|
|
|
# 3. Verify Maven installation
|
|
- name: Install Maven
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y maven
|
|
mvn -version
|
|
|
|
# 4. Build the Spring Boot application
|
|
- name: Build Spring Boot Application
|
|
run: |
|
|
mvn clean package -DskipTests
|
|
|
|
# 5. Set up Docker
|
|
- name: Set up Docker
|
|
run: |
|
|
docker --version
|
|
|
|
# 6. Extract the tag name
|
|
- name: Extract Tag Version
|
|
id: extract_version
|
|
run: |
|
|
TAG_VERSION=$(echo "${GITHUB_REF}" | sed 's#refs/tags/##')
|
|
if [ -z "$TAG_VERSION" ]; then
|
|
echo "Error: TAG_VERSION is empty."
|
|
exit 1
|
|
fi
|
|
echo "TAG_VERSION=$TAG_VERSION" >> $GITHUB_ENV
|
|
|
|
# Extract major and minor versions
|
|
MAJOR_VERSION=$(echo "${TAG_VERSION}" | cut -d. -f1)
|
|
MINOR_VERSION=$(echo "${TAG_VERSION}" | cut -d. -f1,2)
|
|
echo "MAJOR_VERSION=$MAJOR_VERSION" >> $GITHUB_ENV
|
|
echo "MINOR_VERSION=$MINOR_VERSION" >> $GITHUB_ENV
|
|
|
|
# 7. Build the Docker image with the tag
|
|
- name: Build and Package Docker Image
|
|
run: |
|
|
docker build -t tea.zendric.de/cedric/xpensely-server:${{ env.TAG_VERSION }} .
|
|
|
|
# 8. Tag the image with Major Version (e.g., 0)
|
|
- name: Tag with Major Version
|
|
run: |
|
|
docker tag tea.zendric.de/cedric/xpensely-server:${{ env.TAG_VERSION }} tea.zendric.de/cedric/xpensely-server:${{ env.MAJOR_VERSION }}
|
|
|
|
# 9. Tag the image with Minor Version (e.g., 0.1)
|
|
- name: Tag with Minor Version
|
|
run: |
|
|
docker tag tea.zendric.de/cedric/xpensely-server:${{ env.TAG_VERSION }} tea.zendric.de/cedric/xpensely-server:${{ env.MINOR_VERSION }}
|
|
|
|
# 10. Docker login
|
|
- name: Login to Docker Registry
|
|
run: |
|
|
echo "${{ secrets.TEAPASSWORD }}" | docker login tea.zendric.de -u ${{ secrets.TEAUSER }} --password-stdin
|
|
|
|
# 11. Push the Docker images with the tags
|
|
- name: Push the Docker Image to registry
|
|
run: |
|
|
docker push tea.zendric.de/cedric/xpensely-server:${{ env.TAG_VERSION }}
|
|
docker push tea.zendric.de/cedric/xpensely-server:${{ env.MAJOR_VERSION }}
|
|
docker push tea.zendric.de/cedric/xpensely-server:${{ env.MINOR_VERSION }}
|