127 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
| name: build
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - 'main'
 | |
|       - 'release/*'
 | |
|     tags:
 | |
|       - 'v*'
 | |
|   pull_request:
 | |
|     branches:
 | |
|       - '*'
 | |
| 
 | |
| env:
 | |
|   DOCKERHUB_SLUG: distribution/distribution
 | |
| 
 | |
| jobs:
 | |
|   test:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         go:
 | |
|           - 1.17
 | |
|           - 1.18
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v3
 | |
|       -
 | |
|         name: Set up Go
 | |
|         uses: actions/setup-go@v3
 | |
|         with:
 | |
|           go-version: ${{ matrix.go }}
 | |
|       -
 | |
|         name: Test
 | |
|         run: |
 | |
|           make coverage          
 | |
|       -
 | |
|         name: Codecov
 | |
|         uses: codecov/codecov-action@v3
 | |
|         with:
 | |
|           directory: ./
 | |
| 
 | |
|   build:
 | |
|     runs-on: ubuntu-latest
 | |
|     needs:
 | |
|       - test
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
|       -
 | |
|         name: Docker meta
 | |
|         id: meta
 | |
|         uses: docker/metadata-action@v3
 | |
|         with:
 | |
|           images: |
 | |
|             ${{ env.DOCKERHUB_SLUG }}            
 | |
|           ### versioning strategy
 | |
|           ### push semver tag v3.2.1 on main (default branch)
 | |
|           # distribution/distribution:3.2.1
 | |
|           # distribution/distribution:3.2
 | |
|           # distribution/distribution:3
 | |
|           # distribution/distribution:latest
 | |
|           ### push semver prelease tag v3.0.0-beta.1 on main (default branch)
 | |
|           # distribution/distribution:3.0.0-beta.1
 | |
|           ### push on main
 | |
|           # distribution/distribution:edge
 | |
|           tags: |
 | |
|             type=semver,pattern={{version}}
 | |
|             type=semver,pattern={{major}}.{{minor}}
 | |
|             type=semver,pattern={{major}}
 | |
|             type=ref,event=pr
 | |
|             type=edge            
 | |
|           labels: |
 | |
|             org.opencontainers.image.title=Distribution
 | |
|             org.opencontainers.image.description=The toolkit to pack, ship, store, and deliver container content            
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|       -
 | |
|         name: Login to DockerHub
 | |
|         if: github.event_name != 'pull_request'
 | |
|         uses: docker/login-action@v1
 | |
|         with:
 | |
|           username: ${{ secrets.DOCKERHUB_USERNAME }}
 | |
|           password: ${{ secrets.DOCKERHUB_TOKEN }}
 | |
|       -
 | |
|         name: Build artifacts
 | |
|         uses: docker/bake-action@v1
 | |
|         with:
 | |
|           targets: artifact-all
 | |
|       -
 | |
|         name: Move artifacts
 | |
|         run: |
 | |
|           mv ./bin/**/* ./bin/          
 | |
|       -
 | |
|         name: Upload artifacts
 | |
|         uses: actions/upload-artifact@v2
 | |
|         with:
 | |
|           name: registry
 | |
|           path: ./bin/*
 | |
|           if-no-files-found: error
 | |
|       -
 | |
|         name: Build image
 | |
|         uses: docker/bake-action@v1
 | |
|         with:
 | |
|           files: |
 | |
|             ./docker-bake.hcl
 | |
|             ${{ steps.meta.outputs.bake-file }}            
 | |
|           targets: image-all
 | |
|           push: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') }}
 | |
|       -
 | |
|         name: GitHub Release
 | |
|         uses: softprops/action-gh-release@v1
 | |
|         if: startsWith(github.ref, 'refs/tags/')
 | |
|         with:
 | |
|           draft: true
 | |
|           files: |
 | |
|             bin/*.tar.gz
 | |
|             bin/*.sha256            
 | |
|         env:
 | |
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 |