Commit graph

82 commits

Author SHA1 Message Date
fiftydinar
273d8795b2
chore: Copy signing keys to /etc/ only (#288)
Supplements main PR: https://github.com/blue-build/modules/pull/375

Tests & it works, can be merged.
2024-12-08 17:07:48 -05:00
Gerald Pinder
a8cac2adc9 chore: Release 2024-12-03 04:36:13 -05:00
Gerald Pinder
2069eb513a chore: Prepare for the v0.9.0 release 2024-12-03 03:49:37 -05:00
Gerald Pinder
b4fbac2a66 feat(rechunk): Add the ability to rechunk an image 2024-12-02 02:23:22 -05:00
Gerald Pinder
ffa1789422 chore: Release 2024-12-02 01:27:15 -05:00
Gerald Pinder
3c6ad5ac25 chore: Release 2024-11-26 21:25:15 -05:00
Gerald Pinder
ddfacd3492 chore: Release 2024-11-25 20:04:13 -05:00
Gerald Pinder
85bb813e75 feat: Add cache for dnf5 2024-11-24 14:21:34 -05:00
Gerald Pinder
31d0ba2162 chore: Release 2024-11-24 11:57:25 -05:00
Gerald Pinder
1f0e5af091 chore: Release 2024-11-24 11:51:52 -05:00
Gerald Pinder
0de0417515 chore: Install jq and prefer over yq for modules 2024-11-24 11:14:00 -05:00
Gerald Pinder
918da22952
feat(init): Add the new/init subcommands (#85) 2024-11-14 20:15:12 -05:00
Gerald Pinder
e3b246ef91 feat: Include base image information in labels 2024-11-14 09:26:08 -05:00
Gerald Pinder
5ff001816c chore(deps): Update more dependencies 2024-11-06 20:11:55 -05:00
dependabot[bot]
6e164eefd3 chore(deps): bump rinja from 0.3.4 to 0.3.5
Bumps [rinja](https://github.com/rinja-rs/rinja) from 0.3.4 to 0.3.5.
- [Release notes](https://github.com/rinja-rs/rinja/releases)
- [Commits](https://github.com/rinja-rs/rinja/compare/v0.3.4...v0.3.5)

---
updated-dependencies:
- dependency-name: rinja
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 16:33:36 -04:00
Gerald Pinder
9a3ad0ae17 feat: Add validation command 2024-10-30 18:08:50 -04:00
Gerald Pinder
ba5d6696f5 fix: Update copy Typespec to expect proper type 2024-10-13 19:06:50 -04:00
Gerald Pinder
32092195d3
chore: Cleanup workflows to be run from just (#238) 2024-10-07 16:34:36 -04:00
Gerald Pinder
7c5578994e chore: Release 2024-10-06 13:21:50 -04:00
Gerald Pinder
d2f3f6f756 chore: Release 2024-10-04 16:49:06 -04:00
Gerald Pinder
566380a82a chore: Release 2024-10-03 14:48:15 -04:00
Gerald Pinder
0c52cf6a54 refactor: Swtich to using bon for builder pattern 2024-09-21 18:42:28 -04:00
Gerald Pinder
de45aeb015 fix: Add post build script to prepare image for ISO creation 2024-09-16 16:19:00 -04:00
Gerald Pinder
fbf57e5c83 fix: Properly escape module json 2024-09-14 00:59:44 -04:00
Gerald Pinder
ce717118ce chore: Release 2024-09-11 19:05:44 -04:00
Gerald Pinder
199d975305 chore: Release 2024-09-08 10:26:17 -04:00
Gerald Pinder
d4b511ebdb chore: Release 2024-09-07 18:59:56 -04:00
Gerald Pinder
74d99f2b17 feat: Color output in terminal if running in TTY 2024-08-30 23:40:53 -04:00
Gerald Pinder
43dd4ef842 chore: Release 2024-08-25 14:10:13 -04:00
Gerald Pinder
e4ad31c047 chore: Release 2024-08-20 09:04:17 -04:00
Gerald Pinder
8ce83ba7ff
refactor: Create SigningDriver and CiDriver (#197)
This also includes a new `login` command. The signing and CI logic is now using the Driver trait system along with a new experimental sigstore signing driver. New static macros have also been created to make implementation management easier for `Command` usage and `Driver` trait implementation calls.

---------

Co-authored-by: xyny <60004820+xynydev@users.noreply.github.com>
2024-08-12 23:52:07 -04:00
Gerald Pinder
7be5e00a31 chore: Release 2024-08-11 11:09:54 -04:00
Gerald Pinder
82606cc144 fix: allow copying keys to both /etc and /usr/etc 2024-08-10 22:11:52 -04:00
fiftydinar
bd75880a03
chore: Move files from /usr/etc/ to /etc/ in build-time (#214)
Take a look at this issue for more details:

https://github.com/blue-build/modules/issues/314

Idk if anything else needs to be done, please tell

Should be tested for regressions too
2024-08-08 17:11:27 +00:00
Gerald Pinder
6a97a52da4 chore: Switch from askama to rinja 2024-08-03 11:21:45 -04:00
xyny
f89fa3f159
fix: add typespec schemas for cli modules, remove modules.json (not needed anymore) (#209)
The website build process now uses the GitHub API to generate a global
`modules.json`. If you decide to move the directory containing all the
modules, please tell me, or make a PR changing [this
line](9eb198c4e5/astro.config.mjs (L102)).
If you don't, I'll find out anyways, because the website builds will
break.

Also, whenever updating the modules, make sure the schema is updated too
to match the current state of the module. If you need help with writing
[TypeSpec](https://typespec.io/), consult me, but you probably wont,
since it's just a type system kind of like TypeScript's or Rust's .
2024-07-27 10:31:52 -04:00
Gerald Pinder
d0d51d5aa0 chore: Capitalize AS 2024-06-21 21:08:43 -04:00
Gerald Pinder
4f235be4f7 chore: Release 2024-06-03 09:54:28 -04:00
Gerald Pinder
0b29929e93
fix: Fail if cosign private/public key can't be verified (#190) 2024-06-01 19:05:14 -04:00
Gerald Pinder
b2aff68741 chore: Release 2024-05-28 22:59:17 -04:00
Gerald Pinder
5dfae14c32
fix: Allow both files or config directory to not exist (#185) 2024-05-18 14:34:54 +00:00
Gerald Pinder
8069006c03
feat: Stages (#173)
## Stages

A new property (`stages`) is being added to the recipe file schema. This
property will allow users to define a list of Containerfile stages each
with their own modules. Stages can be used to compile programs, perform
parallel operations, and copy the results into the final image without
contaminating the final image.

### Module Support

Currently the only modules that work out-of-the-box are `copy`,
`script`, `files`, and `containerfile`. Other modules are dependent on
the programs installed on the image. In order to better support some of
our essential modules, a setup script is ran at the start of each stage
that is not `scratch`. This script will install `curl`, `wget`, `bash`,
and `grep` and use the package manager for the detected distributions.

At this time, the following distributions are supported:

- Debian
- Ubuntu
- Fedora
- Alpine

Contributions to increase the size of this list is
[welcome](https://github.com/blue-build/cli)!

### Syntax

- **Required**
- `from` - The full image ref (image name + tag). This will be set in
the `FROM` statement of the stage.
- `name` - The name of the stage. This is used when referencing the
stage when using the `from:` property in the `copy` module.
- `modules` - The list of modules to execute. The exact same syntax used
by the main recipe `modules:` property.
- **Optional**
- `shell` - Allows a user to pass in an array of strings that are passed
directly into the [`SHELL`
instruction](https://docs.docker.com/reference/dockerfile/#shell).

#### Example

```yaml
stages:
- name: ubuntu-test
  from: ubuntu
  modules:
  - type: files
    files:
    - usr: /usr
  - type: script
    scripts:
    - example.sh
    snippets:
    - echo "test" > /test.txt
  - type: test-module
  - type: containerfile
    containerfiles:
    - labels
    snippets:
    - RUN echo "This is a snippet"
```

### Tasks
- [x] `from-file:` - Allows the user to store their stages in a separate
file so it can be included in multiple recipes
- [x] `no-cache:` - This will be useful for stages that want to pull the
latest changes from a git repo and not have to rely on the base image
getting an update for the build to be triggered again.
- [x] Add setup script to be able to install necessary programs to run
`bluebuild` modules in stages
- [x] Check for circular dependencies and error out

## `copy` module

This is a 1-1 for the [`COPY`
instruction](https://docs.docker.com/reference/dockerfile/#copy). It has
the ability to copy files between stages, making this a very important
addition to complete functionality for the stages feature. Each use of
this "module" will become its own layer.

### Decision to use `--link`

We use the `--link`
[option](https://docs.docker.com/reference/dockerfile/#benefits-of-using---link)
which allows that layer to have the same hash if the files haven't
changed regardless of if the previous instructions have changed. This
allows these layers to not have to be re-downloaded on the user's
computer if the copied files haven't changed.

### Syntax

- **Required**
- `src` - The source directory/file from the repo OR when `from:` is set
the image/stage that is specified.
  - `dest` - The destination directory/file inside the working image.
- **Optional**
  - `from` - The stage/image to copy from.

#### Example

```yaml
modules:
- type: copy
  from: ubuntu-test
  src: /test.txt
  dest: /
```

### Tasks
- [x] make `from:` optional
- [x] Add README.md and module.yml

## Feature gating

Gating this feature until we release for `v0.9.0`. The plan will be to
build all features (including this one) for main branch builds. This
means that these features will be available when using the `main` image
and consequently the `use_unstable_cli:` option on the GitHub Action.
All future `v0.9.0` features will be gated as well to allow for patches
to `v0.8`.

### Tasks
- [x] Build `--all-features` on non-tagged builds
- [x] Add stages and copy features
2024-05-18 13:23:50 +00:00
Gerald Pinder
8308e5b285 chore: Release 2024-05-16 20:39:06 -04:00
Gerald Pinder
eddbcb48f7 chore: Release 2024-05-14 10:14:54 -04:00
Gerald Pinder
5786ce40bf chore: Release 2024-05-05 01:18:08 -04:00
Gerald Pinder
cfc39817fc chore: Release 2024-04-28 21:56:24 -04:00
Gerald Pinder
fbbd2d220a chore: Release 2024-04-27 15:21:48 -04:00
Gerald Pinder
0c7033ccd2
feat: Move module run logic into its own script (#168)
This will help make the Containerfile just a little bit easier to read
(ignoring all the mounts lol). This would also allow us to add logic
later to support modules that run executables other than `*.sh`.
2024-04-27 15:19:58 -04:00
Gerald Pinder
3898202bc3
fix: Pull extra akmods image too (#169)
Adds the new `-extra` image from akmods image
2024-04-27 15:01:06 -04:00
Gerald Pinder
a7503d561e chore: Make more /var dirs 2024-04-24 23:35:33 -04:00