version: 46
jobs:
- name: Push to Gitea
  steps:
  - type: PushRepository
    name: Push to Gitea
    remoteUrl: https://gitea.anfer.fr/anfer/OpenEngine
    passwordSecret: Gitea
    force: false
    condition: SUCCESSFUL
    optional: false
  jobExecutor: terra-executor
  triggers:
  - type: BranchUpdateTrigger
    branches: main
    userMatch: anyone
    projects: OpenEngine
  - type: TagCreateTrigger
    branches: main
    projects: OpenEngine
  retryCondition: never
  maxRetries: 3
  retryDelay: 30
  timeout: 14400
- name: Compile for Linux
  steps:
  - type: SetupCacheStep
    name: conan-cache
    key: conan-cache-@file:conanfile.py@
    paths:
    - /root/.conan2
    uploadStrategy: UPLOAD_IF_CHANGED
    changeDetectionExcludes: /root/.conan2/p/*/dl /root/.conan2/logs
    condition: SUCCESSFUL
    optional: true
  - type: CheckoutStep
    name: Checkout
    cloneCredential:
      type: DefaultCredential
    withLfs: false
    withSubmodules: false
    condition: SUCCESSFUL
    optional: false
  - type: CommandStep
    name: Compile for Linux
    runInContainer: true
    image: erriss/erris-build_tools:V0.7
    interpreter:
      type: DefaultInterpreter
      commands: |
        #git clone --depth 1 https://github.com/dotnet/runtime.git
        #cd runtime
        #./build.sh -c Release -subset host

        #cp artifacts/bin/native/net10.0-linux-Release-x64/nethost/libnethost.a /onedev-build/workspace/lib/

        git submodule update --init --recursive

        conan profile detect --force
        conan install . -c tools.system.package_manager:mode=install --output-folder=build --build=missing -s build_type=${BUILD_TYPE}

        cmake -S . -G Ninja -B build -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake

        echo ====== Building =============================
        cmake --build build --config ${BUILD_TYPE}
    envVars:
    - name: BUILD_TYPE
      value: Debug
    - name: CC
      value: clang
    - name: CXX
      value: clang++
    useTTY: true
    condition: SUCCESSFUL
    optional: false
  - type: PublishArtifactStep
    name: Get build artifacts
    sourcePath: build
    artifacts: editor/* open_engine/*
    condition: SUCCESSFUL
    optional: false
  jobExecutor: luna-executor
  triggers:
  - type: BranchUpdateTrigger
    branches: main
    userMatch: anyone
    projects: OpenEngine
  retryCondition: never
  maxRetries: 3
  retryDelay: 30
  timeout: 14400
- name: Release to Gitea
  steps:
  - type: CommandStep
    name: Release to Gitea
    runInContainer: true
    image: erriss/erris-build-tools:V0.7
    interpreter:
      type: DefaultInterpreter
      commands: |
        # 1. Create the Release metadata
        RELEASE_JSON=$(printf '{"tag_name":"v1.0.%s","target_commitish":"main","name":"Release v1.0.%s","body":"Automated build from OneDev","draft":false,"prerelease":false}' "$ONEDEV_BUILD_NUMBER" "$ONEDEV_BUILD_NUMBER")

        curl -X 'POST' \
          "https://gitea.anfer.fr/api/v1/repos/owner/repo/releases" \
          -H "Authorization: token @secret:Gitea@" \
          -H "Content-Type: application/json" \
          -d "$RELEASE_JSON" > release_info.json

        # 2. Extract the Release ID (using jq)
        RELEASE_ID=$(jq '.id' release_info.json)

        # 3. Upload your binary (oe_editor)
        curl -X 'POST' \
          "https://gitea.anfer.fr/api/v1/repos/owner/repo/releases/$RELEASE_ID/assets?name=oe_editor" \
          -H "Authorization: token @secret:Gitea@" \
          -H "Content-Type: application/octet-stream" \
          --data-binary editor/oe_editor
    envVars:
    - name: ONEDEV_BUILD_NUMBER
      value: '1'
    useTTY: true
    condition: SUCCESSFUL
    optional: false
  jobExecutor: terra-executor
  jobDependencies:
  - jobName: Compile for Linux
    requireSuccessful: true
    artifacts: '**'
  retryCondition: never
  maxRetries: 3
  retryDelay: 30
  timeout: 14400
