diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3142c8e..f357c99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,18 +1,12 @@ -image: ubuntu:latest - stages: - build - package + - release -build_backend: +build_backend_glibc: stage: build - cache: - key: backend - paths: - - vcpkg_cache + image: reg.gitlab.mattv.de/root/docker-images/ubuntu_build_base:latest script: - - apt-get update - - apt-get install g++ gcc make cmake git curl zip unzip tar python3 pkg-config -y - SRC="$PWD" - TMP=$(mktemp -d) - cd $TMP @@ -23,6 +17,32 @@ build_backend: - VCPKG_DEFAULT_BINARY_CACHE=$SRC/vcpkg_cache cmake -B build -S backend -DCMAKE_TOOLCHAIN_FILE=$TMP/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release - cmake --build build - cp build/backend server + cache: + key: backend_glibc + paths: + - vcpkg_cache + artifacts: + paths: + - server + +build_backend_muslc: + stage: build + image: reg.gitlab.mattv.de/root/docker-images/alpine_build_base:latest + script: + - SRC="$PWD" + - TMP=$(mktemp -d) + - cd $TMP + - git clone https://github.com/Microsoft/vcpkg.git . + - ./bootstrap-vcpkg.sh -disableMetrics + - cd $SRC + - mkdir -p vcpkg_cache + - VCPKG_FORCE_SYSTEM_BINARIES=1 VCPKG_DEFAULT_BINARY_CACHE=$SRC/vcpkg_cache cmake -B build -S backend -DCMAKE_TOOLCHAIN_FILE=$TMP/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release + - cmake --build build + - cp build/backend server + cache: + key: backend_muslc + paths: + - vcpkg_cache artifacts: paths: - server @@ -44,18 +64,64 @@ test_and_build_frontend: paths: - frontend/dist/ -package_server: +.package_server: + image: alpine:latest stage: package - before_script: [] + artifacts: + paths: + - '*.tar' + +package_server_glibc: + extends: .package_server needs: - - job: build_backend + - job: build_backend_glibc artifacts: true - job: test_and_build_frontend artifacts: true script: - mkdir static - mv frontend/dist/* static/ - artifacts: - paths: - - server - - static/ + - tar -cvf linux-x64-glibc.tar server static + +package_server_muslc: + extends: .package_server + needs: + - job: build_backend_muslc + artifacts: true + - job: test_and_build_frontend + artifacts: true + script: + - mkdir static + - mv frontend/dist/* static/ + - tar -cvf linux-x64-muslc.tar server static + +upload_assets: + stage: release + image: curlimages/curl:latest + needs: + - job: package_server_glibc + artifacts: true + - job: package_server_muslc + artifacts: true + rules: + - if: $CI_COMMIT_TAG + script: + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "linux-x64-glibc.tar" "${PACKAGE_REGISTRY_URL}/linux-x64-glibc.tar" + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "linux-x64-muslc.tar" "${PACKAGE_REGISTRY_URL}/linux-x64-muslc.tar" + + + +create_release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + needs: + - upload_assets + rules: + - if: $CI_COMMIT_TAG + script: + - | + release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \ + --assets-link "{\"name\":\"linux-x64-glibc.tar\",\"url\":\"${PACKAGE_REGISTRY_URL}/linux-x64-glibc.tar\"}" \ + --assets-link "{\"name\":\"linux-x64-muslc.tar\",\"url\":\"${PACKAGE_REGISTRY_URL}/linux-x64-muslc.tar\"}"