FacilityLanguageServer Package - #29
Conversation
20c34aa to
e0197c1
Compare
e0197c1 to
9525629
Compare
9525629 to
24dcc98
Compare
24dcc98 to
a00df8c
Compare
ddunkin
left a comment
There was a problem hiding this comment.
Packing is failing in CI because of the win-x64 runtime. Maybe we don't need that. I think I was trying to not require a dotnet runtime to be installed on Windows, but that seems like a reasonable requirement.
| - name: Publish | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| run: gh release upload ${{ github.event.release.tag_name }} release/*.zip No newline at end of file |
There was a problem hiding this comment.
Do we still want to create GitHub releases that show up in the repo Releases section? Not sure how that is actually triggered.
What should the relationship between publishing a package and creating a release be? Do we want a package and release on every successful build, or a package on every build and manual release, or both only when a manual release is created?
There was a problem hiding this comment.
The currently favored convention is a release whenever the version changes. Changing the version should tag the repo, create a release with the zip, and publish nuget packages.
There was a problem hiding this comment.
Can you describe the release process? The previous release did not have a tag on the commit.
There was a problem hiding this comment.
The process is currently to push a tag to release.
FacilityLanguageServer/README.md
Line 11 in 46ebc47
The 2.5.2 and 2.5.3 versions were never actually published because no tags were pushed. Other Facility repos use an automatic publish whenever the version changes, e.g. FacilityCSharp.
Because this PR's change would now publish nuget packages, it would be preferable to publish them the same way as the other Facility repos, automatically when the version changes. The VS Code extension includes the language server, which it downloads as a zip from the release at build time. It would be simplest to keep that mechanism rather than add a dependency on a dotnet tool.
cc @ejball
There was a problem hiding this comment.
We could add a gh release create <tag> <file> after the publish step but we would need to know the new release tag. If we have gh release run on pushes of tags it would need to build again since artifacts are only available in the same workflow run.
There was a problem hiding this comment.
For nuget packages, we run publish every time and take advantage of skip duplicates. The rest of the build would have to be smarter about knowing when the new version was actually pushed.
There was a problem hiding this comment.
Ok, how about a new workflow that runs on tags and creates the release.
release.yml
a00df8c to
5500e50
Compare
|
I added a guard for |
ddunkin
left a comment
There was a problem hiding this comment.
Let's just remove the Windows-specific build altogether.
| Directory.CreateDirectory(releasePath); | ||
| Publish(frameworkPublishPath); | ||
| Publish(windowsPublishPath, "--runtime", "win-x64", "-p:PublishSingleFile=true", "--self-contained", "false"); | ||
| Zip(frameworkPublishPath, Path.Combine(releasePath, "Facility.LanguageServer.zip")); |
There was a problem hiding this comment.
We do want to keep this zip because this is what the VS Code plugin uses.
b1c0334 to
f18bf24
Compare
|
The Visual Studio extension uses the Windows build. I would think that could be modified to use |
f18bf24 to
3a9a391
Compare
|
Is this still in progress? |
I don't really have time to work on it. The tag checking hack is gross. Ideally there would be a clean way to know if a tag was created and create the release then. Or maybe we could always try to create the release and ignore failure? |
dnxin Agent LSP configurations.NOTE:
ci.yaml. Not sure what doing both the NuGet package and the release file should look like.