Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Podvm builder version removal #2008

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/cloud-api-adaptor/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ podvm-builder:
--build-arg YQ_ARCH=$(ARCH) \
--build-arg PROTOC_ARCH=$(if $(filter amd64,$(ARCH)),x86_64,s390_64) \
--build-arg ORAS_VERSION=$(ORAS_VERSION) \
--build-arg PACKER_VERSION=$(PACKER_VERSION) \
$(DOCKER_OPTS) .

podvm-binaries:
Expand Down
13 changes: 5 additions & 8 deletions src/cloud-api-adaptor/podvm/Dockerfile.podvm_builder
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,12 @@ ARG ARCH="amd64"
ARG YQ_ARCH="amd64"
# PROTOC_ARCH="x86_64" | "s390_64"
ARG PROTOC_ARCH="x86_64"
ARG GO_VERSION="1.22.7"
ARG PROTOC_VERSION="3.15.0"
ARG RUST_VERSION="1.75.0"
ARG YQ_VERSION="v4.35.1"
# amd64: YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"
# s390x: YQ_CHECKSUM="sha256:4e6324d08630e7df733894a11830412a43703682d65a76f1fc925aac08268a45"
ARG YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"
ARG GO_VERSION
ARG PROTOC_VERSION
ARG RUST_VERSION
ARG YQ_VERSION
ARG YQ_CHECKSUM
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PACKER_VERSION ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok.. I see it's only needed for rhel

ARG ORAS_VERSION

# Without setting ENV gh-action is failing to use the correct values
ENV GO_VERSION=${GO_VERSION}
ENV RUST_VERSION=${RUST_VERSION}
Expand Down
12 changes: 5 additions & 7 deletions src/cloud-api-adaptor/podvm/Dockerfile.podvm_builder.fedora
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@ ARG ARCH="amd64"
ARG YQ_ARCH="amd64"
# PROTOC_ARCH="x86_64" | "s390_64"
ARG PROTOC_ARCH="x86_64"
ARG GO_VERSION="1.22.7"
ARG PROTOC_VERSION="3.15.0"
ARG RUST_VERSION="1.75.0"
ARG YQ_VERSION="v4.35.1"
ARG GO_VERSION
ARG PROTOC_VERSION
ARG RUST_VERSION
ARG YQ_VERSION
ARG YQ_CHECKSUM
ARG ORAS_VERSION
# amd64: YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"
# s390x: YQ_CHECKSUM="sha256:4e6324d08630e7df733894a11830412a43703682d65a76f1fc925aac08268a45"
ARG YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"

RUN dnf groupinstall -y 'Development Tools' && \
dnf install -y yum-utils gnupg git perl-core pkg-config libseccomp-devel gpgme-devel \
Expand Down
17 changes: 8 additions & 9 deletions src/cloud-api-adaptor/podvm/Dockerfile.podvm_builder.rhel
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@ ARG ARCH="amd64"
ARG YQ_ARCH="amd64"
# PROTOC_ARCH="x86_64" | "s390_64"
ARG PROTOC_ARCH="x86_64"
ARG GO_VERSION="1.22.7"
ARG PROTOC_VERSION="3.15.0"
ARG RUST_VERSION="1.75.0"
ARG YQ_VERSION="v4.35.1"
ARG PACKER_VERSION="v1.9.4"
# amd64: YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"
# s390x: YQ_CHECKSUM="sha256:4e6324d08630e7df733894a11830412a43703682d65a76f1fc925aac08268a45"
ARG YQ_CHECKSUM="sha256:bd695a6513f1196aeda17b174a15e9c351843fb1cef5f9be0af170f2dd744f08"
ARG GO_VERSION
ARG PROTOC_VERSION
ARG RUST_VERSION
ARG PACKER_VERSION
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you need ENV setting for PACKER_VERSION later in the code?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if it's strictly required as that seems to be GHA related and I don't see us ever building RHEL in the open-source pipelines, but I can add for consistency

ARG ORAS_VERSION
ARG YQ_VERSION
ARG YQ_CHECKSUM
ARG ORG_ID
ARG ACTIVATION_KEY

Expand All @@ -33,6 +31,7 @@ ENV ARCH=${ARCH}
ENV YQ_ARCH=${YQ_ARCH}
ENV YQ_VERSION=${YQ_VERSION}
ENV ORAS_VERSION=${ORAS_VERSION}
ENV PACKER_VERSION=${PACKER_VERSION}

# This registering RHEL when building on an unsubscribed system
# If you are running a UBI container on a registered and subscribed RHEL host, the main RHEL Server repository is enabled inside the standard UBI container
Expand All @@ -55,7 +54,7 @@ RUN chmod a+x /usr/local/bin/yq && \
rm -f go${GO_VERSION}.linux-${YQ_ARCH}.tar.gz
ENV PATH="/usr/local/go/bin:${PATH}"

# Install packer. Packer doesn't does not have prebuilt s390x arch binaries above Packer version 0.1.5
# Install packer. Packer doesn't have prebuilt s390x arch binaries beyond Packer version 0.1.5
RUN if [ "${ARCH}" == "s390x" ]; then \
git clone --depth 1 --single-branch https://github.com/hashicorp/packer.git -b ${PACKER_VERSION}; \
cd packer; \
Expand Down
46 changes: 18 additions & 28 deletions src/cloud-api-adaptor/podvm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,42 +43,32 @@ The builder image packages the cloud-api-adaptor and Kata Containers sources as
the binaries (e.g. *kata-agent* and *agent-protocol-forwarder*) that should be installed in the podvm image.

The builder image is agnostic to cloud providers in the sense that one can be used to build for multiple providers, however it is
dependent on the Linux distribution the image is built for. Therefore, in this directory you will find dockerfiles for each supported distributions, which are currently Ubuntu 20.04 ([Dockerfile.podvm_builder](./Dockerfile.podvm_builder)), and RHEL 9 ([Dockerfile.podvm_builder.rhel](./Dockerfile.podvm_builder.rhel)).

As an example, to build the builder image for Ubuntu, run:
dependent on the Linux distribution the image is built for. Therefore, in this directory you will find dockerfiles for each
supported distributions, which are currently Ubuntu 20.04 ([Dockerfile.podvm_builder](./Dockerfile.podvm_builder)),
Fedora 39 ([Dockerfile.podvm_builder.fedora](./Dockerfile.podvm_builder)) and RHEL 9
([Dockerfile.podvm_builder.rhel](./Dockerfile.podvm_builder.rhel)).

You can create the builder image using the make target by running:
```bash
$ docker build -t podvm_builder \
-f Dockerfile.podvm_builder .
$ make -C .. podvm-builder
```

Use `--build-arg` to pass build arguments to docker to overwrite default values if needed. Following are the arguments
currently accepted:

| Argument | Default value | Description |
| ----------------- | ------------------------------------------------------------ | --------------------------------------------------------------- |
| GO\_VERSION | 1.22.7 | Go version |
| PROTOC\_VERSION | 3.15.0 | [Protobuf](https://github.com/protocolbuffers/protobuf) version |
| RUST\_VERSION | 1.75.0 | Rust version |
| YQ\_VERSION | v4.35.1 | [yq](https://github.com/mikefarah/yq/) version |

As it can be noted in the table above the cloud-api-adaptor repository is cloned within the builder image, so rather than
copying the local source tree, it will be using the upstream source. But if you want to test local changes then you should:
You can optionally customize the builder image, by specify shell variables to the `make` command:
| Variable | Default value | Description |
| ------------------- | -------------- | --------------------------------------------------------------- |
| `ARCH` | `amd64`/`s390x`| Architecture of the podvm image to be built. Defaults to the architecture the of the current machine |
| `PODVM_DISTRO` | `ubuntu` | Valid options are `ubuntu`, `fedora` and `rhel` |
| `ORG_ID` | `""` | rhel only: the organization ID for Red Hat Subscription Management (RHSM) |
| `ACTIVATION_KEY` | `""` | rhel only: the activation key for Red Hat Subscription Management (RHSM) |

* Push the changes to your fork in github (e.g. https://github.com/$USER/cloud-api-adaptor/tree/my-changes-in-a-branch).
* Overwrite the *CAA_SRC* and *CAA_SRC_REF* arguments as shown below:

```bash
$ docker build -t podvm_builder \
--build-arg CAA_SRC=https://github.com/$USER/cloud-api-adaptor \
--build-arg CAA_SRC_REF=my-changes-in-a-branch \
-f Dockerfile.podvm_builder .
e.g. to produce an s390x architecture builder image
```
ARCH=s390x make -C .. podvm-builder
```

## Building the image containing the podvm binaries

We have make targets handy for you. Make sure you are under the
`src/cloud-api-adaptor` folder.
Like the builder image, we have make targets for the binaries image in the parent directory.

> **Note:** The `BUILDER_IMG` environment variable is crucial as it specifies
> the builder image, which is the result of the previous step build. Ensure you
Expand All @@ -87,7 +77,7 @@ We have make targets handy for you. Make sure you are under the
To build the binaries image, use the following command:

```bash
$ BUILDER_IMG=<your_builder_image> make podvm-binaries
$ BUILDER_IMG=<your_builder_image> make -C .. podvm-binaries
```

The build process can take significant time.
Expand Down
Loading