Jack Daniel
Jack Daniel

Reputation: 2611

Github Actions - Invalid workflow file

I am trying to build CI/CD pipelines using GitHub Actions but unfortunately, I am stuck with an error with the yaml file.

Here is my Yaml file is:

---
name: Build and push python code to gcp with github actions
on:
  push:
    branches:
      - main
jobs:
  build_push_grc:
    name: Build and push to gcr
    runs_on: unbuntu-latest
  env:
    IMAGE_NAME: learning_cicd
    PROJECT_ID: personal-370316
  steps:
    - name: Checkoutstep
      uses: actions/checkout@v2
    - uses: google-github-actions/setup-gcloud@master
      with:
        service_account_key: ${{ secrets.SERVICE_ACCOUNT_KEY}}
        project_id: ${{ env.PROJECT_ID }}
        export_default_credentials: true
    
    - name: Build Docker Image
      run: docker build -t $IMAGE_NAME:latest .
    
    - name: Configure Docker Client
      run: |-
        gcloud auth configure-docker --quiet
    
    - name: Push Docker Image to Container Registry (GCR)
      env:
        GIT_TAG: v0.1.0
      run: |-
        docker tag $IMAGE_NAME:latest gcr.io/$PROJECT_ID/$IMAGE_NAME:latest
        docker tag $IMAGE_NAME:latest gcr.io/$PROJECT_ID/$IMAGE_NAME:$GIT_TAG
        docker push gcr.io/$PROJECT_ID/$IMAGE_NAME:latest
        docker push gcr.io/$PROJECT_ID/$IMAGE_NAME:$GIT_TAG

Here is an error where I am stuck with:

GitHub Actions
/ .github/workflows/gcp.yaml
Invalid workflow file
You have an error in your yaml syntax on line 15

I tried all possible indentations available on the internet but had no luck. I tried Yamllinter but still could not find where the error comes from. Please point me to where I am going wrong.

Thanks.

Upvotes: 1

Views: 1300

Answers (1)

Andrii Bodnar
Andrii Bodnar

Reputation: 2192

The runs-on (not runs_on) should have two spaces indentation relative to the job identifier. Also, the OS should be ubuntu-latest.

Then, env should have the same indentation as runs-on or name, the same as steps.

Here is the correct WF:

---
name: Build and push python code to gcp with github actions
on:
  push:
    branches:
      - main
jobs:
  build_push_grc:
    name: Build and push to gcr
    runs-on: ubuntu-latest
    env:
      IMAGE_NAME: learning_cicd
      PROJECT_ID: personal-370316
    steps:
      - name: Checkoutstep
        uses: actions/checkout@v2
      - uses: google-github-actions/setup-gcloud@master
        with:
          service_account_key: ${{ secrets.SERVICE_ACCOUNT_KEY}}
          project_id: ${{ env.PROJECT_ID }}
          export_default_credentials: true

      - name: Build Docker Image
        run: docker build -t $IMAGE_NAME:latest .

      - name: Configure Docker Client
        run: |-
          gcloud auth configure-docker --quiet

      - name: Push Docker Image to Container Registry (GCR)
        env:
          GIT_TAG: v0.1.0
        run: |-
          docker tag $IMAGE_NAME:latest gcr.io/$PROJECT_ID/$IMAGE_NAME:latest
          docker tag $IMAGE_NAME:latest gcr.io/$PROJECT_ID/$IMAGE_NAME:$GIT_TAG
          docker push gcr.io/$PROJECT_ID/$IMAGE_NAME:latest
          docker push gcr.io/$PROJECT_ID/$IMAGE_NAME:$GIT_TAG

I would recommend debugging such issues in the GitHub file edit form (editing the yml file in the .github/workflows directory). It will highlight all the issues regarding the workflow syntax. Demo.

Upvotes: 2

Related Questions