publish-docker.yml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. name: Publish Docker
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. tag:
  6. description: 'docker tag'
  7. required: true
  8. release:
  9. types: [published]
  10. jobs:
  11. docker:
  12. runs-on: ubuntu-latest
  13. steps:
  14. -
  15. name: Set tag
  16. run: |
  17. if [[ -n "${{ github.event.inputs.tag }}" ]]; then
  18. TAG=${{ github.event.inputs.tag }}
  19. elif [[ "${{ github.ref_name }}" == 'master' ]]; then
  20. TAG="latest"
  21. else
  22. TAG="${{ github.ref_name }}"
  23. fi
  24. echo "TAG=${TAG}" >> $GITHUB_ENV
  25. -
  26. name: Checkout
  27. uses: actions/checkout@v2
  28. -
  29. name: Set up QEMU
  30. uses: docker/setup-qemu-action@v1
  31. -
  32. name: Set up Docker Buildx
  33. uses: docker/setup-buildx-action@v1
  34. -
  35. name: Login to DockerHub
  36. uses: docker/login-action@v1
  37. with:
  38. username: ${{ secrets.DOCKERHUB_USERNAME }}
  39. password: ${{ secrets.DOCKERHUB_TOKEN }}
  40. -
  41. name: Build x86 and export to Docker
  42. uses: docker/build-push-action@v2
  43. with:
  44. context: .
  45. load: true
  46. platforms: linux/amd64
  47. tags: ${{ env.TAG }}
  48. build-args: version=${{ env.TAG }}
  49. -
  50. name: Test x86
  51. run: |
  52. docker run --rm ${{ env.TAG }}&
  53. sleep 10
  54. kill %1
  55. -
  56. name: Build arm and export to Docker
  57. uses: docker/build-push-action@v2
  58. with:
  59. context: .
  60. load: true
  61. platforms: linux/arm64
  62. tags: ${{ env.TAG }}
  63. build-args: version=${{ env.TAG }}
  64. -
  65. name: Test arm
  66. run: |
  67. docker run --rm ${{ env.TAG }}&
  68. sleep 10
  69. kill %1
  70. -
  71. name: Build and push
  72. uses: docker/build-push-action@v2
  73. with:
  74. context: .
  75. platforms: linux/amd64, linux/arm64
  76. push: true
  77. tags: ${{ github.repository }}:${{ env.TAG }}
  78. build-args: version=${{ env.TAG }}