Skip to content
This repository has been archived by the owner on Nov 22, 2023. It is now read-only.

Remove Travis and use Github Actions #228

Merged
merged 43 commits into from
Nov 23, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
2e56622
Create dotnetcore.yml
erikzhang Nov 22, 2019
04f68a7
dotnet -format
erikzhang Nov 22, 2019
5857a3f
Update dotnetcore.yml
erikzhang Nov 22, 2019
932b357
Update dotnetcore.yml
erikzhang Nov 22, 2019
f2a1bc9
Update dotnetcore.yml
erikzhang Nov 22, 2019
8d5bf3e
Update dotnetcore.yml
erikzhang Nov 22, 2019
cf45622
Update dotnetcore.yml
erikzhang Nov 22, 2019
17ba878
Merge branch 'master' into github-actions
shargon Nov 22, 2019
b6855de
Update dotnetcore.yml
erikzhang Nov 22, 2019
153a90f
Update dotnetcore.yml
erikzhang Nov 22, 2019
987beb0
Update dotnetcore.yml
erikzhang Nov 22, 2019
7e10f06
Update dotnetcore.yml
erikzhang Nov 22, 2019
501d5f8
Update dotnetcore.yml
erikzhang Nov 22, 2019
4b3da64
Remove travis
erikzhang Nov 22, 2019
21269ca
Merge branch 'master' into github-actions
erikzhang Nov 22, 2019
fecc572
Update README.md
erikzhang Nov 22, 2019
eb43012
Update and rename dotnetcore.yml to test.yml
erikzhang Nov 22, 2019
f2b884e
Create dotnetcore.yml
erikzhang Nov 22, 2019
66f2532
Update neo-vm.csproj
erikzhang Nov 22, 2019
6485311
Update and rename dotnetcore.yml to publish.yml
erikzhang Nov 22, 2019
e8fe172
Update publish.yml
erikzhang Nov 22, 2019
53b6140
Update publish.yml
erikzhang Nov 22, 2019
32f2417
Update publish.yml
erikzhang Nov 22, 2019
d358d7e
Update publish.yml
erikzhang Nov 22, 2019
ace92dd
Update test.yml
erikzhang Nov 22, 2019
f5f15ff
Delete publish.yml
erikzhang Nov 22, 2019
52683f7
Update and rename test.yml to dotnetcore.yml
erikzhang Nov 22, 2019
f9ea888
Update dotnetcore.yml
erikzhang Nov 22, 2019
e584761
Update dotnetcore.yml
erikzhang Nov 22, 2019
dee001c
Update dotnetcore.yml
erikzhang Nov 22, 2019
a7cd6a0
Update dotnetcore.yml
erikzhang Nov 22, 2019
93b44f4
Update dotnetcore.yml
erikzhang Nov 22, 2019
66d717b
Update dotnetcore.yml
erikzhang Nov 22, 2019
e129ff7
Update dotnetcore.yml
erikzhang Nov 22, 2019
33d1ea1
Update dotnetcore.yml
erikzhang Nov 22, 2019
b8cf0c0
Update dotnetcore.yml
erikzhang Nov 23, 2019
49ba2ef
Update dotnetcore.yml
erikzhang Nov 23, 2019
5baae1d
Update dotnetcore.yml
erikzhang Nov 23, 2019
c739887
Update dotnetcore.yml
erikzhang Nov 23, 2019
0e321ca
Update dotnetcore.yml
erikzhang Nov 23, 2019
94b7b1a
Update dotnetcore.yml
erikzhang Nov 23, 2019
d0d9a4b
Update dotnetcore.yml
erikzhang Nov 23, 2019
6f97d37
Update dotnetcore.yml
erikzhang Nov 23, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/dotnetcore.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: .NET Core Test and Publish

on:
push:
branches: master
pull_request:

env:
DOTNET_VERSION: 3.0.100

jobs:

Test:
runs-on: ubuntu-latest
steps:
- name: Chectout
uses: actions/checkout@v1
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Check format
run: |
dotnet tool install --tool-path ./ dotnet-format
./dotnet-format --check --dry-run -v diagnostic
- name: Test
run: |
find tests -name *.csproj | xargs -I % dotnet add % package coverlet.msbuild
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=${GITHUB_WORKSPACE}/coverage/lcov
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

PublishGithub:
if: github.ref == 'refs/heads/master' && startsWith(github.repository, 'neo-project/')
needs: Test
runs-on: ubuntu-latest
steps:
- name: Chectout
uses: actions/checkout@v1
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Setup NuGet.exe for use with actions
uses: NuGet/setup-nuget@v1
- name: Pack with dotnet
run: git rev-list --count HEAD |xargs printf "CI%05d" |xargs dotnet pack -c Debug -o out --include-source --version-suffix
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using the git rev-list count is an improvement on using timestamp. However, it does mean that different branches can end up with the same version suffix. NerdBank gitversion solves this issue by including the commit hash in the version info for branches other than master + releases

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @devhawk, maybe you could create an issue to discuss this tool? I saw your 'thumbs up' on Erik's comment and considered it your approval 😅 .

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently we only build and publish the master branch. So there is no reason to include the commit hash in the version info.

- name: Publish to Github Packages
run: |
nuget source Add -Name "GitHub" -Source "https://nuget.pkg.github.com/neo-project/index.json" -UserName neo-project -Password ${GITHUB_TOKEN}
nuget push out/*.nupkg -Source "GitHub"
erikzhang marked this conversation as resolved.
Show resolved Hide resolved
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

PublishMyGet:
if: github.ref == 'refs/heads/master' && startsWith(github.repository, 'neo-project/')
needs: Test
runs-on: ubuntu-latest
steps:
- name: Chectout
uses: actions/checkout@v1
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Pack with dotnet
run: git rev-list --count HEAD |xargs printf "CI%05d" |xargs dotnet pack -c Debug -o out --include-source --version-suffix
- name: Publish to MyGet
run: dotnet nuget push out/*.nupkg -s https://www.myget.org/F/neo/api/v2/package -k ${MYGET_TOKEN} -ss https://www.myget.org/F/neo/symbols/api/v2/package -sk ${MYGET_TOKEN}
env:
MYGET_TOKEN: ${{ secrets.MYGET_TOKEN }}
25 changes: 0 additions & 25 deletions .travis.yml

This file was deleted.

5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
<a href="https://github.com/neo-project/neo-vm/releases">
<img src="https://badge.fury.io/gh/neo-project%2Fneo-vm.svg" alt="Current neo-vm version.">
</a>
<a href='https://coveralls.io/github/neo-project/neo-vm?branch=master'>
<img src='https://codecov.io/github/neo-project/neo-vm/branch/master/graph/badge.svg'
alt='Current Coverage Status.' />
<a href='https://coveralls.io/github/neo-project/neo-vm'>
<img src='https://coveralls.io/repos/github/neo-project/neo-vm/badge.svg' alt='Coverage Status' />
</a>
<a href="https://github.com/neo-project/neo-vm">
<img src="https://tokei.rs/b1/github/neo-project/neo-vm?category=lines" alt="total lines.">
Expand Down
5 changes: 3 additions & 2 deletions src/neo-vm/neo-vm.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Copyright>2016-2019 The Neo Project</Copyright>
<AssemblyTitle>Neo.VM</AssemblyTitle>
<Description>Neo.VM</Description>
<Version>3.0.0-preview1</Version>
<VersionPrefix>3.0.0</VersionPrefix>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You really want to use a tool rather than manage this manually.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to use --version-suffix.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can tell you from personal experience that managing the version suffix manually will not work out well.

The problem with most versioning schemes is that they are driven by either by date information, by some build system intrinsic (like the number of previous builds executed in a set amount of time) or both. This makes the version number completely non deterministic.

Nerdbank GitVersioning on the other hand produces deterministic version numbers with no dependency on git tags or branches. So building a specific commit locally and on the build server produce the exact same build version. There are also tools to calculate which commit generated a given version.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But we need an incremental version number. Now I'm using the linux timestamp.

run: dotnet pack -c Debug -o out --include-source --version-suffix CI$(date +%s)

It generates the package version like this:

3.0.0-CI1574448946

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, timestamps are not non deterministic. Nerdbank GitVersioning uses a concept called git height to give each commit it's own deterministic incremental version number.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I'm using deterministic version numbers. They are generated by the following command:

git rev-list --count HEAD |xargs printf "CI%05d" |xargs dotnet pack -c Debug -o out --include-source --version-suffix

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@devhawk I agree with you that we could use Nerdbank, but I think this may be outside the scope of this PR.

<VersionSuffix>preview1</VersionSuffix>
<Authors>The Neo Project</Authors>
<TargetFramework>netstandard2.1</TargetFramework>
<AssemblyName>Neo.VM</AssemblyName>
Expand Down