Unable to publish nuget package - github actions - github-actions

I've built a github action to push my nuget package to github registry based on github docs. When it runs it compiles well but on push it runs to the following error.
Pushing XXXXX.1.0.0.nupkg to 'https://nuget.pkg.github.com/MYACCOUNT'
PUT https://nuget.pkg.github.com/MYACCOUNT/ warn : invalid repo host
'nuget.pkg.github.com', only github (github.com) repositories allowed BadRequest
https://nuget.pkg.github.com/MYACCOUNT/ 42ms error: Response status code does not indicate success: 400 (Bad Request).
Error message is not too verbose.
Api-key is registered in Personal access tokens. It has write/read:packages and full control of private repository permission.
What do I miss here?
Related yaml is the following:
name: publish to nuget
on:
push:
branches:
- master
jobs:
publish:
name: build, pack & publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout#v2
- name: Pack
run: dotnet pack XXX.csproj -c Release
- name: Prep packages
run: dotnet nuget add source --username MYACOUNTNAME --password *** --store-password-in-clear-text --name github "https://nuget.pkg.github.com/MYACCOUNTNAME/index.json"
- name: Publish to GitHub packages
run: dotnet nuget push bin/Release/*.nupkg --api-key *** --source "github"

For those who are concerned. After hours of struggle I found the problem.
I had to modify my .csproj file.
<RepositoryUrl>https://github.com/MYACCOUNTNAME/EXACT_REPOSITORY_NAME</RepositoryUrl>
My issues was that root url was https://nuget.pkg.github.com instead of github.com alone.
What a dumb error message...

Related

GitHub Action to publish assets

I have one GitHub Action that is transforming a design tokens json file into a CSS file containing variables. That is working ok.
I have another yml file that only starts up after the first workflow has finished:
name: Package
# Only trigger, when the transform workflow succeeded
on:
workflow_run:
workflows: ["transform"]
types:
- completed
jobs:
publish-gpr:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout#v3
- uses: actions/setup-node#v3
with:
node-version: 16
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
I just want to publish the CSS file as a package on GitHub Packages or NPM.
I am getting the following error:
npm ERR! code ENEEDAUTH
npm ERR! need auth This command requires you to be logged in to https://registry.npmjs.org/
npm ERR! need auth You need to authorize this machine using `npm adduser`
Try adding the publishConfig to your package.json file:
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
Also, please make sure that your package is scoped:
"name": "#<gh-user-or-org>/<repo>"
Make sure that your package-lock.json is also updated (since the npm ci command relies on it). For more details, read the Publishing a package.
To publish your package to the regular NPM registry you need to store your npm authentication token as a secret. For example, create a repository secret called NPM_TOKEN. For more information, see Creating and using encrypted secrets.
To generate an npm token, you need to log in to your npmjs.com account, click your Profile picture > Access Tokens > Generate New Token > Classic Token. Make sure to choose the Automation token type.
After creating a repository secret with the npm token, make sure to update the workflow:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Error when using Github actions to publish and host blazor webassembly

I am using this tutorial to publish my Blazor WebAssemply site to Github pages. When I run the action I get
/home/runner/work/learning-blazor/learning-blazor/Learning_Blazor.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk.BlazorWebAssembly' specified could not be found.
All other tutorials lead to the same result. Here is my main.yml:
name: Deploy to GitHub Pages
# Run workflow on every push to the master branch
on:
push:
branches: [ main ]
jobs:
deploy-to-github-pages:
# use ubuntu-latest image to run steps on
runs-on: ubuntu-latest
steps:
# uses GitHub's checkout action to checkout code form the master branch
- uses: actions/checkout#v2.4.2
# sets up .NET Core SDK 3.1
- name: Setup .NET Core SDK
uses: actions/setup-dotnet#v2.1.0
with:
dotnet-version: 3.1
# publishes Blazor project to the release-folder
- name: Publish .NET Core Project
run: dotnet publish Learning_Blazor.csproj -c Release -o release --nologo
- name: Deploy GitHub Pages site
uses: actions/deploy-pages#v1.0.10
with:
token: github.token
Can someone suggest a fix?
I was faced with the same issue, and it was caused by the dotnet-version of my app actually being .NET 7 so I changed that line to dotnet-version: 7.0.x. You can do the same for .NET 5 and 6 I imagine.

Unable to resolve jar dependency in Java project for

I have 2 java projects on GitHub, the first project produces a java library and the second project uses it.
The first project is build via first job in yaml file and it installs the library in /home/runner/.m2/repository/ successfully
Then when the second project is build via the second job in the same yaml file , it fails with error
Failed to execute goal on project <>: Could not resolve dependencies
for project Could not find artifact <>:jar:1.0-
SNAPSHOT -> [Help 1]
In my second project, I have included the dependency to load this library jar(produced by first project) from the repository.
MY understanding is that my second project should load the jar library from the /home/runner/.m2/repository/ but its not loading it.
Any help is appreciated.
Also can we access /home/runner/.m2/repository/ to check if it contains the library jar.
./project_account_library/account_library => Contains maven project
./project_account_service/account_service => Contains maven project
./.github/workflows/build.yml
Here is the yml file
name: Build account service
on:
push:
branches: [main]
env:
IMAGE_NAME: accountservice
jobs:
build_dependency:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout#v2
- uses: actions/setup-java#v2
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '17'
- name: Build Dependency
run: |
cd ./project_account_library/account_library
mvn clean install
build_accountservice:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout#v2
- uses: actions/setup-java#v2
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '17'
- name: Build Account Service
run: |
cd ./project_account_service/account_service
mvn clean install
First Step
[INFO] Installing /home/runner/work/<>/<>/target/account_
library_1.0-SNAPSHOT.jar to
/home/runner/.m2/repository/com/<>/<>/account_library/1.0-
SNAPSHOT/account_library-1.0-SNAPSHOT.jar
Second Step
Error: Failed to execute goal on project <>: Could not resolve
dependencies for project <>: Could not find artifact com.<>.
<>:account_library:jar:1.0-SNAPSHOT -> [Help 1]
Thanks Frennky
I now used only 1 job and below is my new .yml file
- name: Build Account Service
run: |
cd ./project_account_library/account_library
mvn clean install
cd ../../project_account_service/account_service
mvn clean install
First directory is successfully built but it fails to cd to ../../project_account_service/account_service and fails to build with below error
/home/runner/work/_temp/ea229141-b0c3-455d-82f0-12ff588d420a.sh: line 12: cd ../../project_account_service/account_service: No such file or directory
The reason you're missing dependencies on your second job is because those 2 jobs, by default, run in parallel and they do so on 2 different runners. From docs:
Each job will run inside its own virtual machine runner, or inside a
container...
There's few ways you can go around this. I can suggest one quick and easy, and another that would probably be a way to go, but require slightly more effort.
Easy way out of this is to put all steps in a single job.
Better way would be to make use of Github Package repository, where
you could push your lib/dependencies and then resolve them for your
service.
For more details on Github Package repository you can check docs.
Update:
Ok, I've reread your new error and I think I understand the issue.
If I got it right your dir structure is as follows:
repo
project_account_library
account_library
project_account_service
account_service
Each run step actually starts at root of you repo. You can use working-directory like so:
# ...
- name: Build Dependency
run: mvn clean install
working-directory: ./project_account_library/account_library
# ...
- name: Build Account Service
run: mvn clean install
working-directory: ./project_account_service/account_service

how to run a github runner as root

I am trying to run my github runner as root for self hosted linux servers. Can anyone point me to easy solution that I can implement quickly in following code:
name: Test
on: push
jobs:
Test1:
runs-on: selfhosted-linux # This should run on this self hosted runner only
steps:
- uses: actions/checkout#v2
At this point I cannot ssh into the selfhoste linux but can access it only via code in the workflow folder
and I would like to run the checkout as root rather then non root user.
You need to set the environment variable RUNNER_ALLOW_RUNASROOT before you run config.sh to set up the runner. e.g.
RUNNER_ALLOW_RUNASROOT=1 ./config.sh --token asdlkjfasdlkj

composite run steps action not working under alpine

I followed the steps documented here https://docs.github.com/en/free-pro-team#latest/actions/creating-actions/creating-a-composite-run-steps-action and created a custom github action sucessfully.
Problem now: it only works if the bash shell is available. Unfortunately the shell property is required and it is not possible to use an input variable for that (tested both).
This, doesn't work:
jobs:
build:
runs-on: ubuntu-latest
name: Build project
container: elixir:1.10.4-alpine
env:
MIX_ENV: prod
steps:
- uses: actions/checkout#v2
- name: My custom composite action
uses: path/to-my-custom-composite-action#version
Error: OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "bash": executable file not found in $PATH: unknown
Now I can duplicate the action for alpine (using sh) or build a second version especially for alpine (perhaps autom. via build environment). Is there a better solution?