name: Build and Publish Docker Image on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get the current timestamp id: timestamp run: echo "TIMESTAMP=$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV - name: Get the commit tag id: get-tag run: echo "GIT_TAG=$(git describe --tags --exact-match 2>/dev/null || echo 'no-tag')" >> $GITHUB_ENV - name: Build Docker image run: | if [ "${{ env.GIT_TAG }}" == "no-tag" ]; then docker build -t ti1:dev-${{ env.TIMESTAMP }} . else docker build -t ti1:latest -t ti1:${{ env.GIT_TAG }} . fi - name: Push Docker image run: | if [ "${{ env.GIT_TAG }}" == "no-tag" ]; then docker tag ti1:dev-${{ env.TIMESTAMP }} ${{ secrets.DOCKER_USERNAME }}/ti1:dev-${{ env.TIMESTAMP }} docker push ${{ secrets.DOCKER_USERNAME }}/ti1:dev-${{ env.TIMESTAMP }} else docker tag ti1:latest ${{ secrets.DOCKER_USERNAME }}/ti1:latest docker tag ti1:${{ env.GIT_TAG }} ${{ secrets.DOCKER_USERNAME }}/ti1:${{ env.GIT_TAG }} docker push ${{ secrets.DOCKER_USERNAME }}/ti1:latest docker push ${{ secrets.DOCKER_USERNAME }}/ti1:${{ env.GIT_TAG }} fi