58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: DockerHub - Build & Push
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    tags:
 | 
						|
      - v*
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    runs-on: ubuntu-22.04
 | 
						|
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
 | 
						|
      - name: Set up JDK 17
 | 
						|
        uses: actions/setup-java@v4
 | 
						|
        with:
 | 
						|
          java-version: '17'
 | 
						|
          distribution: 'temurin'
 | 
						|
          cache: maven
 | 
						|
 | 
						|
      - name: Cache local Maven repository
 | 
						|
        uses: actions/cache@v3
 | 
						|
        with:
 | 
						|
          path: ~/.m2/repository
 | 
						|
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
 | 
						|
          restore-keys: |
 | 
						|
            ${{ runner.os }}-maven-            
 | 
						|
 | 
						|
      - name: Build with Maven
 | 
						|
        run: mvn -B package --file pom.xml -Dmaven.test.skip=true
 | 
						|
 | 
						|
      - name: Get Maven project version
 | 
						|
        id: version
 | 
						|
        run: |
 | 
						|
          echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> "$GITHUB_OUTPUT"          
 | 
						|
 | 
						|
      - name: Set up Docker Buildx
 | 
						|
        uses: docker/setup-buildx-action@v3
 | 
						|
 | 
						|
      - name: Login to Docker Hub
 | 
						|
        uses: docker/login-action@v3
 | 
						|
        with:
 | 
						|
          username: ${{ secrets.DOCKER_USERNAME }}
 | 
						|
          password: ${{ secrets.DOCKER_PASSWORD }}
 | 
						|
 | 
						|
      - name: Build and push Docker image
 | 
						|
        uses: docker/build-push-action@v5
 | 
						|
        env:
 | 
						|
          DOCKER_NAMESPACE: ${{ secrets.DOCKER_NAMESPACE }}
 | 
						|
          VERSION: ${{ steps.version.outputs.version }}
 | 
						|
        with:
 | 
						|
          context: snail-job-server/snail-job-server-starter/
 | 
						|
          platforms: linux/amd64,linux/arm64
 | 
						|
          push: true
 | 
						|
          tags: |
 | 
						|
            ${{ env.DOCKER_NAMESPACE }}/snail-job:latest
 | 
						|
            ${{ env.DOCKER_NAMESPACE }}/snail-job:${{ env.VERSION }}             |