Skip to content

update (#606)

update (#606) #192

Workflow file for this run

name: Push
on:
push:
branches:
- master
paths-ignore:
- '*.md'
- 'docs/'
- 'examples/'
- 'hack/'
- 'config/'
env:
DOCKER_FILE_PATH: Dockerfile
BUNDLE_DOCKER_FILE_PATH: bundle.Dockerfile
GOLANG_VERSION: 1.21
OPERATOR_SDK_VERSION: "1.19.0"
KUSTOMIZE_VERSION: "4.5.7"
KUBERNETES_VERSION: "1.23.5"
KIND_VERSION: "v0.17.0"
HELM_REGISTRY_URL: "https://stakater.github.io/stakater-charts"
HELM_VERSION: v3.8.2
REGISTRY: ghcr.io
jobs:
build:
name: Build
if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}
- name: Lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.54
only-new-issues: false
args: --timeout 10m
# Set up helm binary
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: ${{ env.HELM_VERSION }}
- name: Helm Lint
run: |
helm lint charts/ingressmonitorcontroller
- name: Install kind
uses: engineerd/[email protected]
with:
version: ${{ env.KIND_VERSION }}
- name: Check cluster info
run: |
kubectl version --client
kind version
kind version | grep -q ${KIND_VERSION}
- name: Set up Cluster
run: |
kubectl cluster-info
make install
mkdir -p .local
echo "${{ secrets.SECRET_KUBERNETES_RESOURCES }}" | base64 --decode > .local/test-config.yaml
- name: Test
run: make test
- name: Generate Tag
id: generate_tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: true
DEFAULT_BUMP: patch
DRY_RUN: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
buildkitd-flags: --debug
- name: Login to ghcr registry
uses: docker/login-action@v3
with:
registry: ${{env.REGISTRY}}
username: stakater-user
password: ${{secrets.GITHUB_TOKEN}}
- name: Generate image repository path for ghcr registry
run: |
echo GHCR_IMAGE_REPOSITORY=${{env.REGISTRY}}/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Build and Push image to ghcr registry
uses: docker/build-push-action@v5
with:
context: .
file: ${{ env.DOCKER_FILE_PATH }}
pull: true
push: true
cache-to: type=inline
cache-from: type=gha
build-args: BUILD_PARAMETERS=${{ env.BUILD_PARAMETERS }}
platforms: linux/amd64,linux/arm,linux/arm64
tags: |
${{ env.GHCR_IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.new_tag }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
- name: Login to Dockerhub Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.STAKATER_DOCKERHUB_USERNAME }}
password: ${{ secrets.STAKATER_DOCKERHUB_PASSWORD }}
- name: Generate image repository path for DockerHub registry
run: |
echo IMAGE_REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Build and push image to DockerHub registry
uses: docker/build-push-action@v5
with:
context: .
file: ${{ env.DOCKER_FILE_PATH }}
pull: true
push: true
build-args: BUILD_PARAMETERS=${{ env.BUILD_PARAMETERS }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm,linux/arm64
tags: |
${{ env.IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.new_tag }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
##############################
## Add steps to generate required artifacts for a release here(helm chart, operator manifest etc.)
##############################
# Generate tag for operator without "v"
- name: Generate Operator Tag
id: generate_operator_tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
WITH_V: false
DEFAULT_BUMP: patch
DRY_RUN: true
# Install operator-sdk
- name: Install operator-sdk
uses: redhat-actions/openshift-tools-installer@v1
with:
source: "github"
operator-sdk: ${{ env.OPERATOR_SDK_VERSION }}
# Install kustomize
- name: Install kustomize
uses: imranismail/setup-kustomize@v2
with:
kustomize-version: ${{ env.KUSTOMIZE_VERSION }}
- name: Generate Bundle
env:
VERSION: ${{ steps.generate_operator_tag.outputs.new_tag }}
IMG: ${{ env.IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.new_tag }}
run: make bundle
- name: Verify bundle
run: operator-sdk bundle validate ./bundle --select-optional name=operatorhub
- name: Build and push Bundle Image
uses: docker/build-push-action@v5
with:
context: .
file: ${{ env.BUNDLE_DOCKER_FILE_PATH }}
pull: true
push: true
cache-to: type=inline
tags: |
${{ env.IMAGE_REPOSITORY }}-bundle:${{ steps.generate_tag.outputs.new_tag }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
# Update chart tag to the latest semver tag
- name: Update Chart Version
env:
VERSION: ${{ steps.generate_operator_tag.outputs.new_tag }}
run: make bump-chart
- name: Update Chart CRDs
run: make generate-crds
# Publish helm chart
- name: Publish Helm chart
uses: stefanprodan/helm-gh-pages@master
with:
branch: master
repository: stakater-charts
target_dir: docs
token: ${{ secrets.GHCR_TOKEN }}
charts_dir: charts/
charts_url: ${{ env.HELM_REGISTRY_URL }}
owner: stakater
linting: on
commit_username: stakater-user
commit_email: [email protected]
# Commit back changes
- name: Commit files
run: |
git config --local user.email "[email protected]"
git config --local user.name "stakater-user"
git status
git add .
git commit -m "[skip-ci] Update artifacts" -a
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.PUBLISH_TOKEN }}
# Push Latest Tag
- name: Push Latest Tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
WITH_V: true
DEFAULT_BUMP: patch
- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always() # Pick up events even if the job fails or is canceled.
with:
status: ${{ job.status }}
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}