The goal is to automate:
Git Push → CI (Build + Test + Docker Image) → Push to Docker Registry → CD → VM Pull & Deploy
main
or develop
..github/workflows/ci-cd.yml
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
- name: Build Spring Boot JAR
run: mvn clean package -DskipTests
- name: Run tests
run: mvn test
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build Docker Image
run: docker build -t myusername/myapp:latest .
- name: Push Docker Image
run: docker push myusername/myapp:latest