-
Eduardo Trujillo authoredEduardo Trujillo authored
This GitLab CI configuration is valid.
Learn more
.gitlab-ci.yml 1.63 KiB
stages:
- build
- test
- upload
- release
variables:
LINUX_AMD64_BINARY: "shift-linux-amd64-${CI_COMMIT_TAG}"
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/shift/${CI_COMMIT_TAG}"
CACHE_FALLBACK_KEY: master
stack-build:
stage: build
image: haskell:8.10.2
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- .stack-work
- .stack
before_script:
- export STACK_ROOT="$CI_PROJECT_DIR/.stack"
script:
- stack --no-terminal build
- mkdir bin
- bash -c "cp $(stack path --local-install-root)/bin/shift bin/"
artifacts:
untracked: false
expire_in: 30 days
paths:
- bin/
stack-test:
stage: test
image: haskell:8.10.2
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- .stack-work
- .stack
policy: pull
before_script:
- export STACK_ROOT="$CI_PROJECT_DIR/.stack"
script:
- stack --no-terminal test --ta "--xml=report.xml"
artifacts:
when: always
untracked: false
expire_in: 30 days
paths:
- report.xml
reports:
junit: report.xml
upload:
stage: upload
image: curlimages/curl:latest
rules:
- if: $CI_COMMIT_TAG
script:
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/shift ${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG
script:
- |
release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \