diff --git a/.github/workflows/build-images.yaml b/.github/workflows/build-images.yaml new file mode 100644 index 00000000..ddd9c114 --- /dev/null +++ b/.github/workflows/build-images.yaml @@ -0,0 +1,137 @@ +name: Build Images + +on: + push: + branches: [ '*' ] + tags: [ '*' ] + +env: + IMG_TAGS: ${{ github.ref_name }} + IMG_REGISTRY_HOST: quay.io + IMG_REGISTRY_ORG: kuadrant + MAIN_BRANCH_NAME: main + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Add latest tag + if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} + id: add-latest-tag + run: | + echo "IMG_TAGS=latest ${{ env.IMG_TAGS }}" >> $GITHUB_ENV + - name: Build Image + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: limitador-operator + tags: ${{ env.IMG_TAGS }} + dockerfiles: | + ./Dockerfile + - name: Push Image + if: ${{ !env.ACT }} + id: push-to-quay + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }} + username: ${{ secrets.IMG_REGISTRY_USERNAME }} + password: ${{ secrets.IMG_REGISTRY_TOKEN }} + - name: Print Image URL + run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}" + + build-bundle: + needs: build + name: Build Bundle + runs-on: ubuntu-latest + steps: + - name: Set up Go 1.16.x + uses: actions/setup-go@v2 + with: + go-version: 1.16.x + id: go + - name: Check out code + uses: actions/checkout@v2 + - name: Add latest tag + if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} + id: add-latest-tag + run: | + echo "IMG_TAGS=latest ${{ env.IMG_TAGS }}" >> $GITHUB_ENV + - name: Run make bundle + if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} + run: make bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=${{ github.ref_name }} + - name: Run make bundle (main) + if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} + run: make bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=latest VERSION=0.0.0 + - name: Git diff + run: git diff + - name: Build Image + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: limitador-operator-bundle + tags: ${{ env.IMG_TAGS }} + dockerfiles: | + ./bundle.Dockerfile + - name: Push Image + if: ${{ !env.ACT }} + id: push-to-quay + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }} + username: ${{ secrets.IMG_REGISTRY_USERNAME }} + password: ${{ secrets.IMG_REGISTRY_TOKEN }} + - name: Print Image URL + run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}" + + build-catalog: + name: Build Catalog + needs: [build, build-bundle] + runs-on: ubuntu-latest + steps: + - name: Set up Go 1.16.x + uses: actions/setup-go@v2 + with: + go-version: 1.16.x + id: go + - name: Check out code + uses: actions/checkout@v2 + - name: Add latest tag + if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} + id: add-latest-tag + run: | + echo "IMG_TAGS=latest ${{ env.IMG_TAGS }}" >> $GITHUB_ENV + - name: Run make catalog-generate + if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} + run: make catalog-generate REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=${{ github.ref_name }} + - name: Run make catalog-generate (main) + if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} + run: make catalog-generate REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=latest VERSION=0.0.0 + - name: Git diff + run: git diff + - name: Build Image + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: limitador-operator-catalog + tags: ${{ env.IMG_TAGS }} + dockerfiles: | + ./index.Dockerfile + - name: Push Image + if: ${{ !env.ACT }} + id: push-to-quay + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }} + username: ${{ secrets.IMG_REGISTRY_USERNAME }} + password: ${{ secrets.IMG_REGISTRY_TOKEN }} + - name: Print Image URL + run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}" diff --git a/Makefile b/Makefile index b46093ff..840ad115 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # To re-generate a bundle for another specific version without changing the standard setup, you can: # - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2) # - use environment variables to overwrite this value (e.g export VERSION=0.0.2) -VERSION ?= 0.0.1 +VERSION ?= 0.0.0 # CHANNELS define the bundle channels used in the bundle. # Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable") @@ -37,12 +37,18 @@ ORG ?= kuadrant # quay.io/kuadrant/limitador-operator-bundle:$VERSION and quay.io/kuadrant/limitador-operator-catalog:$VERSION. IMAGE_TAG_BASE ?= $(REGISTRY)/$(ORG)/limitador-operator +ifeq (0.0.0,$(VERSION)) +IMAGE_TAG ?= latest +else +IMAGE_TAG ?= v$(VERSION) +endif + # BUNDLE_IMG defines the image:tag used for the bundle. # You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=/:) -BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) +BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:$(IMAGE_TAG) # Image URL to use all building/pushing image targets -DEFAULT_IMG ?= $(IMAGE_TAG_BASE):latest +DEFAULT_IMG ?= $(IMAGE_TAG_BASE):$(IMAGE_TAG) IMG ?= $(DEFAULT_IMG) # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. ENVTEST_K8S_VERSION = 1.22 @@ -210,7 +216,7 @@ endif BUNDLE_IMGS ?= $(BUNDLE_IMG) # The image tag given to the resulting catalog image (e.g. make catalog-build CATALOG_IMG=example.com/operator-catalog:v0.2.0). -CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:v$(VERSION) +CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:$(IMAGE_TAG) # Set CATALOG_BASE_IMG to an existing catalog image tag to add $BUNDLE_IMGS to that image. ifneq ($(origin CATALOG_BASE_IMG), undefined) @@ -224,6 +230,10 @@ endif catalog-build: opm ## Build a catalog image. $(OPM) index add --container-tool docker --mode semver --tag $(CATALOG_IMG) --bundles $(BUNDLE_IMGS) $(FROM_INDEX_OPT) +.PHONY: catalog-generate +catalog-generate: opm ## Generate a catalog/index Dockerfile. + $(OPM) index add --generate --container-tool docker --mode semver --tag $(CATALOG_IMG) --bundles $(BUNDLE_IMGS) $(FROM_INDEX_OPT) + # Push the catalog image. .PHONY: catalog-push catalog-push: ## Push a catalog image. diff --git a/bundle/manifests/limitador-operator.clusterserviceversion.yaml b/bundle/manifests/limitador-operator.clusterserviceversion.yaml index 456f0f36..4949240b 100644 --- a/bundle/manifests/limitador-operator.clusterserviceversion.yaml +++ b/bundle/manifests/limitador-operator.clusterserviceversion.yaml @@ -37,7 +37,7 @@ metadata: capabilities: Basic Install operators.operatorframework.io/builder: operator-sdk-v1.14.0+git operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 - name: limitador-operator.v0.0.1 + name: limitador-operator.v0.0.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -251,4 +251,4 @@ spec: provider: name: Red Hat url: https://github.com/Kuadrant/limitador-operator - version: 0.0.1 + version: 0.0.0