GitHub Action 自动构建 并release

您所在的位置:网站首页 抖音绑定微信支付显示未获得登录权限是什么意思 GitHub Action 自动构建 并release

GitHub Action 自动构建 并release

2023-12-04 21:06| 来源: 网络整理| 查看: 265

自动创建 Release

参考:

Release .Net Core Apps on GitHub Automated - Stack Overflowyaml - GitHub action release tag - Stack Overflow

有些项目在发布新版本时,一般都会创建一个GitHub Release,并且把对应编译好之后的文件上传到Release的资源列表中

create-release: 用于创建 releaseupload-release-asset: 用于上传资源到对应的 release 中

补充 这两个官方 Action 目前已经归档,停止维护了 可以使用下方代替

softprops/action-gh-release: 📦 GitHub Action for creating GitHub Releases

项目的构建流程是在项目git push --tags的时候,触发 workflow,通过Github Actions编译出来Windows、Linux、macOS三个操作系统对应的 64 位可执行文件,再根据tag name和tag message来创建对应的Github Release,并将编译好的文件上传

name: .NET Core Release on: push: # Sequence of patterns matched against refs/tags tags: - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 3.1.101 - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Zip the Build run: zip -r ${{ secrets.ReleaseZipName }} ./AppName/bin/Release/netcoreapp3.1/ - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body: TODO New Release. draft: false prerelease: false - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./${{ secrets.ReleaseZipName }}.zip asset_name: ${{ secrets.ReleaseZipName }}.zip asset_content_type: application/zip使用新 Action

softprops/action-gh-release: 📦 GitHub Action for creating GitHub Releases

官方 action 已经归档,下面使用社区的 action,来配置自动 Release

name: .NET Core Release on: push: # Sequence of patterns matched against refs/tags tags: - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 3.1.101 - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Zip the Build run: zip -r ${{ secrets.ReleaseZipName }} ./AppName/bin/Release/netcoreapp3.1/ - name: Create Release and Upload Release Asset uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: tag_name: ${{ github.ref }} name: Release ${{ github.ref }} body: TODO New Release. draft: false prerelease: false files: | ${{ secrets.ReleaseZipName }}.zip LICENSE 注意Release 是由 github-actions 机器人发起

Action 运行完成后,会有一个 github-actions 机器人发起的 Release

你需要点击 Edit release 后,保存,才会显示在 全部 Releases 中,

TODO: 不知道是不是我哪里搞错了,这样还需要自己点一下,不能说完全自动化

github-actions 机器人发起的 release 不会触发 GitHub Actionon: release: types: [published]

发现通过这种方法发起的 release,不会触发, 只有自己手动,以自己名义 create release,才会触发上面的条件

补充

PluginCore-release.yml

name: PluginCore Release on: push: tags: - 'PluginCore-v*' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 5.0.102 - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Zip the Build run: | zip -r PluginCore-netcoreapp3.1.zip ./src/PluginCore/bin/Release/netcoreapp3.1/ zip -r PluginCore-net5.0.zip ./src/PluginCore/bin/Release/net5.0/ - name: Create Release and Upload Release Asset uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: #tag_name: ${{ github.ref }} #name: ${{ github.ref }} body: TODO New Release. #body_path: CHANGELOG.txt draft: false prerelease: false files: | PluginCore-netcoreapp3.1.zip PluginCore-net5.0.zip LICENSE

补充:

不知道为什么,先 dotnet restore,再以 --no-restore 的方式 dotnet build就会报错,找不到包,

一定要 在 dotnet build 时,内部 restore

解决方案:

删除步骤 Install dependencies,在 build 时自动 restore

- name: Build run: dotnet build --configuration Release

不要去指定 tag_name: ${{ github.ref }},不然会导致如下,只要不指定,默认就会帮你删除 refs/tags/

refs/tags/PluginCore-v0.3.1

如果需要自定义,则可以截断

- name: Set outputs id: vars run: | echo ::set-output name=TAG_NAME::$(echo ${GITHUB_REF:10})

在步骤中使用

${{ steps.vars.outputs.TAG_NAME }}name: PluginCore Release on: push: tags: - 'PluginCore-v*' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 5.0.102 - name: Build run: dotnet build --configuration Release - name: Zip the Build run: | cd ./src/PluginCore/bin/Release zip -r PluginCore-netcoreapp3.1.zip ./netcoreapp3.1/ zip -r PluginCore-net5.0.zip ./net5.0/ cd ../../../../ mv ./src/PluginCore/bin/Release/*.zip ./ - name: Create Release and Upload Release Asset uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: #tag_name: ${{ github.ref }} #name: ${{ github.ref }} body: TODO New Release. #body_path: CHANGELOG.txt draft: false prerelease: false files: | PluginCore-netcoreapp3.1.zip PluginCore-net5.0.zip LICENSE 参考

感谢帮助!

自定义changelog及自动化github-release使用Travis-CI构建Android项目并自动打包部署到GitHub-ReleaseGitHub Action + Release:打造 Electron 持续交付系统 - 知乎[github actions] action 为 release 时,如果不重复执行任务? - V2EX编写自己的 GitHub Action,体验自动化部署 - 知乎Github 之 Actions 自动发布 GitHub Release | 小康博客GitHub Actions 教程:定时发送天气邮件 - 阮一峰的网络日志Authentication in a workflow - GitHub DocsGithub Actions 尝鲜 - SegmentFault 思否yaml - GitHub action release tag - Stack OverflowRelease .Net Core Apps on GitHub Automated - Stack Overflow

本文作者: yiyun

本文链接: https://moeci.com/posts/分类-github/github-actions-release/

版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3