mirror of
				https://github.com/aykhans/dodo.git
				synced 2025-10-30 20:19:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: publish-docker-image
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     tags:
 | |
|       # Match stable and pre versions, such as 'v1.0.0', 'v0.23.0-a', 'v0.23.0-a.2', 'v0.23.0-b', 'v0.23.0-b.3'
 | |
|       - "v*.*.*"
 | |
|       - "v*.*.*-a"
 | |
|       - "v*.*.*-a.*"
 | |
|       - "v*.*.*-b"
 | |
|       - "v*.*.*-b.*"
 | |
| 
 | |
| jobs:
 | |
|   build-and-push-stable-image:
 | |
|     runs-on: ubuntu-latest
 | |
|     permissions:
 | |
|       contents: read
 | |
|       packages: write
 | |
|     steps:
 | |
|       - uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v3
 | |
| 
 | |
|       - name: Extract build args
 | |
|         # Extract version number and check if it's an pre version
 | |
|         run: |
 | |
|           if [[ "${GITHUB_REF_NAME}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
 | |
|               echo "PRE_RELEASE=false" >> $GITHUB_ENV
 | |
|           else
 | |
|               echo "PRE_RELEASE=true" >> $GITHUB_ENV
 | |
|           fi
 | |
|           echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
 | |
| 
 | |
|       - name: Login to Docker Hub
 | |
|         uses: docker/login-action@v3
 | |
|         with:
 | |
|           username: aykhans
 | |
|           password: ${{ secrets.DOCKER_TOKEN }}
 | |
| 
 | |
|       - name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v3
 | |
|         with:
 | |
|           install: true
 | |
|           version: v0.9.1
 | |
| 
 | |
|       # Metadata for stable versions
 | |
|       - name: Docker meta for stable
 | |
|         id: meta-stable
 | |
|         if: env.PRE_RELEASE == 'false'
 | |
|         uses: docker/metadata-action@v5
 | |
|         with:
 | |
|           images: |
 | |
|             aykhans/dodo
 | |
|           tags: |
 | |
|             type=semver,pattern={{version}},value=${{ env.VERSION }}
 | |
|             type=raw,value=stable
 | |
|           flavor: |
 | |
|             latest=true
 | |
|           labels: |
 | |
|             org.opencontainers.image.version=${{ env.VERSION }}
 | |
| 
 | |
|       # Metadata for pre versions
 | |
|       - name: Docker meta for pre
 | |
|         id: meta-pre
 | |
|         if: env.PRE_RELEASE == 'true'
 | |
|         uses: docker/metadata-action@v5
 | |
|         with:
 | |
|           images: |
 | |
|             aykhans/dodo
 | |
|           tags: |
 | |
|             type=raw,value=${{ env.VERSION }}
 | |
|           labels: |
 | |
|             org.opencontainers.image.version=${{ env.VERSION }}
 | |
| 
 | |
|       - name: Build and Push
 | |
|         id: docker_build
 | |
|         uses: docker/build-push-action@v6
 | |
|         with:
 | |
|           context: ./
 | |
|           file: ./Dockerfile
 | |
|           platforms: linux/amd64,linux/arm64
 | |
|           push: true
 | |
|           tags: ${{ steps.meta-stable.outputs.tags || steps.meta-pre.outputs.tags }}
 | |
|           labels: ${{ steps.meta-stable.outputs.labels || steps.meta-pre.outputs.labels }}
 |