Typo fix.
[open-adventure.git] / .gitlab-ci.yml
index 725dfcb86698b4745597fbc9de62c02b94e7c042..b8f4b9143502cb6870c52ac7ac78aa4277edb2eb 100644 (file)
-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