Skip to content

ci.yml: use actions/checkout@v4 #241

ci.yml: use actions/checkout@v4

ci.yml: use actions/checkout@v4 #241

Workflow file for this run

#
# 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:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
strategy:
matrix:
go: ['1.18', '1.19', '1.20']
name: Build (Go ${{ matrix.go }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libpam0g-dev
- name: Build
run: make
build-32bit:
name: Build (32-bit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v2
with:
go-version: '1.20'
- 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@v4
- uses: actions/setup-go@v2
with:
go-version: '1.20'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libpam0g-dev e2fsprogs keyutils
- name: Run integration tests
run: |
make test-setup
keyctl link @u @s
make test
make test-teardown
# 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@v4
# - uses: uraimo/[email protected]
# 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: |
# 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@v4
- uses: actions/setup-go@v2
with:
go-version: '1.20'
- name: Install dependencies
run: |
sudo apt-get update
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@v4
- uses: actions/setup-go@v2
with:
go-version: '1.20'
- name: Install dependencies
run: |
sudo apt-get update
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