name: Build and Push Docker Image on: push: branches: - main - test jobs: build-and-push: runs-on: self-hosted steps: - name: Checkout code uses: actions/checkout@v2 - name: Build Docker image run: | IMAGE_NAME="ghcr.io/jurajkubrican/knet/go-web-server" RUN_NUMBER="${{ github.run_number }}" docker build -t "$IMAGE_NAME:latest" -t "$IMAGE_NAME:${{ github.run_number }}" . - name: Ensure no existing temp container run: | if [ "$(docker ps -aq -f name=temp-go-web-server)" ]; then docker stop temp-go-web-server || true docker rm temp-go-web-server || true fi - name: Run temporary container for health check run: | docker run -d --name temp-go-web-server -p 54322:54321 go-web-server:latest sleep 10 # Wait for the container to start if curl -f http://localhost:54322/health; then echo "Health check passed" docker stop temp-go-web-server docker rm -f temp-go-web-server else echo "Health check failed" docker logs temp-go-web-server docker stop temp-go-web-server docker rm -f temp-go-web-server exit 1 fi - name: Stop and remove current container run: | if [ "$(docker ps -q -f name=go-web-server)" ]; then docker stop go-web-server docker rm go-web-server fi - name: Run new container run: | IMAGE_NAME="ghcr.io/jurajkubrican/knet/go-web-server" docker run -d --name go-web-server -p 54321:54321 -v "$(pwd)/data:/app/data" "$IMAGE_NAME:latest"