coveralls doesn't work from GitHub actions. Its "github" service type uses the GITHUB_TOKEN from the action, which only has read access when invoked from a forked repository. codecov gets this right: it validates that an uploaded coverage file originated from a GitHub action run by asking GitHub, and then uses its OAuth credentials (through the Marketplace App) to comment and set status. Also, coveralls requires a third-party package to convert go's coverage report to a format it understands. codecov detects the format server-side. It also handles go's coverage format better: it highlights lines with "some coverage" in yellow (coveralls has no concept of this).
132 lines
3.7 KiB
YAML
132 lines
3.7 KiB
YAML
name: Tests
|
|
|
|
# NOTE(mhayden): Restricting branches prevents jobs from being doubled since
|
|
# a push to a pull request triggers two events.
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
lint:
|
|
name: "🛃 Checks"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Set up Go 1.13
|
|
uses: actions/setup-go@v1
|
|
with:
|
|
go-version: 1.13
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Check that source has been prepared
|
|
run: |
|
|
./tools/prepare-source.sh
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
echo
|
|
echo "Please include these changes in your branch: "
|
|
git status -vv
|
|
exit "1"
|
|
else
|
|
exit "0"
|
|
fi
|
|
|
|
- name: Install golangci-lint
|
|
run: curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.23.7
|
|
|
|
- name: Run golangci-lint
|
|
run: $(go env GOPATH)/bin/golangci-lint run
|
|
|
|
- name: Run unit tests
|
|
run: go test -v -race -covermode atomic -coverprofile=coverage.txt ./...
|
|
|
|
- name: Send coverage to codecov.io
|
|
run: bash <(curl -s https://codecov.io/bash)
|
|
|
|
old_rpm_build:
|
|
name: "📦 RPM (golang-github-osbuild-composer)"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
fedora_release: ["31"]
|
|
container:
|
|
image: "docker.io/library/fedora:${{ matrix.fedora_release }}"
|
|
steps:
|
|
- name: "📥 Prepare container"
|
|
run: |
|
|
echo "fastestmirror=1" >> /etc/dnf/dnf.conf
|
|
echo "install_weak_deps=0" >> /etc/dnf/dnf.conf
|
|
rm -fv /etc/yum.repos.d/fedora*modular*
|
|
dnf -y upgrade
|
|
dnf -y install dnf-plugins-core findutils git make rpm-build rpmdevtools
|
|
|
|
- name: "🗄️ Clone the repository"
|
|
uses: actions/checkout@v2
|
|
|
|
- name: "🛒 Install RPM build dependencies"
|
|
run: dnf -y builddep golang-github-osbuild-composer.spec
|
|
|
|
- name: "🛠️ Build RPMs"
|
|
run: |
|
|
mkdir rpms
|
|
make old-srpm
|
|
cp -av rpmbuild/SRPMS/*.rpm rpms/
|
|
make old-rpm
|
|
cp -av rpmbuild/RPMS/*/*.rpm rpms/
|
|
|
|
- name: "📤 Upload artifacts"
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: rpms
|
|
path: rpms/
|
|
|
|
- name: "🔎 Test RPM installation"
|
|
run: dnf -y install $(ls rpms/*.x86_64.rpm)
|
|
|
|
rpm_build:
|
|
name: "📦 RPM (osbuild-composer)"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
fedora_release: ["32", "rawhide"]
|
|
container:
|
|
image: "docker.io/library/fedora:${{ matrix.fedora_release }}"
|
|
steps:
|
|
- name: "📥 Prepare container"
|
|
run: |
|
|
echo "fastestmirror=1" >> /etc/dnf/dnf.conf
|
|
echo "install_weak_deps=0" >> /etc/dnf/dnf.conf
|
|
rm -fv /etc/yum.repos.d/fedora*modular*
|
|
dnf -y upgrade
|
|
dnf -y install dnf-plugins-core findutils git make rpm-build rpmdevtools
|
|
|
|
- name: "🗄️ Clone the repository"
|
|
uses: actions/checkout@v2
|
|
|
|
- name: "🛒 Install RPM build dependencies"
|
|
run: dnf -y builddep osbuild-composer.spec
|
|
|
|
- name: "🛠️ Build RPMs"
|
|
run: |
|
|
mkdir rpms
|
|
make srpm
|
|
cp -av rpmbuild/SRPMS/*.rpm rpms/
|
|
make rpm
|
|
cp -av rpmbuild/RPMS/*/*.rpm rpms/
|
|
|
|
- name: "📤 Upload artifacts"
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: rpms
|
|
path: rpms/
|
|
|
|
- name: "🔎 Test RPM installation"
|
|
run: dnf -y install $(ls rpms/*.x86_64.rpm)
|