es-entity 0.10.35

Event Sourcing Entity Framework
Documentation
#@ load("@ytt:data", "data")

#@ load("vendor/pipeline-fragments.lib.yml",
#@   "public_docker_registry",
#@   "repo_resource",
#@   "version_resource",
#@   "pipeline_tasks_resource",
#@   "release_task_image_config",
#@   "rust_task_image_config",
#@   "gh_release_resource",
#@   "nix_task_image_config",
#@ )

groups:
- name: es-entity
  jobs:
  - check-code
  - tests
  - release
  - set-dev-version

jobs:
- name: check-code
  serial: true
  plan:
  - in_parallel:
    - { get: repo, trigger: true }
    - { get: pipeline-tasks }
  - task: check-code
    config:
      platform: linux
      image_resource: #@ nix_task_image_config()
      inputs:
      - name: repo
      run:
        path: sh
        args:
          - -exc
          - |
            set -euo pipefail
            cd repo
            cachix use $CACHIX_CACHE_NAME
            cachix watch-exec $CACHIX_CACHE_NAME -- nix flake check
      params:
        CACHIX_AUTH_TOKEN: #@ data.values.cachix_auth_token
        CACHIX_CACHE_NAME: #@ data.values.cachix_cache_name

- name: tests
  plan:
    - in_parallel:
      - get: repo
        trigger: true
      - { get: pipeline-tasks }
    - task: tests
      attempts: 2
      privileged: true
      config:
        platform: linux
        image_resource: #@ nix_task_image_config()
        inputs:
          - name: repo
        run:
          path: sh
          args:
            - -exc
            - |
              set -euo pipefail
              cd repo
              cachix use $CACHIX_CACHE_NAME
              cachix watch-exec $CACHIX_CACHE_NAME -- nix run .#nextest
        params:
          CACHIX_AUTH_TOKEN: #@ data.values.cachix_auth_token
          CACHIX_CACHE_NAME: #@ data.values.cachix_cache_name
- name: release
  serial: true
  plan:
  - in_parallel:
    - get: repo
      passed:
      - check-code
      - tests
    - get: pipeline-tasks
    - get: version
  - task: prep-release
    config:
      platform: linux
      image_resource: #@ release_task_image_config()
      inputs:
      - name: pipeline-tasks
      - name: repo
      - name: version
      outputs:
      - name: version
      - name: artifacts
      run:
        path: pipeline-tasks/ci/vendor/tasks/prep-release-src.sh
  - task: update-repo
    config:
      platform: linux
      image_resource: #@ rust_task_image_config()
      inputs:
      - name: artifacts
      - name: pipeline-tasks
      - name: repo
      - name: version
      outputs:
      - name: repo
      run:
        path: pipeline-tasks/ci/tasks/update-repo.sh
  - task: publish-to-crates
    config:
      image_resource: #@ rust_task_image_config()
      platform: linux
      inputs:
      - name: version
      - name: pipeline-tasks
      - name: repo
      params:
        CRATES_API_TOKEN: #@ data.values.crates_api_token
      caches:
      - path: cargo-home
      - path: cargo-target-dir
      run:
        path: pipeline-tasks/ci/tasks/publish-to-crates.sh
  - put: repo
    params:
      tag: artifacts/gh-release-tag
      repository: repo
      merge: true
  - put: gh-release
    params:
      name: artifacts/gh-release-name
      tag: artifacts/gh-release-tag
      body: artifacts/gh-release-notes.md
  - put: version
    params:
      file: version/version

- name: set-dev-version
  plan:
  - in_parallel:
    - { get: repo, passed: [release] }
    - { get: pipeline-tasks }
    - get: version
      trigger: true
      params: { bump: patch }
      passed: [release]
  - task: set-dev-version
    config:
      image_resource: #@ rust_task_image_config()
      platform: linux
      inputs:
      - name: version
      - name: repo
      - name: pipeline-tasks
      outputs:
      - name: repo
      run:
        path: pipeline-tasks/ci/tasks/set-dev-version.sh
      params:
        BRANCH: #@ data.values.git_branch
  - put: repo
    params:
      repository: repo
      rebase: true


resources:
- #@ repo_resource(True)
- #@ gh_release_resource()
- #@ pipeline_tasks_resource()
- #@ version_resource()