You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

79 lines
2.5 KiB

  1. name: Deploy multi-architecture Docker images for transfer.sh with buildx
  2. on:
  3. schedule:
  4. - cron: '0 0 * * *' # everyday at midnight UTC
  5. pull_request:
  6. branches: master
  7. push:
  8. branches: master
  9. tags:
  10. - v*
  11. jobs:
  12. buildx:
  13. runs-on: ubuntu-latest
  14. steps:
  15. -
  16. name: Checkout
  17. uses: actions/checkout@v2
  18. -
  19. name: Prepare
  20. id: prepare
  21. run: |
  22. DOCKER_IMAGE=dutchcoders/transfer.sh
  23. DOCKER_PLATFORMS=linux/amd64,linux/arm/v7,linux/arm64,linux/386
  24. VERSION=edge
  25. if [[ $GITHUB_REF == refs/tags/* ]]; then
  26. VERSION=${GITHUB_REF#refs/tags/v}
  27. fi
  28. if [ "${{ github.event_name }}" = "schedule" ]; then
  29. VERSION=nightly
  30. fi
  31. TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
  32. if [ $VERSION = edge -o $VERSION = nightly ]; then
  33. TAGS="$TAGS --tag ${DOCKER_IMAGE}:latest"
  34. fi
  35. echo ::set-output name=docker_image::${DOCKER_IMAGE}
  36. echo ::set-output name=version::${VERSION}
  37. echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
  38. --build-arg VERSION=${VERSION} \
  39. --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
  40. --build-arg VCS_REF=${GITHUB_SHA::8} \
  41. ${TAGS} .
  42. -
  43. name: Set up Docker Buildx
  44. uses: crazy-max/ghaction-docker-buildx@v3
  45. -
  46. name: Docker Buildx (build)
  47. run: |
  48. docker buildx build --no-cache --pull --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
  49. -
  50. name: Docker Login
  51. if: success() && github.event_name != 'pull_request'
  52. env:
  53. DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
  54. DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
  55. run: |
  56. echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
  57. -
  58. name: Docker Buildx (push)
  59. if: success() && github.event_name != 'pull_request'
  60. run: |
  61. docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
  62. -
  63. name: Docker Check Manifest
  64. if: always() && github.event_name != 'pull_request'
  65. run: |
  66. docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
  67. -
  68. name: Clear
  69. if: always() && github.event_name != 'pull_request'
  70. run: |
  71. rm -f ${HOME}/.docker/config.json