stages: - build - package - release build_backend_glibc: stage: build image: reg.gitlab.mattv.de/root/docker-images/ubuntu_build_base:latest cache: key: backend_glibc paths: - vcpkg_cache 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_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 artifacts: paths: - server build_backend_muslc: stage: build image: reg.gitlab.mattv.de/root/docker-images/alpine_build_base:latest cache: key: backend_muslc paths: - vcpkg_cache 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 artifacts: paths: - server test_and_build_frontend: image: node:latest stage: build cache: key: frontend paths: - frontend/.yarn - frontend/node_modules script: - cd frontend - yarn install --cache-folder .yarn --frozen-lockfile - yarn lint - yarn build artifacts: paths: - frontend/dist/ .package_server: image: alpine:latest stage: package artifacts: paths: - '*.tar' package_server_glibc: extends: .package_server needs: - job: build_backend_glibc artifacts: true - job: test_and_build_frontend artifacts: true script: - mkdir static - mv frontend/dist/* 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 "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/linux-x64-glibc/$CI_COMMIT_TAG/linux-x64-glibc.tar"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file linux-x64-muslc.tar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/linux-x64-muslc/$CI_COMMIT_TAG/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: - echo "running release_job" release: # See https://docs.gitlab.com/ee/ci/yaml/#release for available properties tag_name: '$CI_COMMIT_TAG' description: 'Release $CI_COMMIT_TAG' assets: links: - name: 'linux-x64-glibc.tar' url: ''${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/linux-x64-glibc/$CI_COMMIT_TAG/linux-x64-glibc.tar' link_type: package - name: 'linux-x64-muslc.tar' url: ''${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/linux-x64-muslc/$CI_COMMIT_TAG/linux-x64-muslc.tar' link_type: package