ryanzidago
How to fetch a private dependency on GitHub Actions?
I use GitHub Actions to run tests every time I commit.
I have an application that uses a private repo on GitHub as a dependency.
My mix.exs file looks like this:
{:private_dependency, git: "git@github.com:ORGANIZATION/private_dependency.git"}, ref: "sha_of_working_commit_on_my_private_dependency_repo"}
However, GitHub Actions fails to fetch this particular dependency:
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
** (Mix) Command "git --git-dir=.git fetch --force --quiet --progress" failed
##[error]Process completed with exit code 1.
How to fetch a private dependency on GitHub Actions?
Most Liked
mpraski
In Github Actions you may want to set the GITHUB_TOKEN variable in the step where you pull the repos:
- name: SomeStep
run: git config --global url."https://${GITHUB_TOKEN}:x-oauth-basic@github.com/".insteadOf "https://github.com/" && YOUR_COMMAND
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
You will need to generate a token with valid claims for this private repo and include it in your repo’s secrets. Notice how git is being configured to always include your token in the URL (https://${GITHUB_TOKEN}:x-oauth-basic@github.com) instead of just calling https://github.com/. Hopefully this configuration will suffice, but you’ll have to test it out.
Read more on the token here: Use GITHUB_TOKEN for authentication in workflows - GitHub Docs.
NobbZ
ryanzidago
I finally got it working.
In my mix.exs file, I fetched the private dependency with SSH. Then I updated my workflow definition file with the webfactory/ssh-agent action; followed the steps in the README and added a deploy_key to the private dependency that GHA was trying to fetch.
More here: What is the proper private key format? · Issue #31 · webfactory/ssh-agent · GitHub
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex









