feat: Add validation command
This commit is contained in:
parent
1de71ab026
commit
9a3ad0ae17
35 changed files with 1666 additions and 508 deletions
|
|
@ -4,126 +4,137 @@ PROJECT blue-build/cli
|
|||
IMPORT github.com/earthly/lib/utils/dind AS dind
|
||||
|
||||
all:
|
||||
BUILD +test-image
|
||||
BUILD +test-legacy-image
|
||||
BUILD +build
|
||||
BUILD +rebase
|
||||
BUILD +upgrade
|
||||
BUILD +switch
|
||||
BUILD +test-image
|
||||
BUILD +test-legacy-image
|
||||
BUILD +build
|
||||
BUILD +rebase
|
||||
BUILD +upgrade
|
||||
BUILD +switch
|
||||
BUILD +validate
|
||||
|
||||
test-image:
|
||||
FROM +build-template --src=template-containerfile
|
||||
WORKDIR /tmp/test
|
||||
COPY ./test-scripts/*.sh ./
|
||||
FROM +build-template --src=template-containerfile
|
||||
WORKDIR /tmp/test
|
||||
COPY ./test-scripts/*.sh ./
|
||||
|
||||
DO +RUN_TESTS
|
||||
DO +RUN_TESTS
|
||||
|
||||
test-legacy-image:
|
||||
FROM +build-template --src=template-legacy-containerfile
|
||||
WORKDIR /tmp/test
|
||||
COPY ./test-scripts/*.sh ./
|
||||
FROM +build-template --src=template-legacy-containerfile
|
||||
WORKDIR /tmp/test
|
||||
COPY ./test-scripts/*.sh ./
|
||||
|
||||
DO +RUN_TESTS
|
||||
DO +RUN_TESTS
|
||||
|
||||
build-template:
|
||||
ARG --required src
|
||||
FROM DOCKERFILE \
|
||||
-f +$src/test/Containerfile \
|
||||
+$src/test/*
|
||||
ARG --required src
|
||||
FROM DOCKERFILE \
|
||||
-f +$src/test/Containerfile \
|
||||
+$src/test/*
|
||||
|
||||
template-containerfile:
|
||||
FROM +test-base
|
||||
RUN bluebuild -v generate recipes/recipe.yml | tee Containerfile
|
||||
FROM +test-base
|
||||
RUN --no-cache bluebuild -v generate recipes/recipe.yml | tee Containerfile
|
||||
|
||||
SAVE ARTIFACT /test
|
||||
SAVE ARTIFACT /test
|
||||
|
||||
template-legacy-containerfile:
|
||||
FROM +legacy-base
|
||||
RUN bluebuild -v template config/recipe.yml | tee Containerfile
|
||||
FROM +legacy-base
|
||||
RUN --no-cache bluebuild -v template config/recipe.yml | tee Containerfile
|
||||
|
||||
SAVE ARTIFACT /test
|
||||
SAVE ARTIFACT /test
|
||||
|
||||
build:
|
||||
FROM +test-base
|
||||
FROM +test-base
|
||||
|
||||
RUN bluebuild -v build recipes/recipe.yml
|
||||
RUN bluebuild -v build recipes/recipe.yml
|
||||
|
||||
build-full:
|
||||
FROM +test-base --MOCK="false"
|
||||
FROM +test-base --MOCK="false"
|
||||
|
||||
DO dind+INSTALL
|
||||
DO dind+INSTALL
|
||||
|
||||
ENV BB_USERNAME=gmpinder
|
||||
ENV BB_REGISTRY=ghcr.io
|
||||
ENV BB_REGISTRY_NAMESPACE=blue-build
|
||||
ENV BB_USERNAME=gmpinder
|
||||
ENV BB_REGISTRY=ghcr.io
|
||||
ENV BB_REGISTRY_NAMESPACE=blue-build
|
||||
|
||||
WITH DOCKER
|
||||
RUN --secret BB_PASSWORD=github/registry bluebuild build --push -S sigstore -vv recipes/recipe.yml
|
||||
END
|
||||
|
||||
WITH DOCKER
|
||||
RUN --secret BB_PASSWORD=github/registry bluebuild build --push -S sigstore -vv recipes/recipe.yml
|
||||
END
|
||||
|
||||
|
||||
rebase:
|
||||
FROM +legacy-base
|
||||
FROM +legacy-base
|
||||
|
||||
RUN bluebuild -v rebase config/recipe.yml
|
||||
RUN --no-cache bluebuild -v rebase config/recipe.yml
|
||||
|
||||
upgrade:
|
||||
FROM +legacy-base
|
||||
FROM +legacy-base
|
||||
|
||||
RUN mkdir -p /etc/bluebuild && touch $BB_TEST_LOCAL_IMAGE
|
||||
RUN bluebuild -v upgrade config/recipe.yml
|
||||
RUN mkdir -p /etc/bluebuild && touch $BB_TEST_LOCAL_IMAGE
|
||||
RUN --no-cache bluebuild -v upgrade config/recipe.yml
|
||||
|
||||
switch:
|
||||
FROM +test-base
|
||||
FROM +test-base
|
||||
|
||||
RUN mkdir -p /etc/bluebuild && touch $BB_TEST_LOCAL_IMAGE
|
||||
RUN bluebuild -v switch recipes/recipe.yml
|
||||
RUN mkdir -p /etc/bluebuild && touch $BB_TEST_LOCAL_IMAGE
|
||||
RUN --no-cache bluebuild -v switch recipes/recipe.yml
|
||||
|
||||
validate:
|
||||
FROM +test-base
|
||||
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe.yml
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe-39.yml
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe-arm64.yml
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe-invalid.yml && exit 1 || exit 0
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe-invalid-module.yml && exit 1 || exit 0
|
||||
RUN --no-cache bluebuild -v validate recipes/recipe-invalid-stage.yml && exit 1 || exit 0
|
||||
|
||||
legacy-base:
|
||||
FROM ../+blue-build-cli-alpine
|
||||
RUN apk update --no-cache && apk add bash grep jq sudo coreutils
|
||||
ENV BB_TEST_LOCAL_IMAGE=/etc/bluebuild/cli_test-legacy.tar.gz
|
||||
ENV CLICOLOR_FORCE=1
|
||||
FROM ../+blue-build-cli-alpine --RELEASE=false
|
||||
RUN apk update --no-cache && apk add bash grep jq sudo coreutils
|
||||
ENV BB_TEST_LOCAL_IMAGE=/etc/bluebuild/cli_test-legacy.tar.gz
|
||||
ENV CLICOLOR_FORCE=1
|
||||
|
||||
COPY ./mock-scripts/ /usr/bin/
|
||||
COPY ./mock-scripts/ /usr/bin/
|
||||
|
||||
WORKDIR /test
|
||||
COPY ./legacy-test-repo /test
|
||||
WORKDIR /test
|
||||
COPY ./legacy-test-repo /test
|
||||
|
||||
DO ../+INSTALL --OUT_DIR="/usr/bin/" --BUILD_TARGET="x86_64-unknown-linux-musl" --TAGGED="true"
|
||||
DO ../+INSTALL --OUT_DIR="/usr/bin/" --BUILD_TARGET="x86_64-unknown-linux-musl" --TAGGED="true"
|
||||
|
||||
DO +GEN_KEYPAIR
|
||||
DO +GEN_KEYPAIR
|
||||
|
||||
test-base:
|
||||
FROM ../+blue-build-cli-alpine
|
||||
RUN apk update --no-cache && apk add bash grep jq sudo coreutils
|
||||
ENV BB_TEST_LOCAL_IMAGE=/etc/bluebuild/cli_test.tar.gz
|
||||
ENV CLICOLOR_FORCE=1
|
||||
FROM ../+blue-build-cli-alpine --RELEASE=false
|
||||
RUN apk update --no-cache && apk add bash grep jq sudo coreutils
|
||||
ENV BB_TEST_LOCAL_IMAGE=/etc/bluebuild/cli_test.tar.gz
|
||||
ENV CLICOLOR_FORCE=1
|
||||
|
||||
ARG MOCK="true"
|
||||
IF [ "$MOCK" = "true" ]
|
||||
COPY ./mock-scripts/ /usr/bin/
|
||||
END
|
||||
ARG MOCK="true"
|
||||
IF [ "$MOCK" = "true" ]
|
||||
COPY ./mock-scripts/ /usr/bin/
|
||||
END
|
||||
|
||||
WORKDIR /test
|
||||
COPY ./test-repo /test
|
||||
WORKDIR /test
|
||||
COPY ./test-repo /test
|
||||
|
||||
DO +GEN_KEYPAIR
|
||||
DO +GEN_KEYPAIR
|
||||
|
||||
GEN_KEYPAIR:
|
||||
FUNCTION
|
||||
# Setup a cosign key pair
|
||||
ENV COSIGN_PASSWORD=""
|
||||
ENV COSIGN_YES="true"
|
||||
RUN cosign generate-key-pair
|
||||
ENV COSIGN_PRIVATE_KEY=$(cat cosign.key)
|
||||
RUN rm cosign.key
|
||||
FUNCTION
|
||||
# Setup a cosign key pair
|
||||
ENV COSIGN_PASSWORD=""
|
||||
ENV COSIGN_YES="true"
|
||||
RUN cosign generate-key-pair
|
||||
ENV COSIGN_PRIVATE_KEY=$(cat cosign.key)
|
||||
RUN rm cosign.key
|
||||
|
||||
RUN_TESTS:
|
||||
FUNCTION
|
||||
FOR script IN $(ls *.sh)
|
||||
RUN --no-cache chmod +x $script \
|
||||
&& echo "Running test $script" \
|
||||
&& ./$script
|
||||
END
|
||||
FUNCTION
|
||||
FOR script IN $(ls *.sh)
|
||||
RUN --no-cache chmod +x $script \
|
||||
&& echo "Running test $script" \
|
||||
&& ./$script
|
||||
END
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ modules:
|
|||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/module-list-v1.json
|
||||
modules:
|
||||
# Tests installing rpms from a combo image stage
|
||||
- type: akmods
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/module-stage-list-v1.json
|
||||
stages:
|
||||
- name: blue-build
|
||||
image: rust
|
||||
from: rust
|
||||
modules:
|
||||
- type: script
|
||||
scripts:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/module-v1.json
|
||||
type: default-flatpaks
|
||||
notify: true
|
||||
system:
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ modules:
|
|||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
name: cli/test
|
||||
description: This is my personal OS image.
|
||||
base-image: quay.io/fedora/fedora-silverblue
|
||||
image-version: 40
|
||||
alt_tags:
|
||||
alt-tags:
|
||||
- arm64
|
||||
stages:
|
||||
stages: []
|
||||
modules:
|
||||
- from-file: flatpaks.yml
|
||||
|
||||
|
|
@ -29,6 +31,7 @@ modules:
|
|||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
name: cli/test-invalid-module
|
||||
description: This is my personal OS image.
|
||||
base-image: ghcr.io/ublue-os/silverblue-main
|
||||
image-version: 40
|
||||
stages:
|
||||
- from-file: stages.yml
|
||||
modules:
|
||||
- from-file: akmods.yml
|
||||
- from-file: flatpaks.yml
|
||||
|
||||
- type: files
|
||||
files:
|
||||
- source: usr
|
||||
destination: /usr
|
||||
|
||||
- type: script
|
||||
scripts:
|
||||
- example.sh
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
|
||||
install: micro
|
||||
installer: test
|
||||
remove:
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
|
||||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
labels: labels
|
||||
snippets:
|
||||
- RUN echo "This is a snippet" && ostree container commit
|
||||
|
||||
- type: copy
|
||||
from: alpine-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: ubuntu-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: debian-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: fedora-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
61
integration-tests/test-repo/recipes/recipe-invalid-stage.yml
Normal file
61
integration-tests/test-repo/recipes/recipe-invalid-stage.yml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
name: cli/test-invalid-stage
|
||||
description: This is my personal OS image.
|
||||
base-image: ghcr.io/ublue-os/silverblue-main
|
||||
image-version: 40
|
||||
stages:
|
||||
- name: ubuntu-test
|
||||
from:
|
||||
- ubuntu
|
||||
modules: {}
|
||||
modules:
|
||||
- from-file: akmods.yml
|
||||
- from-file: flatpaks.yml
|
||||
|
||||
- type: files
|
||||
files:
|
||||
- source: usr
|
||||
destination: /usr
|
||||
|
||||
- type: script
|
||||
scripts:
|
||||
- example.sh
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
|
||||
install:
|
||||
- micro
|
||||
- starship
|
||||
remove:
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
|
||||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
- labels
|
||||
snippets:
|
||||
- RUN echo "This is a snippet" && ostree container commit
|
||||
|
||||
- type: copy
|
||||
from: alpine-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: ubuntu-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: debian-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: fedora-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
59
integration-tests/test-repo/recipes/recipe-invalid.yml
Normal file
59
integration-tests/test-repo/recipes/recipe-invalid.yml
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
name: cli/test-invalid
|
||||
description: 10
|
||||
base-image: ghcr.io/ublue-os/silverblue-main
|
||||
image-version:
|
||||
- 40
|
||||
- 39
|
||||
stages: {}
|
||||
modules:
|
||||
- from-file: akmods.yml
|
||||
- from-file: flatpaks.yml
|
||||
|
||||
- type: files
|
||||
files:
|
||||
- source: usr
|
||||
destination: /usr
|
||||
|
||||
- type: script
|
||||
scripts:
|
||||
- example.sh
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
|
||||
install:
|
||||
- micro
|
||||
- starship
|
||||
remove:
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
|
||||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
- labels
|
||||
snippets:
|
||||
- RUN echo "This is a snippet" && ostree container commit
|
||||
|
||||
- type: copy
|
||||
from: alpine-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: ubuntu-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: debian-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
- type: copy
|
||||
from: fedora-test
|
||||
src: /test.txt
|
||||
dest: /
|
||||
|
|
@ -32,6 +32,7 @@ modules:
|
|||
- type: signing
|
||||
|
||||
- type: test-module
|
||||
source: local
|
||||
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/module-stage-list-v1.json
|
||||
stages:
|
||||
- name: ubuntu-test
|
||||
from: ubuntu
|
||||
|
|
@ -25,6 +27,7 @@ modules:
|
|||
snippets:
|
||||
- echo "test" > /test.txt
|
||||
- type: test-module
|
||||
source: local
|
||||
- type: containerfile
|
||||
containerfiles:
|
||||
- labels
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue