Skip to content

Commit

Permalink
Adds other versions of Velero
Browse files Browse the repository at this point in the history
Added support for 1.12.1 and 1.9.5. Added rockcraft.yaml files
based on their Dockerfiles.
  • Loading branch information
claudiubelu committed Jul 16, 2024
1 parent 9a1e444 commit bc5f1d2
Show file tree
Hide file tree
Showing 5 changed files with 172 additions and 5 deletions.
16 changes: 11 additions & 5 deletions tests/sanity/test_velero.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,17 @@ def test_velero_rock():
expected_err = "error finding Kubernetes API server config in --kubeconfig"
assert expected_err in process.stderr

# check helper binary.
process = utils.run_in_docker(image, False, "/velero-helper")
expected_err = "at least one argument must be provided, the working mode"
assert expected_err in process.stderr
velero_version = utils.get_image_version(image)
if velero_version != "1.9.5":
# check helper binary.
process = utils.run_in_docker(image, False, "/velero-helper")
expected_err = "at least one argument must be provided, the working mode"
assert expected_err in process.stderr

# check restic and its version.
restic_version = "0.15.0"
if velero_version == "1.9.5":
restic_version = "0.14.0"

process = utils.run_in_docker(image, True, "restic", "version")
assert "restic" in process.stdout and "0.15.0" in process.stdout
assert "restic" in process.stdout and restic_version in process.stdout
17 changes: 17 additions & 0 deletions tests/sanity/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,20 @@ def run_in_docker(image, check_exit_code, *command):
capture_output=True,
text=True,
)


def get_image_version(image):
# check binary name and version.
process = subprocess.run(
[
"docker",
"inspect",
"--format",
'{{index .Config.Labels "org.opencontainers.image.version"}}',
image,
],
check=True,
capture_output=True,
text=True,
)
return process.stdout.strip()
73 changes: 73 additions & 0 deletions velero/1.12.1/rockcraft.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Dockerfile: https://github.com/vmware-tanzu/velero/blob/v1.12.1/Dockerfile
name: velero
summary: Velero rock
description: |
A rock containing Velero. Velero gives you tools to back up and restore
your Kubernetes cluster resources and persistent volumes.
license: Apache-2.0
version: 1.12.1

base: bare
build-base: ubuntu@22.04
run-user: _daemon_

platforms:
amd64:
arm64:

environment:
APP_VERSION: 1.12.1
RESTIC_VERSION: 0.15.0

parts:
add-base-files:
plugin: nil
stage-packages:
- base-files

build-velero-binary:
plugin: go
source: https://github.com/vmware-tanzu/velero.git
source-type: git
source-tag: v${CRAFT_PROJECT_VERSION}
source-depth: 1
build-snaps:
- go/1.20/stable
build-environment:
- CGO_ENABLED: 0
- GO111MODULE: "on"
- GOOS: linux
- GOARCH: $CRAFT_ARCH_BUILD_FOR
- GOPROXY: https://proxy.golang.org
- VERSION: $CRAFT_PROJECT_VERSION
- PKG: github.com/vmware-tanzu/velero
- REGISTRY: canonical
- LDFLAGS: >
-X ${PKG}/pkg/buildinfo.Version=${VERSION} -X ${PKG}/pkg/buildinfo.ImageRegistry=${REGISTRY}
go-generate:
- ./cmd/velero
- ./cmd/velero-helper
organize:
bin/velero: ./
bin/velero-helper: ./

build-restic-binary:
plugin: nil
source: https://github.com/restic/restic.git
source-type: git
source-tag: v0.15.0
source-depth: 1
build-snaps:
- go/1.21/stable
build-environment:
- CGO_ENABLED: 0
- GO111MODULE: "on"
- GOOS: linux
- GOARCH: $CRAFT_ARCH_BUILD_FOR
- GOPROXY: https://proxy.golang.org
- RESTIC_CVE_PATCH: https://raw.githubusercontent.com/vmware-tanzu/velero/v${CRAFT_PROJECT_VERSION}/hack/fix_restic_cve.txt
override-build: |
set -x
curl "${RESTIC_CVE_PATCH}" | git apply -
go run build.go --goos "${GOOS}" --goarch "${GOARCH}" -o "${CRAFT_PART_INSTALL}/usr/bin/restic"
chmod +x "${CRAFT_PART_INSTALL}/usr/bin/restic"
File renamed without changes.
71 changes: 71 additions & 0 deletions velero/1.9.5/rockcraft.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Dockerfile: https://github.com/vmware-tanzu/velero/blob/v1.9.5/Dockerfile
name: velero
summary: Velero rock
description: |
A rock containing Velero. Velero gives you tools to back up and restore
your Kubernetes cluster resources and persistent volumes.
license: Apache-2.0
version: 1.9.5

base: bare
build-base: ubuntu@22.04
run-user: _daemon_

platforms:
amd64:
arm64:

environment:
APP_VERSION: 1.9.5
RESTIC_VERSION: 0.14.0

parts:
add-base-files:
plugin: nil
stage-packages:
- base-files

build-velero-binary:
plugin: go
source: https://github.com/vmware-tanzu/velero.git
source-type: git
source-tag: v${CRAFT_PROJECT_VERSION}
source-depth: 1
build-snaps:
- go/1.18/stable
build-environment:
- CGO_ENABLED: 0
- GO111MODULE: "on"
- GOOS: linux
- GOARCH: $CRAFT_ARCH_BUILD_FOR
- GOPROXY: https://proxy.golang.org
- VERSION: $CRAFT_PROJECT_VERSION
- PKG: github.com/vmware-tanzu/velero
- REGISTRY: canonical
- LDFLAGS: >
-X ${PKG}/pkg/buildinfo.Version=${VERSION} -X ${PKG}/pkg/buildinfo.ImageRegistry=${REGISTRY}
go-generate:
- ./cmd/velero
organize:
bin/velero: ./

build-restic-binary:
plugin: nil
source: https://github.com/restic/restic.git
source-type: git
source-tag: v0.14.0
source-depth: 1
build-snaps:
- go/1.19/stable
build-environment:
- CGO_ENABLED: 0
- GO111MODULE: "on"
- GOOS: linux
- GOARCH: $CRAFT_ARCH_BUILD_FOR
- GOPROXY: https://proxy.golang.org
- RESTIC_CVE_PATCH: https://raw.githubusercontent.com/vmware-tanzu/velero/v${CRAFT_PROJECT_VERSION}/hack/modify_acces_denied_code.txt
override-build: |
set -x
curl "${RESTIC_CVE_PATCH}" | git apply -
go run build.go --goos "${GOOS}" --goarch "${GOARCH}" -o "${CRAFT_PART_INSTALL}/usr/bin/restic"
chmod +x "${CRAFT_PART_INSTALL}/usr/bin/restic"

0 comments on commit bc5f1d2

Please sign in to comment.