BUILD: Added continuous integration.

This commit is contained in:
Udo Steinberg 2019-09-06 14:45:10 -04:00
parent 33e6e00e61
commit 2bc6632f12
2 changed files with 91 additions and 0 deletions

87
.gitlab/.gitlab-ci.yml Normal file
View File

@ -0,0 +1,87 @@
#
# Gitlab CI Configuration
#
# Copyright (C) 2019-2025 Udo Steinberg, BlueRock Security, Inc.
#
# This file is part of the NOVA microhypervisor.
#
# NOVA is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# NOVA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License version 2 for more details.
#
variables:
GIT_DEPTH: 5
default:
image: registry.gitlab.com/bedrocksystems/docker-image:latest
workflow:
rules:
- if: '$CI_MERGE_REQUEST_DRAFT == "true"' # skip draft MRs
when: never
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # push to default branch
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG' # push to any tag
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"' # merge request
- if: '$CI_PIPELINE_SOURCE == "pipeline"' # multi-project pipeline
- if: '$CI_PIPELINE_SOURCE == "schedule"' # scheduled run
- if: '$CI_PIPELINE_SOURCE == "web"' # pipeline run from UI
stages:
- build
- release
.build:
stage: build
variables:
IDIR: 'NOVA'
HOST: 'x86_64'
HGCC: '/opt/${HOST}-linux/bin/${HOST}-linux-g++'
PRFX: '/opt/${ARCH}-linux/bin/${ARCH}-linux-'
script:
- ${PRFX}gcc --version
- mkdir ${IDIR}
- time make -s -j ${NJOBS} ARCH=${ARCH} INS_DIR=${IDIR} PREFIX_${ARCH}=${PRFX} HST_CC=${HGCC} install
artifacts:
paths:
- ${IDIR}/
build-aarch64:
extends: .build
variables:
ARCH: 'aarch64'
build-x86_64:
extends: .build
variables:
ARCH: 'x86_64'
# Work around https://gitlab.com/gitlab-org/gitlab-runner/-/issues/6400
release-version:
stage: build
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG =~ /^release-/' # push to release tag
script:
- echo NOVA_VERSION=${CI_COMMIT_TAG//release-/} > version.env
artifacts:
reports:
dotenv: version.env
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG =~ /^release-/' # push to release tag
script:
- echo Releasing ${NOVA_VERSION}
release:
tag_name: $CI_COMMIT_TAG
name: 'Release ${NOVA_VERSION}'
description: 'NOVA Microhypervisor Release ${NOVA_VERSION}'
dependencies:
- release-version

4
.gitlab/CODEOWNERS Normal file
View File

@ -0,0 +1,4 @@
# Rules defined later take precedence over rules defined earlier
# Default
* udo@hypervisor.org