mirror of
				https://github.com/asdlokj1qpi233/subconverter.git
				synced 2025-10-28 20:32:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Publish Docker Image
 | |
| on: 
 | |
|   push:
 | |
|     branches: [ master ]
 | |
|     tags:
 | |
|       - '**'
 | |
| 
 | |
| concurrency: 
 | |
|   group: ${{ github.ref }}-${{ github.workflow }}
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| env:
 | |
|   REGISTRY_IMAGE: asdlokj1qpi23/subconverter
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     strategy:
 | |
|       matrix:
 | |
|         include:
 | |
|           - platform: linux/amd64
 | |
|             os: ubuntu-latest
 | |
|           - platform: linux/386
 | |
|             os: ubuntu-latest
 | |
|           - platform: linux/arm/v7
 | |
|             os: ubuntu-latest
 | |
|           - platform: linux/arm64
 | |
|             os: ubuntu-latest
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     name: Build ${{ matrix.platform }} Image
 | |
|     steps:
 | |
|       - name: Prepare
 | |
|         run: |
 | |
|           platform=${{ matrix.platform }}
 | |
|           echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV    
 | |
| 
 | |
|       - name: Checkout base
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
|       - name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v3
 | |
| 
 | |
|       - name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v3
 | |
| 
 | |
|       - name: Docker meta
 | |
|         id: meta
 | |
|         uses: docker/metadata-action@v5
 | |
|         with:
 | |
|           images: ${{ env.REGISTRY_IMAGE }}
 | |
|           tags: |
 | |
|             type=semver,pattern={{version}}
 | |
|             type=raw,value=latest,enable={{is_default_branch}}
 | |
| 
 | |
|       - name: Docker login
 | |
|         uses: docker/login-action@v3
 | |
|         with:
 | |
|           username: ${{ secrets.DOCKER_USERNAME }}
 | |
|           password: ${{ secrets.DOCKER_PASSWORD }}
 | |
| 
 | |
|       - name: Get commit SHA
 | |
|         if: github.ref == 'refs/heads/master'
 | |
|         id: vars
 | |
|         run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
 | |
| 
 | |
|       - name: Build and export
 | |
|         id: build
 | |
|         uses: docker/build-push-action@v5
 | |
|         with:
 | |
|           platforms: ${{ matrix.platform }}
 | |
|           context: scripts/
 | |
|           labels: ${{ steps.meta.outputs.labels }}
 | |
|           build-args: |
 | |
|             SHA=${{ steps.vars.outputs.sha_short }}
 | |
|           outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
 | |
| 
 | |
|       - name: Export digest
 | |
|         run: |
 | |
|           rm -rf /tmp/digests
 | |
|           mkdir -p /tmp/digests
 | |
|           digest="${{ steps.build.outputs.digest }}"
 | |
|           touch "/tmp/digests/${digest#sha256:}"
 | |
| 
 | |
|       - name: Upload artifact
 | |
|         uses: actions/upload-artifact@v4
 | |
|         with:
 | |
|           name: digest-${{ env.PLATFORM_PAIR }}
 | |
|           path: /tmp/digests/*
 | |
|           if-no-files-found: error
 | |
|           retention-days: 1
 | |
| 
 | |
|   merge:
 | |
|     name: Merge
 | |
|     needs: build
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - name: Download digests
 | |
|         uses: actions/download-artifact@v4
 | |
|         with:
 | |
|           path: /tmp/digests
 | |
|           pattern: digest-*
 | |
|           merge-multiple: true
 | |
| 
 | |
|       - name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v3
 | |
| 
 | |
|       - name: Docker meta
 | |
|         id: meta
 | |
|         uses: docker/metadata-action@v5
 | |
|         with:
 | |
|           images: ${{ env.REGISTRY_IMAGE }}
 | |
|           tags: |
 | |
|             type=semver,pattern={{version}}
 | |
|             type=raw,value=latest,enable={{is_default_branch}}
 | |
| 
 | |
|       - name: Docker login
 | |
|         uses: docker/login-action@v3
 | |
|         with:
 | |
|           username: ${{ secrets.DOCKER_USERNAME }}
 | |
|           password: ${{ secrets.DOCKER_PASSWORD }}
 | |
| 
 | |
|       - name: Create manifest list and push
 | |
|         working-directory: /tmp/digests
 | |
|         run: |
 | |
|           docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
 | |
|             $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)      
 | |
| 
 | |
|       - name: Inspect image
 | |
|         run: |
 | |
|           docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
 |