grim/convey

Port from logrus to log/slog
default tip
5 months ago, Elliott Sales de Andrade
c588f9b3f559
Port from logrus to log/slog

This doesn't really take much advantage of structured logging beyond what is already done (`id` and `idColor`), and consequently the log handler does not try to do any handling of anything more than that (i.e., grouping, or arbitrary attributes beyond those defined).

One should maybe have a `Context` available to pass in, but there isn't one, and anyway, the log handler doesn't use it, so I've passed in a `TODO` instead.

Everything else is just normal import/rename changes.

Testing Done:
Ran `go run . run`

Reviewed at https://reviews.imfreedom.org/r/2871/
# Podman
Podman is a container runtime that runs daemonless as a normal user. It has
been adopted as the only container run time since convey 0.15.0.
----
## podman/build
This task will build a container image.
### Attributes
| Name | Required | Default | Description |
| ------------- | -------- | ------------------- | ----------- |
| annotations | | | A list of annotations for the container image. |
| containerfile | Yes | | The containerfile to build. |
| context | | ${CONVEY_WORKSPACE} | The context to pass to podman build. This path needs to build under the convey workspace which means all files for the build must first be imported into the workspace. |
| tags | | | A list of tags or a single tag to be applied to the image. |
| target | | | The name of the target to build in a multi stage containerfile. |
### Example
```yaml
build:
type: podman/build
containerfile: Dockerfile
tags: myimage:latest
```
----
## podman/login
This task allows you to authorize to a container registry.
### Attributes
| Name | Required | Default | Description |
| --------- | -------- | --------- | ----------- |
| password | Yes | | The password to use. |
| registry | | docker.io | The registry to login to. |
| username | Yes | | The username to use. |
### Example
```yaml
registry-login:
type: podman/login
username: superuser1
password: abc123
```
----
## podman/logout
This task allows you to unauthenticate from a container registry.
### Attributes
| Name | Required | Default | Description |
| -------- | -------- | --------- | ----------- |
| registry | | docker.io | The registry to logout of. |
### Example
```yaml
registry-logout:
type: podman/logout
registry: registry.my.domain:5000
```
----
## podman/pull
This task allows you to pull down a container image. If the image is private,
be sure to run a `podman/login` task first.
### Attributes
| Name | Required | Default | Description |
| ---- | -------- | ------- | ----------- |
| tags | Yes | | A list of image names or a single image name including the tags. |
### Example
```yaml
pull-alpine:
type: podman/pull
tags: gliderlabs/alpine:edge
```
----
## podman/push
This task allows you to push a local container image to a registry. If the
repository on the registry is private, be sure to run a `podman/login` task
first.
### Attributes
| Name | Required | Default | Description |
| ---- | -------- | ------- | ----------- |
| tags | Yes | | A list of image names or a single image name including the tags. |
### Example
```yaml
push-images:
type: podman/push
tags:
- registry.my.domain:5000/newimage:main-latest
- registry.my.domain:5000/newimage:main-deadbeef
```
----
## podman/remove
This task will remove an image from the local machine.
### Attributes
| Name | Required | Default | Description |
| ----- | -------- | ------- | ----------- |
| tags | | | A list of image names including the tags. |
| quiet | | false | True if a missing image should not count as a failure. |
### Example
```yaml
remove-image:
type: podman/remove
tags:
- registry.my.domain:5000/newimage:main-latest
- registry.my.domain:5000/newimage:main-deadbeef
```
----
## podman/run
This task will run a container with the workspace mounted.
### Attributes
| Name | Required | Default | Description |
| ----------- | -------- | ------- | ----------- |
| annotations | | | A list of annotations to set on the container being run. |
| command | | | The command to run in the container. This is only necessary if the image does not provide a command by default. |
| entrypoint | | | The entrypoint to use for the container. This is only necessary if the image does not provide one by default or if you want to override the image's default entrypoint. |
| environment | | | A list of environment variables to set. This should be specified in a `NAME` or `NAME=VALUE` format. |
| hostname | | | A custom hostname to set inside the container. |
| image | Yes | | The image including the registry and tag to run. |
| script | | | A list of commands to run inside of the container. |
| shell | | | The shell to use with the script attribute above. |
| user | | | The user to run the container as. |
| workdir | | | The working directory inside the container. |
| workspace | | | The path to mount the convey workspace at inside of the container. |
### Example
A basic example where the image knows everything to do.
```yaml
build-golang:
type: podman/run
image: golang:onbuild
```
A basic example using a standard image to do something else.
```yaml
download-file:
type: podman/run
image: debian:bookworm
script:
- wget https://somedomain.tld/file1
- wget https://somedomain.tld/file1.sha256sum
- sha256sum -c file1.sha256sum
```
----
## podman/tag
This task will tag existing images on the host.
### Attributes
| Name | Required | Default | Description |
| ------- | -------- | ------- | ----------- |
| image | Yes | | The full source image including the registry and tag to tag. |
| targets | Yes | | The destination tag including the registry and tag to create. |
### Example
```yaml
tag-dev:
type: podman/tag
image: registry.my.domain:5000/newimage:latest
targets: registry.my.domain:5000/newimage:dev
```