production-image.yml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. name: Docker Image Build CI
  2. on:
  3. push:
  4. tags:
  5. - 'tag/build-docker-image/*'
  6. jobs:
  7. build:
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: Checkout code
  11. uses: actions/checkout@v4
  12. - name: Set up Docker Buildx
  13. uses: docker/setup-buildx-action@v1
  14. - name: Set up Node.js
  15. uses: actions/setup-node@v2
  16. with:
  17. node-version: '14'
  18. - name: Read version from .env
  19. id: env
  20. run: echo "::set-output name=PRODUCTION_BUILD_VERSION::$(grep ^PRODUCTION_BUILD_VERSION= .env | cut -d'=' -f2)"
  21. - name: Build the Docker image for latest
  22. run: docker build -f ./.docker/Dockerfile_production -t ${{ vars.DOCKERHUB_USERNAME}}/tweb:latest .
  23. - name: Build the Docker image for specific version
  24. run: |
  25. version=${{ steps.env.outputs.PRODUCTION_BUILD_VERSION }}
  26. docker build -f ./.docker/Dockerfile_production -t ${{ vars.DOCKERHUB_USERNAME}}/tweb:${version} .
  27. - name: Login to Docker Hub
  28. run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ vars.DOCKERHUB_USERNAME}}" --password-stdin
  29. - name: Push versioned image
  30. run: |
  31. version=${{ steps.env.outputs.PRODUCTION_BUILD_VERSION }}
  32. docker push ${{ vars.DOCKERHUB_USERNAME}}/tweb:${version}
  33. - name: Push latest image
  34. run: |
  35. docker push ${{ vars.DOCKERHUB_USERNAME}}/tweb:latest
  36. test:
  37. needs: build
  38. runs-on: ubuntu-latest
  39. steps:
  40. - name: Checkout code
  41. uses: actions/checkout@v4
  42. - name: Read version from .env
  43. id: env
  44. run: echo "::set-output name=PRODUCTION_BUILD_VERSION::$(grep ^PRODUCTION_BUILD_VERSION= .env | cut -d'=' -f2)"
  45. - name: Pull versioned image
  46. run: |
  47. version=${{ steps.env.outputs.PRODUCTION_BUILD_VERSION }}
  48. docker pull ${{ vars.DOCKERHUB_USERNAME}}/tweb:${version}
  49. - name: Pull latest image
  50. run: docker pull ${{ vars.DOCKERHUB_USERNAME}}/tweb:latest