name: tunasync on: [push] jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Set up Go 1.16 uses: actions/setup-go@v1 with: go-version: 1.16 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Get dependencies run: | go get -v -t -d ./cmd/tunasync go get -v -t -d ./cmd/tunasynctl - name: Build run: | make tunasync make tunasynctl - name: Keep artifacts uses: actions/upload-artifact@v1 with: name: tunasync-bin path: build-linux-amd64/ test: name: Test runs-on: ubuntu-latest steps: - name: Setup test dependencies run: | sudo apt-get update sudo apt-get install -y cgroup-tools docker pull alpine:3.8 lssubsys -am sudo cgcreate -a $USER -t $USER -g cpu:tunasync sudo cgcreate -a $USER -t $USER -g memory:tunasync - name: Set up Go 1.16 uses: actions/setup-go@v1 with: go-version: 1.16 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Run Unit tests. run: | go install github.com/wadey/gocovmerge@latest make test - name: Run Additional Unit tests. run: | make build-test-worker sudo cgexec -g "*:/" bash -c "echo 0 > /sys/fs/cgroup/systemd/tasks; exec sudo -u $USER env USECURCGROUP=1 cgexec -g cpu,memory:tunasync ./worker.test -test.v -test.coverprofile profile2.cov -test.run TestCgroup" - name: Combine coverage files run : | $HOME/go/bin/gocovmerge profile.cov profile2.cov > profile-all.cov - name: Convert coverage to lcov uses: jandelgado/gcov2lcov-action@v1.0.0 with: infile: profile-all.cov outfile: coverage.lcov - name: Coveralls uses: coverallsapp/github-action@v1.0.1 with: github-token: ${{ secrets.github_token }} path-to-lcov: coverage.lcov