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

chore: separate lam mod #874

Closed
wants to merge 4 commits into from
Closed
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
20 changes: 5 additions & 15 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
name: CI
on:
pull_request: {}
pull_request:
paths-ignore:
- 'lam/**'
push:
paths-ignore:
- 'lam/**'
branches:
- main
concurrency:
Expand Down Expand Up @@ -59,18 +63,6 @@ jobs:
- name: Setup Melange
uses: chainguard-dev/actions/setup-melange@main

- name: Build and push local-artifact-mirror image
run: |
export SHORT_SHA=dev-${GITHUB_SHA::7}
export LOCAL_ARTIFACT_MIRROR_IMAGE=replicated/embedded-cluster-local-artifact-mirror-staging
export REGISTRY=docker.io
export USERNAME=${{ secrets.DOCKERHUB_USER }}
export PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }}
make apko
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}"
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-previous-k0s"
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-upgrade"

- name: Build and push utils image
run: |
export SHORT_SHA=dev-${GITHUB_SHA::7}
Expand Down Expand Up @@ -118,7 +110,6 @@ jobs:
- name: Build Linux AMD64 and Output Metadata
run: |
export SHORT_SHA=dev-${GITHUB_SHA::7}
export LOCAL_ARTIFACT_MIRROR_IMAGE=replicated/embedded-cluster-local-artifact-mirror-staging
export EMBEDDED_OPERATOR_UTILS_IMAGE=replicated/embedded-cluster-utils-staging
make -B embedded-cluster-linux-amd64 K0S_VERSION=$(make print-PREVIOUS_K0S_VERSION) K0S_BINARY_SOURCE_OVERRIDE=$(make print-PREVIOUS_K0S_BINARY_SOURCE_OVERRIDE) VERSION="${SHORT_SHA}-previous-k0s"
tar -C output/bin -czvf embedded-cluster-linux-amd64-previous-k0s.tgz embedded-cluster
Expand Down Expand Up @@ -149,7 +140,6 @@ jobs:
- name: Build CI binary
run: |
export SHORT_SHA=dev-${GITHUB_SHA::7}
export LOCAL_ARTIFACT_MIRROR_IMAGE=replicated/embedded-cluster-local-artifact-mirror-staging
export EMBEDDED_OPERATOR_UTILS_IMAGE=replicated/embedded-cluster-utils-staging
echo "# channel release object" > e2e/kots-release-install/release.yaml
echo 'channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"' >> e2e/kots-release-install/release.yaml
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/image-scan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ on:
- cron: '0 0 * * *'
workflow_dispatch: {}
push:
# TODO: add this once we have all images in the metadata.yaml
# paths:
# - '**/metadata.yaml'
branches:
- main

Expand Down
61 changes: 61 additions & 0 deletions .github/workflows/lam.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Local artifact mirror

on:
pull_request:
paths:
- 'sdk/**'
- 'lam/**'
push:
tags:
- "lam/*.*.*"

permissions:
contents: write

jobs:
build-and-release:
runs-on: ubuntu-latest
defaults:
run:
working-directory: lam
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Cache Melange
uses: actions/cache@v4
with:
path: |
build/.melange-cache
key: melange-cache

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: lam/go.mod

- name: Setup Melange
uses: chainguard-dev/actions/setup-melange@main

- name: Build local-artifact-mirror binary
run: make bin/local-artifact-mirror

- name: Build local-artifact-mirror package
run: make melange-build-local-artifact-mirror

- name: Bundle repo
if: startsWith(github.ref, 'refs/tags/')
run: |
cd build
tar -czvf repo.tar.gz packages

- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
bin/local-artifact-mirror-*-*
build/melange.rsa.pub
build/repo.tar.gz
17 changes: 0 additions & 17 deletions .github/workflows/release-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,23 +38,6 @@ jobs:
- name: Setup Melange
uses: chainguard-dev/actions/setup-melange@main

- name: Build and push local-artifact-mirror image (production)
run: |
export REGISTRY=docker.io
export USERNAME=${{ secrets.DOCKERHUB_USER }}
export PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }}
make apko
make build-and-push-local-artifact-mirror-image VERSION=$TAG_NAME

- name: Build and push local-artifact-mirror image (staging)
run: |
export LOCAL_ARTIFACT_MIRROR_IMAGE=replicated/embedded-cluster-local-artifact-mirror-staging
export REGISTRY=docker.io
export USERNAME=${{ secrets.DOCKERHUB_USER }}
export PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }}
make apko
make build-and-push-local-artifact-mirror-image VERSION=$TAG_NAME

- name: Build and push utils image (production)
run: |
export REGISTRY=docker.io
Expand Down
132 changes: 13 additions & 119 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
SHELL := /bin/bash

include chainguard.mk

VERSION ?= $(shell git describe --tags --dirty)
UNAME := $(shell uname)
ARCH := $(shell uname -m)
Expand All @@ -20,15 +24,14 @@ PREVIOUS_K0S_BINARY_SOURCE_OVERRIDE =
TROUBLESHOOT_VERSION = v0.97.0
KOTS_VERSION = v$(shell awk '/^version/{print $$2}' pkg/addons/adminconsole/static/metadata.yaml | sed 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/')
KOTS_BINARY_URL_OVERRIDE =
LOCAL_ARTIFACT_MIRROR_IMAGE ?= replicated/embedded-cluster-local-artifact-mirror
LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION ?= $(subst +,-,$(VERSION))
LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION = proxy.replicated.com/anonymous/$(LOCAL_ARTIFACT_MIRROR_IMAGE):$(LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION)
# TODO: move this to a manifest file
LOCAL_ARTIFACT_MIRROR_IMAGE ?= proxy.replicated.com/anonymous/replicated/embedded-cluster-local-artifact-mirror:1.8.0-k8s-1.29-40-g380cf43-dirty@sha256:56c3acdc66404a419d6661328c618dfe8497f49383f05d61cf52ae6101ad7690
LD_FLAGS = \
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.K0sVersion=$(K0S_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.Version=$(VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.TroubleshootVersion=$(TROUBLESHOOT_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.KubectlVersion=$(KUBECTL_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.LocalArtifactMirrorImage=$(LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.K0sVersion=$(K0S_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.Version=$(VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.TroubleshootVersion=$(TROUBLESHOOT_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.KubectlVersion=$(KUBECTL_VERSION) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.LocalArtifactMirrorImage=$(LOCAL_ARTIFACT_MIRROR_IMAGE) \
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ChartRepoOverride=$(ADMIN_CONSOLE_CHART_REPO_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.KurlProxyImageOverride=$(ADMIN_CONSOLE_KURL_PROXY_IMAGE_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.KotsVersion=$(KOTS_VERSION) \
Expand Down Expand Up @@ -81,10 +84,8 @@ pkg/goods/bins/kubectl-preflight: Makefile

pkg/goods/bins/local-artifact-mirror: Makefile
mkdir -p pkg/goods/bins
go build \
-tags osusergo,netgo \
-ldflags="-s -w -extldflags=-static" \
-o pkg/goods/bins/local-artifact-mirror ./cmd/local-artifact-mirror
$(MAKE) -C lam bin/local-artifact-mirror
cp lam/bin/local-artifact-mirror-$(GOOS)-$(GOARCH) pkg/goods/bins/local-artifact-mirror

pkg/goods/internal/bins/kubectl-kots: Makefile
mkdir -p pkg/goods/internal/bins
Expand Down Expand Up @@ -199,79 +200,6 @@ build-and-push-utils-image: export PACKAGE_VERSION ?= $(EMBEDDED_OPERATOR_UTILS_
build-and-push-utils-image: export APKO_CONFIG = deploy/images/utils/apko.tmpl.yaml
build-and-push-utils-image: apko-login apko-build-and-publish

.PHONY: build-local-artifact-mirror-image
build-local-artifact-mirror-image: export IMAGE ?= $(LOCAL_ARTIFACT_MIRROR_IMAGE):$(LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION)
build-local-artifact-mirror-image: export PACKAGE_VERSION ?= $(LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION)
build-local-artifact-mirror-image: export MELANGE_CONFIG = deploy/packages/local-artifact-mirror/melange.tmpl.yaml
build-local-artifact-mirror-image: export APKO_CONFIG = deploy/images/local-artifact-mirror/apko.tmpl.yaml
build-local-artifact-mirror-image: melange-build apko-build

.PHONY: build-and-push-local-artifact-mirror-image
build-and-push-local-artifact-mirror-image: export IMAGE ?= $(LOCAL_ARTIFACT_MIRROR_IMAGE):$(LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION)
build-and-push-local-artifact-mirror-image: export PACKAGE_VERSION ?= $(LOCAL_ARTIFACT_MIRROR_IMAGE_VERSION)
build-and-push-local-artifact-mirror-image: export MELANGE_CONFIG = deploy/packages/local-artifact-mirror/melange.tmpl.yaml
build-and-push-local-artifact-mirror-image: export APKO_CONFIG = deploy/images/local-artifact-mirror/apko.tmpl.yaml
build-and-push-local-artifact-mirror-image: melange-build apko-login apko-build-and-publish

CHAINGUARD_TOOLS_USE_DOCKER = 0
ifeq ($(CHAINGUARD_TOOLS_USE_DOCKER),"1")
MELANGE_CACHE_DIR ?= /go/pkg/mod
APKO_CMD = docker run -v $(shell pwd):/work -w /work -v $(shell pwd)/build/.docker:/root/.docker cgr.dev/chainguard/apko
MELANGE_CMD = docker run --privileged --rm -v $(shell pwd):/work -w /work -v "$(shell go env GOMODCACHE)":${MELANGE_CACHE_DIR} cgr.dev/chainguard/melange
else
MELANGE_CACHE_DIR ?= build/.melange-cache
APKO_CMD = apko
MELANGE_CMD = melange
endif

$(MELANGE_CACHE_DIR):
mkdir -p $(MELANGE_CACHE_DIR)

.PHONY: apko-build
apko-build: export ARCHS ?= amd64
apko-build: check-env-IMAGE apko-template
cd build && ${APKO_CMD} \
build apko.yaml ${IMAGE} apko.tar \
--arch ${ARCHS}

.PHONY: apko-build-and-publish
apko-build-and-publish: export ARCHS ?= amd64
apko-build-and-publish: check-env-IMAGE apko-template
cd build && ${APKO_CMD} \
publish apko.yaml ${IMAGE} \
--arch ${ARCHS} | tee digest

.PHONY: apko-login
apko-login:
rm -f build/.docker/config.json
@ { [ "${PASSWORD}" = "" ] || [ "${USERNAME}" = "" ] ; } || \
${APKO_CMD} \
login -u "${USERNAME}" \
--password "${PASSWORD}" "${REGISTRY}"

.PHONY: melange-build
melange-build: export ARCHS ?= amd64
melange-build: $(MELANGE_CACHE_DIR) melange-template
${MELANGE_CMD} \
keygen build/melange.rsa
${MELANGE_CMD} \
build build/melange.yaml \
--arch ${ARCHS} \
--signing-key build/melange.rsa \
--cache-dir=$(MELANGE_CACHE_DIR) \
--source-dir . \
--out-dir build/packages/

.PHONY: melange-template
melange-template: check-env-MELANGE_CONFIG check-env-PACKAGE_VERSION
mkdir -p build
envsubst '$${PACKAGE_VERSION}' < ${MELANGE_CONFIG} > build/melange.yaml

.PHONY: apko-template
apko-template: check-env-APKO_CONFIG check-env-PACKAGE_VERSION
mkdir -p build
envsubst '$${PACKAGE_NAME} $${PACKAGE_VERSION} $${UPSTREAM_VERSION}' < ${APKO_CONFIG} > build/apko.yaml

.PHONY: buildtools
buildtools:
mkdir -p pkg/goods/bins pkg/goods/internal/bins
Expand All @@ -283,39 +211,5 @@ cache-files: export EMBEDDED_OPERATOR_BINARY_URL_OVERRIDE
cache-files:
./scripts/cache-files.sh

## Location to install dependencies to
LOCALBIN ?= $(shell pwd)/bin
$(LOCALBIN):
mkdir -p $(LOCALBIN)

## Tool Binaries
MELANGE ?= $(LOCALBIN)/melange
APKO ?= $(LOCALBIN)/apko

# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif

melange: $(MELANGE)
$(MELANGE): $(LOCALBIN)
go install chainguard.dev/melange@latest && \
test -s $(GOBIN)/melange && \
ln -sf $(GOBIN)/melange $(LOCALBIN)/melange

apko: $(APKO)
$(APKO): $(LOCALBIN)
go install chainguard.dev/apko@latest && \
test -s $(GOBIN)/apko && \
ln -sf $(GOBIN)/apko $(LOCALBIN)/apko

print-%:
@echo -n $($*)

check-env-%:
@ if [ "${${*}}" = "" ]; then \
echo "Environment variable $* not set"; \
exit 1; \
fi
Loading
Loading