openpgp-card/.gitlab-ci.yml
puzzlewolf 1722e1b328
Add hardware-OpenPGP card tests on cookiejar CI.
Rename stages for clarity.
2021-12-24 11:37:54 +01:00

171 lines
4.3 KiB
YAML

# SPDX-FileCopyrightText: 2021 Heiko Schaefer <heiko@schaefer.name>
# SPDX-License-Identifier: CC0-1.0
stages:
- lint
- test
- virtual-build
- virtual-test
- hw-import
- hw-keygen
reuse:
stage: lint
image:
name: fsfe/reuse:latest
entrypoint: [""]
script:
- reuse lint
cargo-fmt:
stage: lint
image: rust:latest
script:
- rustup component add rustfmt
- cargo fmt -- --check
cargo-test:
stage: test
image: rust:latest
before_script:
- mkdir -p /run/user/$UID
- apt update -y -qq
- apt install -y -qq --no-install-recommends git clang make pkg-config nettle-dev libssl-dev capnproto ca-certificates libpcsclite-dev
- apt clean
script:
- cargo test
cargo-test-debian-stable:
stage: test
image: debian:stable
before_script:
- mkdir -p /run/user/$UID
- apt update -y -qq
- apt install -y -qq --no-install-recommends git rustc cargo clang make pkg-config nettle-dev libssl-dev capnproto ca-certificates libpcsclite-dev
- apt clean
script:
- cargo test
build_cardtest_smartpgp:
stage: virtual-build
image: docker:stable
variables:
IMAGE_LATEST: $CI_REGISTRY_IMAGE/cardtest-smartpgp:latest
IMAGE_SHA: $CI_REGISTRY_IMAGE/cardtest-smartpgp:$CI_COMMIT_SHA
services:
- docker:stable-dind
before_script:
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- docker pull $IMAGE_LATEST || true
- docker build -f card-functionality/docker/Dockerfile.cardtest.smartpgp -t $IMAGE_SHA -t $IMAGE_LATEST .
- docker push $IMAGE_SHA
- docker push $IMAGE_LATEST
needs: []
build_cardtest_ykneo:
stage: virtual-build
image: docker:stable
variables:
IMAGE_LATEST: $CI_REGISTRY_IMAGE/cardtest-ykneo:latest
IMAGE_SHA: $CI_REGISTRY_IMAGE/cardtest-ykneo:$CI_COMMIT_SHA
services:
- docker:stable-dind
before_script:
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- docker pull $IMAGE_LATEST || true
- docker build -f card-functionality/docker/Dockerfile.cardtest.ykneo -t $IMAGE_SHA -t $IMAGE_LATEST .
- docker push $IMAGE_SHA
- docker push $IMAGE_LATEST
needs: []
run_cardtest_smartpgp_import:
stage: virtual-test
image: registry.gitlab.com/hkos/openpgp-card/cardtest-smartpgp
script:
- cd /
- sh run.sh import
needs: ["build_cardtest_smartpgp"]
run_cardtest_smartpgp_keygen:
stage: virtual-test
image: registry.gitlab.com/hkos/openpgp-card/cardtest-smartpgp
script:
- cd /
- sh run.sh keygen
# run after import test - running tests in parallel on the same card fails
needs: ["run_cardtest_smartpgp_import"]
run_cardtest_ykneo_import:
stage: virtual-test
image: registry.gitlab.com/hkos/openpgp-card/cardtest-ykneo
script:
- cd /
- sh run.sh import
needs: ["build_cardtest_ykneo"]
run_cardtest_ykneo_keygen:
stage: virtual-test
image: registry.gitlab.com/hkos/openpgp-card/cardtest-ykneo
script:
- cd /
- sh run.sh keygen
# run after import test - running tests in parallel on the same card fails
needs: ["run_cardtest_ykneo_import"]
import:
stage: hw-import
image: rust:1-slim-bullseye
tags:
- card
parallel:
matrix:
- ARG: [ import ]
CONFIG:
- "ci/basic-2_1.toml"
- "ci/nitro-pro1.toml"
- "ci/nitro-pro2.toml"
- "ci/nitro-start.toml"
before_script:
# install dependencies
- apt-get update
- apt-get -y install --no-install-recommends libpcsclite-dev pkg-config nettle-dev clang libclang-dev pcscd pcsc-tools usbutils strace
script:
- /etc/init.d/pcscd start
#- sleep 5
- cd card-functionality
- cargo run --bin $ARG -- $CONFIG
keygen:
stage: hw-keygen
image: rust:1-slim-bullseye
tags:
- card
parallel:
matrix:
- ARG: [ keygen ]
CONFIG:
- "ci/basic-2_1.toml"
- "ci/nitro-pro1.toml"
- "ci/nitro-pro2.toml"
- "ci/nitro-start.toml"
before_script:
# install dependencies
- apt-get update
- apt-get -y install --no-install-recommends libpcsclite-dev pkg-config nettle-dev clang libclang-dev pcscd pcsc-tools usbutils strace
script:
- /etc/init.d/pcscd start
#- sleep 5
- cd card-functionality
- cargo run --bin $ARG -- $CONFIG