I have been trying to set up a container workflow in my github project so that it is triggered by every push to to repo and. It must build the container image from the default Dockerfile and push the image to my GitHub container registry (GHCR). Before I can push an image to the registry, I need to be authenticated. I have a PAT (personal access token) for it that I can use from terminal for manual push. Then I made a secret for it so that I can use it in the workflow. So far, I have not been able to pass authentication step in the workflow.
Here's my container workflow yaml:.
name: Docker Image CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
repo-token: ${{secrets.GHCR_LOGIN}}
- name: Build the Docker image
# run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
run: docker build -t ghcr.io/myusername/repo:latest .
# - name: Authenticate in the Workflow
run: echo $GHCR_LOGIN |docker login ghcr.io -u myusername --password-stdin
- name: Push the Docker image
run: docker push ghcr.io/myusername/repo:latest
The error I get with this definition is that docker cannot authenticate from standard input in non-tty environment. But, there must be a way to pass the secret or password to docker.