Skip to content

Commit

Permalink
Added github workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
bnallapeta committed Oct 17, 2023
1 parent 55edce1 commit 57ac5a7
Show file tree
Hide file tree
Showing 3 changed files with 297 additions and 0 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/operator_hub_push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: OperatorHub Certification

on:
push:
tags:
- "v*"

jobs:
publish-mto-to-operator-hub:
name: publish-gco-to-operator-hub
uses: stakater/.github/.github/workflows/[email protected]
secrets:
REGISTRY_REDHAT_IO_PULL_SECRET: ${{ secrets.REGISTRY_REDHAT_IO_PULL_SECRET }}
STAKATER_NEXUS_REGISTRY: ghcr.io/stakater
STAKATER_NEXUS_USERNAME: ${{ secrets.GHCR_USERNAME }}
STAKATER_NEXUS_PASSWORD: ${{ secrets.GHCR_TOKEN }}
OPERATORHUB_USERNAME: ${{ secrets.OPERATOR_HUB_USERNAME }}
OPERATORHUB_PASSWORD: ${{ secrets.OPERATOR_HUB_PASSWORD }}
OPERATORHUB_REPOSITORY: ${{ secrets.OPERATOR_HUB_REPOSITORY }}
PYXIS_API_TOKEN: ${{ secrets.PYXIS_API_TOKEN }}
STAKATER_GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_HELM_REGISTRY }}
ADMIN_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
STAKATER_DELIVERY_SLACK_WEBHOOK: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}
with:
CERTIFICATION_PROJECT_ID: ospid-61b613641f6ce30c05d01c1a
DOCKER_FILE_PATH: Dockerfile.operatorhub
PUBLISH_BUNDLE: true
SUBPATH: .
100 changes: 100 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Pull Request

on:
pull_request:
branches:
- main

jobs:
operator-pull-request:
name: Operator Pull Request
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0

# Run Tests
# - name: Test
# env:
# SKIP_INTEGRATION_TEST: "true"
# run: make test

- name: Generate Tag
id: generate_tag
run: |
sha=${{ github.event.pull_request.head.sha }}
tag="snapshot-pr-${{ github.event.pull_request.number }}-${sha:0:8}"
echo "GIT_TAG=$(echo ${tag})" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v2
with:
registry: ghcr.io/stakater
username: ${{ secrets.GHCR_USERNAME }}
password: ${{ secrets.GHCR_TOKEN }}

- name: Generate image repository path
run: |
echo IMAGE_REPOSITORY=$(echo ghcr.io/stakater/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Build and Push
uses: docker/build-push-action@v4
id: build_and_push
with:
context: .
file: Dockerfile
push: true
cache-to: type=inline
tags: |
${{ env.IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.GIT_TAG }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.revision=${{ github.sha }}
# Build custom catalog for e2e tests
- name: Generate Tag
id: generate_tag_for_catalog
run: |
sha=${{ github.event.pull_request.head.sha }}
tag="${sha:0:8}"
echo "GIT_TAG=$(echo ${tag})" >> $GITHUB_OUTPUT
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
source: "github"
operator-sdk: "v1.31.0"

- name: Build & Push Bundle and Catalog
run: make bundle bundle-build bundle-push catalog-build catalog-push
env:
IMAGE_DIGEST: ${{ steps.build_and_push.outputs.digest }}
PR_TAG: -${{ steps.generate_tag_for_catalog.outputs.GIT_TAG }}

- name: Comment on PR
uses: mshick/add-pr-comment@v2
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message-success: "@${{ github.actor }} Image is available for testing. `docker pull ${{ env.IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.GIT_TAG}}`"
message-failure: '@${{ github.actor }} Yikes! You better fix it before anyone else finds out! [Build](https://github.com/${{ github.repository }}/commit/${{ github.event.pull_request.head.sha }}/checks) has Failed!'
allow-repeats: true

- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always()
with:
status: ${{ job.status }}
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}
169 changes: 169 additions & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
name: Push

on:
push:
branches:
- main

jobs:
push-operator:
name: Push Operator
if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')"
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0
persist-credentials: false

# Run Tests
# - name: Test
# env:
# SKIP_INTEGRATION_TEST: "true"
# run: make test

- name: Generate Tag
id: generate_tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: false
DEFAULT_BUMP: patch
RELEASE_BRANCHES: main
DRY_RUN: true

- name: Generate image repository path
run: |
echo IMAGE_REPOSITORY=$(echo ghcr.io/stakater/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io/stakater
username: ${{ secrets.GHCR_USERNAME }}
password: ${{ secrets.GHCR_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v4
id: build_and_push
with:
context: .
file: Dockerfile
pull: true
push: true
cache-to: type=inline
tags: |
${{ env.IMAGE_REPOSITORY }}:v${{ steps.generate_tag.outputs.new_tag }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.revision=${{ github.sha }}
# Build custom catalog for e2e tests
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
source: "github"
operator-sdk: "v1.31.0"

- name: Build and Push Bundle and Catalog
run: make bundle bundle-build bundle-push catalog-build catalog-push
env:
IMAGE_DIGEST: ${{ steps.build_and_push.outputs.digest }}
VERSION: ${{ steps.generate_tag.outputs.new_tag }}

outputs:
image_repository: ${{ env.IMAGE_REPOSITORY }}
version: ${{ steps.generate_tag.outputs.new_tag }}

notify-success:
name: Notify Success
runs-on: ubuntu-latest
if: always() && (needs.push-operator.result == 'success' && needs.operator-e2e-test.result == 'success')
needs:
- push-operator

steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0
persist-credentials: false

- name: Update Chart CRDs
run: make generate-crds

# Commit back changes
- name: Commit files
run: |
git config --local user.email "[email protected]"
git config --local user.name "stakater-github-root"
git status
git add .
git reset bundle/
git commit -m "[skip-ci] Update artifacts" -a
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.STAKATER_GITHUB_TOKEN }}
branch: main

- name: Push Latest Tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
WITH_V: true
RELEASE_BRANCHES: main
DEFAULT_BUMP: patch

- name: Comment on PR
uses: mshick/add-pr-comment@v2
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message-success: "@${{ github.actor }} Image is available for testing. `docker pull ${{ needs.push-operator.outputs.image_repository }}:v${{ needs.push-operator.outputs.version }}`"
message-failure: '@${{ github.actor }} Yikes! You better fix it before anyone else finds out! [Build](https://github.com/${{ github.repository }}/commit/${{ github.event.pull_request.head.sha }}/checks) has Failed!'
allow-repeats: true

- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always()
with:
status: success
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}

notify-failure:
name: Notify Failure
runs-on: ubuntu-latest
if: always() && (needs.push-operator.result != 'success' || needs.operator-e2e-test.result != 'success')
needs:
- push-operator

steps:
- name: Comment on PR
uses: mshick/add-pr-comment@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message: '@${{ github.actor }} Yikes! You better fix it before anyone else finds out! [Build](https://github.com/${{ github.repository }}/commit/${{ github.event.pull_request.head.sha }}/checks) has Failed!'
allow-repeats: true

- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always() && (needs.push-operator.result != 'success') || (needs.operator-e2e-test.result != 'success')
with:
status: failure
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}

0 comments on commit 57ac5a7

Please sign in to comment.