docker.yml 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. name: Docker
  2. permissions: read-all
  3. on:
  4. schedule:
  5. - cron: '0 1 * * *'
  6. push:
  7. tags:
  8. - '*.*.*'
  9. jobs:
  10. docker-images:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Checkout
  14. uses: actions/checkout@v3
  15. with:
  16. fetch-depth: 0
  17. - name: Generate Alpine Docker tag
  18. id: docker_alpine_tag
  19. run: |
  20. DOCKER_IMAGE=${{ github.repository_owner }}/miniflux
  21. DOCKER_VERSION=dev
  22. if [ "${{ github.event_name }}" = "schedule" ]; then
  23. DOCKER_VERSION=nightly
  24. TAGS="docker.io/${DOCKER_IMAGE}:${DOCKER_VERSION},ghcr.io/${DOCKER_IMAGE}:${DOCKER_VERSION},quay.io/${DOCKER_IMAGE}:${DOCKER_VERSION}"
  25. elif [[ $GITHUB_REF == refs/tags/* ]]; then
  26. DOCKER_VERSION=${GITHUB_REF#refs/tags/}
  27. TAGS="docker.io/${DOCKER_IMAGE}:${DOCKER_VERSION},ghcr.io/${DOCKER_IMAGE}:${DOCKER_VERSION},quay.io/${DOCKER_IMAGE}:${DOCKER_VERSION},docker.io/${DOCKER_IMAGE}:latest,ghcr.io/${DOCKER_IMAGE}:latest,quay.io/${DOCKER_IMAGE}:latest"
  28. fi
  29. echo ::set-output name=tags::${TAGS}
  30. - name: Generate Distroless Docker tag
  31. id: docker_distroless_tag
  32. run: |
  33. DOCKER_IMAGE=${{ github.repository_owner }}/miniflux
  34. DOCKER_VERSION=dev-distroless
  35. if [ "${{ github.event_name }}" = "schedule" ]; then
  36. DOCKER_VERSION=nightly-distroless
  37. TAGS="docker.io/${DOCKER_IMAGE}:${DOCKER_VERSION},ghcr.io/${DOCKER_IMAGE}:${DOCKER_VERSION},quay.io/${DOCKER_IMAGE}:${DOCKER_VERSION}"
  38. elif [[ $GITHUB_REF == refs/tags/* ]]; then
  39. DOCKER_VERSION=${GITHUB_REF#refs/tags/}-distroless
  40. TAGS="docker.io/${DOCKER_IMAGE}:${DOCKER_VERSION},ghcr.io/${DOCKER_IMAGE}:${DOCKER_VERSION},quay.io/${DOCKER_IMAGE}:${DOCKER_VERSION},docker.io/${DOCKER_IMAGE}:latest-distroless,ghcr.io/${DOCKER_IMAGE}:latest-distroless,quay.io/${DOCKER_IMAGE}:latest-distroless"
  41. fi
  42. echo ::set-output name=tags::${TAGS}
  43. - name: Set up QEMU
  44. uses: docker/setup-qemu-action@v2
  45. - name: Set up Docker Buildx
  46. uses: docker/setup-buildx-action@v2
  47. - name: Login to DockerHub
  48. uses: docker/login-action@v2
  49. with:
  50. username: ${{ secrets.DOCKERHUB_USERNAME }}
  51. password: ${{ secrets.DOCKERHUB_TOKEN }}
  52. - name: Login to GitHub Container Registry
  53. uses: docker/login-action@v2
  54. with:
  55. registry: ghcr.io
  56. username: ${{ github.repository_owner }}
  57. password: ${{ secrets.CR_PAT }}
  58. - name: Login to Quay Container Registry
  59. uses: docker/login-action@v2
  60. with:
  61. registry: quay.io
  62. username: ${{ secrets.QUAY_USERNAME }}
  63. password: ${{ secrets.QUAY_TOKEN }}
  64. - name: Build and Push Alpine images
  65. uses: docker/build-push-action@v4
  66. with:
  67. context: .
  68. file: ./packaging/docker/alpine/Dockerfile
  69. platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64
  70. push: true
  71. tags: ${{ steps.docker_alpine_tag.outputs.tags }}
  72. - name: Build and Push Distroless images
  73. uses: docker/build-push-action@v4
  74. with:
  75. context: .
  76. file: ./packaging/docker/distroless/Dockerfile
  77. platforms: linux/amd64,linux/arm64
  78. push: true
  79. tags: ${{ steps.docker_distroless_tag.outputs.tags }}