Skip to content

Instantly share code, notes, and snippets.

@initcron
Last active May 22, 2025 02:48
Show Gist options
  • Save initcron/ed0d56aa399f54f6b92de5194d93feab to your computer and use it in GitHub Desktop.
Save initcron/ed0d56aa399f54f6b92de5194d93feab to your computer and use it in GitHub Desktop.
Complete CI Pipeline for Sysfoo App
name: CI Pipeline
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Compile sysfoo app
run: mvn compile
test:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
job: [unit-test, sca, sbom]
name: Run ${{ matrix.job }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Run ${{ matrix.job }}
run: |
if [ "${{ matrix.job }}" == "unit-test" ]; then
mvn clean test
elif [ "${{ matrix.job }}" == "sca" ]; then
sleep 4
elif [ "${{ matrix.job }}" == "sbom" ]; then
sleep 2
fi
package:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Package app
run: mvn package -DskipTests
- name: Archive JAR
uses: actions/upload-artifact@v4
with:
name: sysfoo-artifact
path: target/*.jar
docker_bnp:
runs-on: ubuntu-latest
needs: package
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build and test Docker image
run: |
COMMIT_HASH=$(echo ${{ github.sha }} | cut -c1-7)
docker build -t docker.io/${{ vars.DOCKERHUB_USERNAME }}/sysfoo:$COMMIT_HASH -f Dockerfile .
- name: Log in to DockerHub Container Registry
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push Docker image to DockerHub
run: |
COMMIT_HASH=$(echo ${{ github.sha }} | cut -c1-7)
docker tag docker.io/${{ vars.DOCKERHUB_USERNAME }}/sysfoo:$COMMIT_HASH docker.io/${{ vars.DOCKERHUB_USERNAME }}/sysfoo:latest
docker push docker.io/${{ vars.DOCKERHUB_USERNAME }}/sysfoo:$COMMIT_HASH
docker push docker.io/${{ vars.DOCKERHUB_USERNAME }}/sysfoo:latest
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment