docker.yml 3.4 KB

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