X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=.gitlab-ci.yml;h=0d0ab9d343a90ca642cb5cb72f83e163d8d596d9;hb=HEAD;hp=725dfcb86698b4745597fbc9de62c02b94e7c042;hpb=6b8c9948761b4051b853c66ca2c639e770aee3c3;p=open-adventure.git diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 725dfcb..b8f4b91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,22 +1,104 @@ -image: gcc +# SPDX-FileCopyrightText: (C) Eric S. Raymond +# SPDX-License-Identifier: BSD-2-Clause +stages: + - ci-build + - build + - test + - deploy -# build using Makefile -build: +default: + image: $CI_REGISTRY_IMAGE:ci + +# build and push Docker image to be used in subsequent steps +ci-build: + stage: ci-build + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + script: + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.ci --destination $CI_REGISTRY_IMAGE:ci --cache=true + +# build advent itself +binary:debug: stage: build - before_script: - - apt update && apt -y install make autoconf - script: - - make advent + script: + - make debug artifacts: paths: - advent - # cache outputs to reduce the build time - cache: + - cheat + - "*.o" + - dungeon.c + - dungeon.h + +binary:release: + stage: build + script: + - make advent cheat + artifacts: paths: + - advent + - cheat - "*.o" + - dungeon.c + - dungeon.h + +manpage: + stage: build + script: + - make advent.6 + artifacts: + paths: + - advent.6 + +html: + stage: build + script: + - make html + artifacts: + paths: + - "*.html" + +dist: + stage: build + script: + - export VERS=${CI_COMMIT_REF_NAME} + - make dist -e + artifacts: + paths: + - "*.tar.gz" # run tests using the binary built before -test: +test:debug: stage: test script: - - make check + - make coverage + artifacts: + paths: + - coverage + dependencies: + - binary:debug + +test:release: + stage: test + script: + - cd tests + - make + - cd .. + dependencies: + - binary:release + +pages: + stage: deploy + script: + - mkdir public + - mv coverage public + artifacts: + paths: + - public + only: + - master + dependencies: + - test:debug