Skip to content

Commit

Permalink
Switch from Travis CI to GitHub Actions
Browse files Browse the repository at this point in the history
travis-ci.org is being shut down, so switch to GitHub Actions.

It should be mostly equivalent, but I did drop functionality in a couple
cases:

- Publishing release binaries.  I don't think providing Linux binaries
  is useful, since people build their own anyway.  So I left this out.

- Build and testing on ppc64le.  GitHub Actions only natively supports
  x86.  I tried uraimo/run-on-arch-action, which uses Docker and QEMU
  user-mode emulation, but the fscrypt tests can't be run because
  QEMU user-mode emulation doesn't support all the needed system calls.
  • Loading branch information
ebiggers authored and josephlr committed Nov 26, 2020
1 parent 7280a5e commit 0692c00
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 97 deletions.
127 changes: 127 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#

name: CI
on: [pull_request, push]

jobs:
build:
strategy:
matrix:
go: ['1.14', '1.13', '1.12', '1.11']
name: Build (Go ${{ matrix.go }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go }}
- name: Install dependencies
run: sudo apt-get install -y libpam0g-dev
- name: Build
run: GO111MODULE=on make

build-32bit:
name: Build (32-bit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- name: Install dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y libpam0g-dev:i386 gcc-multilib
- name: Build
run: CGO_ENABLED=1 GOARCH=386 make

run-integration-tests:
name: Run integration tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- name: Install dependencies
run: sudo apt-get install -y libpam0g-dev e2fsprogs keyutils
- name: Run integration tests
run: |
make test-setup
keyctl link @u @s
make coverage.out
make test-teardown
- name: Report coverage
uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: coverage.out

# This isn't working currently because qemu user-mode emulation doesn't
# support passing through the keyctl() system call and the fscrypt ioctls.
# Hopefully GitHub Actions will natively support other architectures soon...
#
# run-integration-tests-other-arch:
# name: Run integration tests (${{ matrix.arch }})
# strategy:
# matrix:
# arch: [armv7, aarch64, ppc64le]
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v2
# - uses: uraimo/run-on-arch-action@v2.0.5
# with:
# arch: ${{ matrix.arch }}
# distro: buster
# githubToken: ${{ github.token }}
# # Needed for 'make test-setup' to mount the test filesystem.
# dockerRunArgs: --privileged
# install: |
# apt-get update
# apt-get install -y build-essential git sudo golang-go \
# libpam0g-dev e2fsprogs keyutils
# run: |
# export GO111MODULE=on
# make test-setup
# keyctl link @u @s
# make test
# make test-teardown

run-cli-tests:
name: Run command-line interface tests
# The cli tests require kernel 5.4 or later, and thus Ubuntu 20.04 or later.
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- name: Install dependencies
run: sudo apt-get install -y libpam0g-dev e2fsprogs expect keyutils
- name: Run command-line interface tests
run: make cli-test

generate-format-and-lint:
name: Generate, format, and lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- name: Install dependencies
run: |
sudo apt-get install -y libpam0g-dev shellcheck
make tools
- name: Generate
run: make gen && bin/files-changed proto
- name: Format
run: make format && bin/files-changed format
- name: Lint
run: make lint
93 changes: 0 additions & 93 deletions .travis.yml

This file was deleted.

6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.

On every pull request, [Travis CI](https://travis-ci.org/google/fscrypt) runs
unit tests, integration tests, code formatters, and linters. To pass these
checks you should make sure that in your submission:
On every pull request, [GitHub
Actions](https://github.com/google/fscrypt/actions) runs tests, code formatters,
and linters. To pass these checks you should make sure that in your submission:
- `make` properly builds `fscrypt` and `pam_fscrypt.so`.
- All tests, including [integration tests](#running-integration-tests) and
[command-line interface (CLI)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# fscrypt [![GitHub version](https://badge.fury.io/go/github.com%2Fgoogle%2Ffscrypt.svg)](https://github.com/google/fscrypt/releases)

[![Build Status](https://travis-ci.org/google/fscrypt.svg?branch=master)](https://travis-ci.org/google/fscrypt)
[![Build Status](https://github.com/google/fscrypt/workflows/ci/badge.svg)](https://github.com/google/fscrypt/actions?query=workflow%3ACI+branch%3Amaster)
[![Coverage Status](https://coveralls.io/repos/github/google/fscrypt/badge.svg?branch=master)](https://coveralls.io/github/google/fscrypt?branch=master)
[![GoDoc](https://godoc.org/github.com/google/fscrypt?status.svg)](https://godoc.org/github.com/google/fscrypt)
[![Go Report Card](https://goreportcard.com/badge/github.com/google/fscrypt)](https://goreportcard.com/report/github.com/google/fscrypt)
Expand Down

0 comments on commit 0692c00

Please sign in to comment.