Skip to content

V0.8.0

v0.8.0 (2022-07-25)

Bug Fixes

  • update, sync, workflows
  • prepared git sync
  • prepared git sync
  • embed
  • docs
  • implemented uninstall logic for blocks

Chore

  • prepared registry push

Features

  • implemented registry push
  • added sync- and history-capabilities
  • added registry logic

Release notes

Polycrate 0.8.0 introduces a few new notable features:

History

Polycrate writes history! But only its own execution history and only to a file called history.log within your workspace. The history log is meant to help with tracing back workspace activity and execution results. The log-file is in JSON format and has the following model:

{
  "msg": "Action install of block ingress was successful",
  "command": "polycrate run ingress install --loglevel=2 --workspace=/root/.polycrate/workspaces/ayedo-shipmate-poc",
  "commit": "5a1378859f3b3847d2d0d8c9cc51d06f3392c8c3",
  "version": "0.8.0",
  "datetime": "2022-07-24T10:53:55Z",
  "transaction": "c70fbb4f-5c9a-4183-b130-8a1112e537f1"
}
  • msg: the actual message to log. Most log entries will be automated Polycrate logs, but if you want to log something yourself, use polycrate log "this is my message".
  • command: the full command that has been executed
  • commit: (if applicable) the current commit hash of the workspace at the time of logging
  • version: the current version of Polycrate
  • datetime: the creation date of the log
  • transaction: Polycrate creates a transaction every time it's executed and tags all logs with the transaction id of the current execution to establish a relation between entries

Sync

It's now possible to provide a remote git repository as a source of truth for the workspace:

# workspace.poly
name: polycrate-0-8-0
sync:
  enabled: true
  remote:
    url: git@gitlab.com:org/namespace/repo.git
  # Auto-sync
  auto: true

If sync.enabled is true and sync.remote.url is configured, Polycrate will make sure that your workspace is set up against that remote url and keeps track of the local and remote state via git.

Polycrate expects the workspace to be managed by Polycrate only once sync.enabled is true. You can of course interface manually with the repository (which might even be necessary if you work as a team on a workspace and encounter regular git conflicts) but Polycrate will always try to clean the repository and get a proper synced state with the remote. Interfer with this mechanism at your own risk.

If you want to actually sync your workspace with your remote, run polycrate workspace sync.

If you have set sync.auto to true, Polycrate will run multiple syncs before and after you use polycrate run, polycrate action run or polycrate workflow run. The idea is to get a snapshot of the workspace before and after changes to it have been made and potentially deployed to production systems.

Note

If sync is enabled, Polycrate will also issue a commit with every history log and change to the workspace.

Block registry

We're happy to announce the public beta of the Polycrate block registry at polycrate.io. For now, only ayedo-provided blocks are available but we plan to open the registry for the wider community at the beginning of next year.

The following commands are currently supported to interact with the registry:

polycrate block search k8s: searches for all blocks with k8s in their name.

...
ayedo/k8s/external-dns (latest: 0.0.2)
ayedo/k8s/cert-manager (latest: 0.0.1)
ayedo/k8s/nginx (latest: 0.0.1)
ayedo/k8s/portainer (latest: 0.0.4)
ayedo/hcloud/k8s-infra (latest: 0.0.1)
ayedo/hcloud/k8s (latest: 0.0.3)
...

polycrate block install ayedo/k8s/portainer:latest: installs the latest release of block ayedo/k8s/portainer from the registry to the workspace. Just like with Docker, you can easily specify a version tag if you're not willing to live on the edge: ayedo/k8s/portainer:0.0.1.

If you want to install multiple blocks at once, just add them to the command: polycrate block install ayedo/k8s/portainer:latest ayedo/k8s/ingress:0.0.1.

If you want to update a plugin, run polycrate block update yedo/k8s/ingress:0.0.1.

Dependencies

Of course it would be tedious to manually install blocks from the registry whenever you create a new workspace. That's what the new dependencies stanza is for:

name: polycrate-0-8-0
dependencies:
  - ayedo/hcloud/inventory:0.0.1
  - ayedo/hcloud/k8s-infra:0.0.1
  - ayedo/hcloud/k8s:0.0.3
  - ayedo/k8s/nginx:0.0.1
  - ayedo/k8s/portainer:0.0.4
  - ayedo/k8s/cert-manager:0.0.1
  - ayedo/k8s/external-dns:0.0.2

Polycrate will automatically make sure these dependencies are installed whenever you execut it.

Note

Dependencies only exist on workspace-level (for now).

We're currently investigating if it makes sense to implement dependency management for blocks as well.


Last update: July 26, 2022