gp-docker-action icon indicating copy to clipboard operation
gp-docker-action copied to clipboard

Build Args do not work

Open grab-a-byte opened this issue 3 years ago • 17 comments
trafficstars

I am trying to pass build args to this action and it does not seem to want to work. I have tried with quotes, without quotes, nothing I try seems to be working.

Build here shows using linx-x86: https://github.com/parkeradam/DDNSUpdate/runs/5602781210?check_suite_focus=true Action file has build arg specified as linux-arm : https://github.com/parkeradam/DDNSUpdate/blob/4683dbd1d51be6ec0c41cd98a5c421ba3be29044/.github/workflows/arm-build.yml

Am i missing something?

Thanks in advance.

grab-a-byte avatar Mar 18 '22 15:03 grab-a-byte

@parkeradam did you ever find a workaround for this?

patrickserrano avatar Sep 30 '22 23:09 patrickserrano

@patrickserrano @parkeradam Sorry for the late response.

I think the source of this issue is the spaces inside of the custom-args: value.

Ex: custom-args: "--build-arg arg='value'" should work, but custom-args: "--build-arg arg='va lue'" wouldn't.

@patrickserrano could you please share your custom-args: value?

VaultVulp avatar Oct 01 '22 20:10 VaultVulp

I dont think any of my custom args has spaces or does this include the soace etween the individual build args?

grab-a-byte avatar Oct 02 '22 19:10 grab-a-byte

Thanks for the response, @parkeradam!

My previous comment is a bit misleading - I should have provided a different example.

In any case: I can acces the second link (https://github.com/parkeradam/DDNSUpdate/blob/4683dbd1d51be6ec0c41cd98a5c421ba3be29044/.github/workflows/arm-build.yml) with the following custom-arg:

custom-args: --build-arg "APP_BUILD_RUNTIME=linux-arm" --build-arg "DOCKER_BUILD_RUNTIME=mcr.microsoft.com/dotnet/runtime:6.0.3-bullseye-slim-arm64v8" --build-arg "DOCKER_BUILD_SDK=mcr.microsoft.com/dotnet/sdk:6.0.201-bullseye-slim-arm64v8"

In this case, I think the correct value for the custom-args: should be:

custom-args: --build-arg=APP_BUILD_RUNTIME="linux-arm" --build-arg=DOCKER_BUILD_RUNTIME="mcr.microsoft.com/dotnet/runtime:6.0.3-bullseye-slim-arm64v8" --build-arg=DOCKER_BUILD_SDK="mcr.microsoft.com/dotnet/sdk:6.0.201-bullseye-slim-arm64v8"

Note that I've added = after each --build-arg and moved each opening quote to wrap values only.

I'm not 100% sure about this, but from my tests it should work.

Could you, @patrickserrano , please, update your pipeline and check this?

VaultVulp avatar Oct 02 '22 19:10 VaultVulp

If you want and when you have spare time, of course. No pressure.

VaultVulp avatar Oct 02 '22 19:10 VaultVulp

Apologies, just seen this! Will give this a try hopefully within the next couple of week, been busy! Will keep you uodated. Thanks for the help on this :)

grab-a-byte avatar Oct 16 '22 17:10 grab-a-byte

Btw, recently I published a new version of this action. I tried to rework agruments pass-through in it to make it more reliable.

VaultVulp avatar Oct 21 '22 00:10 VaultVulp

I've tried with and without quotes on the build args and without quotes seemd to get me further but then failed to build the container, unsure if its actually picked up the dotnet build. https://github.com/parkeradam/DDNSUpdate/blob/develop/.github/workflows/arm-build.yml ( See file previous commit for using the args you mentioned above, also failed) I've also updated to the new version of the step.

grab-a-byte avatar Oct 25 '22 21:10 grab-a-byte

Thanks, @parkeradam !

As far as I understood, now there is the following error:

#12 ERROR: executor failed running [/bin/sh -c dotnet restore "DDNSUpdate/DDNSUpdate.csproj"]: exit code: 1

I think it's related to the build process itself, and not the action and/or arguments.

Maybe you could share any logs from the inside of a build stage? Are you able to build this Image locally?

VaultVulp avatar Oct 28 '22 17:10 VaultVulp

@parkeradam do you need more help with this issue or can I mark it as resolved?

VaultVulp avatar Jan 14 '23 20:01 VaultVulp

@VaultVulp feel free to close, apologies for ghosting, had a lot on atm! I'll open up another issue if i have problems when i get around to retrying. Thanks for your help :)

grab-a-byte avatar Jan 14 '23 22:01 grab-a-byte

Hi @VaultVulp

I have the following issue. In my dockerfile:

ARG HOST_USER_UID=1000
ARG HOST_USER_GID=1000

RUN echo $HOST_USER_UID $HOST_USER_GID

in my action yml:

custom-args: --target=dev --build-arg=HOST_USER_UID=1001 --build-arg=HOST_USER_GID=123

I get the following output:

sh: --build-arg=HOST_USER_UID="1001": unknown operand

......

#6 [base 2/8] RUN echo 1000 1000
#6 0.128 1000 1000
#6 DONE 0.3s

So its not getting passed in as i would expect. Any ideas? Just checking here as I think im code blind at the moment. Ive tried wrapping the values in quotes too same error. Nothing comes through.

mattvb91 avatar Jul 12 '23 15:07 mattvb91

Ho, @mattvb91!

Thanks for your question!

Sadly, it's a bit tricky to solve this issue w/o testing. Do you mind sharing the complete configuration for my action?

Btw, I have an example configuration with the custom-args here: https://github.com/VaultVulp/test-gp-docker-action/blob/master/.github/workflows/workflow.master.yml#L61-L72

VaultVulp avatar Jul 13 '23 20:07 VaultVulp

Hi @VaultVulp I have the same problem that @mattvb91 describes. This is my config:

name: Build container image

on:
  push:
    tags:
      - '*'

jobs:
  container-image-dev:
    runs-on: ubuntu-latest
    environment: development

    steps:
      - uses: actions/checkout@v4

      - name: Build container image
        uses: VaultVulp/[email protected]
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          image-name: image-dev
          extract-git-tag: true
          additional-image-tags: latest
          dockerfile: Containerfile
          build-context: .
          custom-args: --build-arg=SOME_URL="${{ vars.DEV_SOME_URL }}" --build-arg=OTHER_URL="${{ vars.DEV_OTHER_URL }}"

  container-image-prod:
    runs-on: ubuntu-latest
    environment: production

    steps:
      - uses: actions/checkout@v4

      - name: Build container image
        uses: VaultVulp/[email protected]
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          image-name: image-prod
          extract-git-tag: true
          additional-image-tags: latest
          dockerfile: Containerfile
          build-context: .
          custom-args: --build-arg=SOME_URL="${{ vars.PROD_SMOME_URL }}" --build-arg=OTHER_URL="${{ vars.PROD_OTHER_URL }}"

which shows this in the job output:

sh: : unknown operand
sh: --build-arg=SOME_URL="http://the/url": unknown operand

categulario avatar Mar 20 '24 19:03 categulario

@categulario Thanks for your attention to my project.

From my first impression it seems like your config should work and I'm not sure why action behaves in such way. I'll replicate your config and get back to you.

VaultVulp avatar Mar 20 '24 23:03 VaultVulp

@categulario sorry for the very late response.

I've done some research on this issue. It seems smth was altered on the GitHub's side and it changed the way docker-based actions are executed. I'm still unsure how to handle this update properly, but I've tinkered with the action a bit and was able to pass arguments into the action:

Configuration: https://github.com/VaultVulp/test-gp-docker-action/actions/runs/8980317812/workflow#L86 CI runs:

  • https://github.com/VaultVulp/test-gp-docker-action/actions/runs/8980317812/job/24663741725#step:4:48
  • https://github.com/VaultVulp/test-gp-docker-action/actions/runs/8980317812/job/24663741949#step:4:45

Could you, please, try to run this 1.7.0 version of the action?

VaultVulp avatar May 07 '24 05:05 VaultVulp

At the moment I had an urgent need to have images with arguments built using actions so I moved to docker/build-push-action.

I'll report back here if I manage to test the new version

categulario avatar May 07 '24 18:05 categulario