Turgut
Turgut

Reputation: 819

Google Kubernetes Engine + Github Actions with google build workflow stuck at build step

I've been trying to run Google Kubernetes Engine deploy action for my github repo.

I have made a github workflow job run and it is stuck at the build step, not updating. No matter how long I wait it is not changing its current state:

enter image description here

My dockerfile (I got it from the internet):

FROM ubuntu:20.04

# Install.
RUN \
  sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
  apt-get update && \
  apt-get -y upgrade && \
  apt-get install -y build-essential && \
  apt-get install -y software-properties-common && \
  apt-get install -y byobu curl git htop man unzip vim wget && \
  rm -rf /var/lib/apt/lists/*

# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/.scripts /root/.scripts

# Set environment variables.
ENV HOME /root

# Define working directory.
WORKDIR /root

# Define default command.
CMD ["bash"]

google.yml (The tamplate that github gave me):


name: Build and Deploy to GKE

on:
  push:
    branches:
      - "main"

env:
  PROJECT_ID: ${{ secrets.GKE_PROJECT }}
  GAR_LOCATION: europe-west1 # TODO: update region of the Artifact Registry
  GKE_CLUSTER: cluster-1    # TODO: update to cluster name
  GKE_ZONE: europe-west1   # TODO: update to cluster zone
  DEPLOYMENT_NAME: gke-deployment # TODO: update to deployment name
  REPOSITORY: samples # TODO: update to Artifact Registry docker repository
  IMAGE: static-site

jobs:
  setup-build-publish-deploy:
    name: Setup, Build, Publish, and Deploy
    runs-on: ubuntu-latest
    environment: production

    permissions:
      contents: 'read'
      id-token: 'write'

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    # Configure Workload Identity Federation and generate an access token.
    - id: 'auth'
      name: 'Authenticate to Google Cloud'
      uses: 'google-github-actions/auth@v0'
      with:
        token_format: 'access_token'
        workload_identity_provider: '---'
        service_account: '---'

    - name: Docker configuration
      run: |-
        echo ${{steps.auth.outputs.access_token}} | docker login -u oauth2accesstoken --password-stdin https://$GAR_LOCATION-docker.pkg.dev
    # Get the GKE credentials so we can deploy to the cluster
    - name: Set up GKE credentials
      uses: google-github-actions/get-gke-credentials@v0
      with:
        cluster_name: ${{ env.GKE_CLUSTER }}
        location: ${{ env.GKE_ZONE }}

    # Build the Docker image
    - name: Build
      run: |-
        docker build \
          --tag "$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA" \
          --build-arg GITHUB_SHA="$GITHUB_SHA" \
          --build-arg GITHUB_REF="$GITHUB_REF" \
          .
    # Push the Docker image to Google Artifact Registry
    - name: Publish
      run: |-
        docker push "$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA"
    # Set up kustomize
    - name: Set up Kustomize
      run: |-
        curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64
        chmod u+x ./kustomize
    # Deploy the Docker image to the GKE cluster
    - name: Deploy
      run: |-
        # replacing the image name in the k8s template
        ./kustomize edit set image LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG=$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA
        ./kustomize build . | kubectl apply -f -
        kubectl rollout status deployment/$DEPLOYMENT_NAME
        kubectl get services -o wide

I'm trying to deploy a C++ code.

Upvotes: 0

Views: 814

Answers (1)

Turgut
Turgut

Reputation: 819

For anyone having the same issue:

The problem is that when you say FROM ubuntu:20.04 in your docker file it tries to use a full version of ubuntu and when it's done, just like you are installing ubuntu in your computer, it asks for the basic setup questions like "what is your timezone" or "create a user". You must either get a different version of ubuntu that is more fit for an image or simply add this line after your "FROM ubuntu:20.04" line:

RUN apt-get update &&  DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata

Upvotes: 2

Related Questions