From 4fe5d2d0724cb746cd187af4429d959415f2acdf Mon Sep 17 00:00:00 2001 From: pigwin Date: Sun, 29 Dec 2024 16:25:01 +0100 Subject: [PATCH] Create docker-image github actions --- .github/workflows/docker-image.yml | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..53d57b8 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,51 @@ +name: Build and Publish Docker Image + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to Docker Hub + uses: docker/login-action@v1 + 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 my-go-app:dev-${{ env.TIMESTAMP }} . + else + docker build -t my-go-app:latest -t my-go-app:${{ env.GIT_TAG }} . + fi + + - name: Push Docker image + run: | + if [ "${{ env.GIT_TAG }}" == "no-tag" ]; then + docker tag my-go-app:dev-${{ env.TIMESTAMP }} ${{ secrets.DOCKER_USERNAME }}/my-go-app:dev-${{ env.TIMESTAMP }} + docker push ${{ secrets.DOCKER_USERNAME }}/my-go-app:dev-${{ env.TIMESTAMP }} + else + docker tag my-go-app:latest ${{ secrets.DOCKER_USERNAME }}/my-go-app:latest + docker tag my-go-app:${{ env.GIT_TAG }} ${{ secrets.DOCKER_USERNAME }}/my-go-app:${{ env.GIT_TAG }} + docker push ${{ secrets.DOCKER_USERNAME }}/my-go-app:latest + docker push ${{ secrets.DOCKER_USERNAME }}/my-go-app:${{ env.GIT_TAG }} + fi