docker-build-release.yml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. name: "docker build release"
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. project:
  6. description: 'Project'
  7. required: true
  8. default:
  9. jobs:
  10. build:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Checkout
  14. uses: actions/checkout@v3
  15. with:
  16. submodules: true
  17. - name: Set tag
  18. id: tag
  19. run: |
  20. if [[ -n $(cat ${{ github.event.inputs.project }}/Dockerfile | awk '{if($1~"ENV" && $2=="VERSION")print $3}') ]]; then
  21. VERSION=$(cat ${{ github.event.inputs.project }}/Dockerfile | awk '{if($1~"ENV" && $2=="VERSION")print $3}')
  22. echo "tag=$VERSION" >> $GITHUB_ENV
  23. else
  24. echo "tag=$(date +%Y)-$(date +%m)-$(date +%d)" >> $GITHUB_ENV
  25. fi
  26. - name: Set up QEMU
  27. uses: docker/setup-qemu-action@v2
  28. - name: Set up Docker Buildx
  29. uses: docker/setup-buildx-action@v2
  30. - name: Login Docker Hub
  31. uses: docker/login-action@v2
  32. with:
  33. username: ${{ secrets.DOCKER_USERNAME }}
  34. password: ${{ secrets.DOCKER_PASSWORD }}
  35. - name: Build and push to docker hub
  36. uses: docker/[email protected]
  37. with:
  38. context: ${{ github.event.inputs.project }}
  39. platforms: linux/amd64,linux/arm64
  40. push: true
  41. tags: |
  42. ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }}:latest
  43. ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }}:${{ env.tag }}
  44. - name: Sync README.md to Docker Hub
  45. uses: ms-jpq/sync-dockerhub-readme@v1
  46. with:
  47. username: ${{ secrets.DOCKER_USERNAME }}
  48. password: ${{ secrets.DOCKER_PASSWORD }}
  49. repository: ${{ secrets.DOCKER_USERNAME }}/${{ github.event.inputs.project }}
  50. readme: "${{ github.event.inputs.project }}/README.md"
  51. - name: Login harbor
  52. uses: docker/login-action@v2
  53. with:
  54. registry: ${{ secrets.HARBOR_REGISTRY }}
  55. username: ${{ secrets.HARBOR_USERNAME }}
  56. password: ${{ secrets.HARBOR_PASSWORD }}
  57. - name: Build and push to harbor
  58. uses: docker/build-push-action@v3
  59. with:
  60. context: ${{ github.event.inputs.project }}
  61. platforms: linux/amd64,linux/arm64
  62. push: true
  63. tags: |
  64. ${{ secrets.HARBOR_REGISTRY }}/${{ secrets.HARBOR_PROJECT_STILLESHAN }}/${{ github.event.inputs.project }}:latest
  65. ${{ secrets.HARBOR_REGISTRY }}/${{ secrets.HARBOR_PROJECT_STILLESHAN }}/${{ github.event.inputs.project }}:${{ env.tag }}