Run the release workflow on PR's activity. #30
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and publish release containers to quay.io | |
# | |
# This workflow creates the container images for OLM-based operator installation. | |
# It's triggered on every new release, and on PR's activity. It can also be triggered manually. | |
# | |
# The concurrency safeguard has been added to avoid concurrent PRs' workflows to push images | |
# at the same time, which would possibly result on some images from one PR and others | |
# from another to be pushed under the same version. | |
# | |
concurrency: | |
group: ${{ github.workflow }} | |
on: | |
release: | |
types: [published] | |
pull_request: | |
branches: [ main ] | |
# Manual dispatch: requires version string from github's GUI. | |
workflow_dispatch: | |
inputs: | |
version: | |
type: string | |
description: 'Version (Semating Versioning) for the new release. E.g: 0.0.1' | |
required: true | |
default: '0.0.1' | |
env: | |
REGISTRY: quay.io | |
REGISTRY_USER: testnetworkfunction | |
REPO_BASE_NAME: cnf-certsuite-operator | |
TERM: xterm-color | |
jobs: | |
publish_new_version: | |
name: Build and publish release containers to quay.io | |
runs-on: ubuntu-22.04 | |
env: | |
SHELL: /bin/bash | |
steps: | |
- name: Set release version output var depending on the trigger type. | |
run: | | |
if [ ${GITHUB_EVENT_NAME} == "workflow_dispatch" ]; then | |
VERSION=${{ inputs.version }} | |
echo "Manually triggered workflow to make release ${VERSION}" | |
elif [ ${GITHUB_EVENT_NAME} == "pull_request" ]; then | |
VERSION=0.0.1-pullrequestcheck | |
echo "Workflow triggered by a pull request to make fake release ${VERSION}" | |
else | |
VERSION=${{ github.ref_name }} | |
echo "New release published: ${VERSION}" | |
fi | |
REPO=${REGISTRY}/${REGISTRY_USER}/${REPO_BASE_NAME} | |
echo "VERSION=${VERSION}" >> ${GITHUB_ENV} | |
echo "IMG=${REPO}:v${VERSION}" >> ${GITHUB_ENV} | |
echo "SIDECAR_IMG=${REPO}-sidecar:v${VERSION}" >> ${GITHUB_ENV} | |
echo "BUNDLE_IMG=${REPO}-bundle:v${VERSION}" >> ${GITHUB_ENV} | |
echo "CATALOG_IMG=${REPO}-catalog:v${VERSION}" >> ${GITHUB_ENV} | |
- name: Print release images versions | |
run: | | |
echo "Release version to build: ${VERSION}" | |
echo " - Controller : ${IMG}" | |
echo " - Sidecar : ${SIDECAR_IMG}" | |
echo " - Bundle : ${BUNDLE_IMG}" | |
echo " - Catalog : ${CATALOG_IMG}" | |
- name: Authenticate against Quay.io | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.QUAY_ROBOT_USERNAME }} | |
password: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
- name: Set up Go 1.22 | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.5 | |
- name: Disable default go problem matcher | |
run: echo "::remove-matcher owner=go::" | |
- name: Download operator-sdk | |
env: | |
OPERATOR_SDK_BIN: operator-sdk_linux_amd64 | |
OPERATOR_SDK_DL_URL: https://github.com/operator-framework/operator-sdk/releases/download/v1.34.2 | |
OPERATOR_SDK_DEST_FOLDER: /usr/local/bin | |
run: | | |
curl --location --remote-name ${OPERATOR_SDK_DL_URL}/${OPERATOR_SDK_BIN} | |
chmod +x ${OPERATOR_SDK_BIN} | |
sudo mv ${OPERATOR_SDK_BIN} ${OPERATOR_SDK_DEST_FOLDER}/operator-sdk | |
operator-sdk version | |
- name: Check out the repo. | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref_name }} | |
- name: Build and push sidecar app image | |
run: docker build --no-cache -t "${SIDECAR_IMG}" -f cnf-cert-sidecar/Dockerfile . && docker push ${SIDECAR_IMG} | |
- name: Build and push controller image | |
run: make docker-build docker-push | |
- name: Build and push bundle image | |
run: | | |
rm bundle/manifests/* || true | |
make bundle | |
make bundle-build bundle-push | |
- name: Build and push catalog image | |
run: make catalog-build catalog-push | |