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

Test/foo #759

Closed
wants to merge 3 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
106 changes: 106 additions & 0 deletions .github/workflows/fork-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Fork Docker CI

# on:
# push:
# branches:
# - network-operator-*
# tags:
# - network-operator-*

jobs:
determine_docker_registry_and_tag:
runs-on: ubuntu-latest
env:
REGISTRY_INTERNAL: nvcr.io/nvstaging/mellanox
REGISTRY_PUBLIC: nvcr.io/nvidia/cloud-native
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: .
- if: github.ref_type == 'branch'
name: Determine docker registry and tag (when git branch)
run: |
echo DOCKER_REGISTRY=$REGISTRY_INTERNAL >> $GITHUB_ENV
echo DOCKER_TAG=$(git rev-parse --short HEAD) >> $GITHUB_ENV # short git commit hash
- if: github.ref_type == 'tag'
name: Determine docker registry and tag (when git tag)
run: |
echo DOCKER_REGISTRY=$(echo ${{ github.ref_name }} | sed 's/network-operator-//' | grep -q '-' && echo $REGISTRY_INTERNAL || echo $REGISTRY_PUBLIC) >> $GITHUB_ENV # use public registry only when release tag has no '-beta*' or '-rc*' suffix
echo DOCKER_TAG=${{ github.ref_name }} >> $GITHUB_ENV
- name: Store docker registry and tag for following jobs
id: store-docker-registry-and-tag
run: |
echo DOCKER_REGISTRY=$DOCKER_REGISTRY >> $GITHUB_OUTPUT
echo DOCKER_TAG=$DOCKER_TAG >> $GITHUB_OUTPUT
outputs:
docker_registry: ${{ steps.store-docker-registry-and-tag.outputs.DOCKER_REGISTRY }}
docker_tag: ${{ steps.store-docker-registry-and-tag.outputs.DOCKER_TAG }}

build_and_push_images:
needs: determine_docker_registry_and_tag
runs-on: ubuntu-latest
env:
BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le
DOCKER_REGISTRY: ${{ needs.determine_docker_registry_and_tag.outputs.docker_registry }}
DOCKER_TAG: ${{ needs.determine_docker_registry_and_tag.outputs.docker_tag }}
strategy:
matrix:
include:
- component: operator
image_name: ${{ github.event.repository.name }}
dockerfile: Dockerfile
- component: config-daemon
image_name: ${{ github.event.repository.name }}-config-daemon
dockerfile: Dockerfile.sriov-network-config-daemon
- component: webhook
image_name: ${{ github.event.repository.name }}-webhook
dockerfile: Dockerfile.webhook
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.NVCR_USERNAME }}
password: ${{ secrets.NVCR_TOKEN }}
- uses: docker/build-push-action@v4
with:
platforms: ${{ env.BUILD_PLATFORMS }}
context: .
file: ${{ matrix.dockerfile }}
tags: ${{ env.DOCKER_REGISTRY }}/${{ matrix.image_name }}:${{ env.DOCKER_TAG }}
push: true

update_network_operator_values:
needs:
- determine_docker_registry_and_tag
- build_and_push_images
runs-on: ubuntu-latest
env:
DOCKER_TAG: ${{ needs.determine_docker_registry_and_tag.outputs.docker_tag }}
GH_TOKEN: ${{ secrets.GH_TOKEN_NVIDIA_CI_CD }}
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GH_TOKEN_NVIDIA_CI_CD }}
repository: ${{ github.repository_owner }}/network-operator
- name: Create PR to update image tags in network-operator values
run: |
git config user.name nvidia-ci-cd
git config user.email [email protected]

git checkout -b feature/update-sriov-tags-to-$DOCKER_TAG
sed -Ei "s/(version: )network-operator-.+/\\1$DOCKER_TAG/g" hack/release.yaml
make release-build

if ! git diff --color --unified=0 --exit-code; then
git commit -sam "task: update SR-IOV images tags to $DOCKER_TAG in chart values"
git push -u origin feature/update-sriov-tags-to-$DOCKER_TAG
gh pr create \
--repo ${{ github.repository_owner }}/network-operator \
--base master \
--head $(git branch --show-current) \
--fill \
--body "Created by the *${{ github.job }}* job in [${{ github.repository }} CI](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})."
fi # TODO: double check with ivan about freddy's question: should we push to master or to a release branch?
39 changes: 39 additions & 0 deletions .github/workflows/fork-sync.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Fork Sync

on:
schedule:
- cron: '0 0 * * *' # nightly
workflow_dispatch: # enable manual trigger

jobs:
lookup-most-recent-release-branch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lookup most recent release branch
id: lookup-most-recent-release-branch
run: |
git fetch --all
echo most_recent_release_branch=$(git branch --remotes --sort refname | grep network-operator- | tail -n 1 | cut -d '/' -f 2-) >> $GITHUB_OUTPUT
outputs:
most_recent_release_branch: ${{ steps.lookup-most-recent-release-branch.outputs.most_recent_release_branch }}

sync-fork:
runs-on: ubuntu-latest
needs: lookup-most-recent-release-branch
strategy:
fail-fast: false
matrix:
branch:
- master
- ${{ needs.lookup-most-recent-release-branch.outputs.most_recent_release_branch }}
steps:
- uses: actions/checkout@v4
if: ${{ matrix.branch != '' }}
- name: Sync
if: ${{ matrix.branch != '' }}
env:
GH_TOKEN: ${{ secrets.GH_TOKEN_NVIDIA_CI_CD }} # classic personal access token permissions: `repo:*,workflow:*`
run: |
gh repo sync ${{ github.repository }} --source k8snetworkplumbingwg/${{ github.event.repository.name }} --branch ${{ matrix.branch }}
# TODO: uncomment triggers for sr-iov fork-ci workflow after fork-sync works
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# sriov-network-operator
I'm testing something; it's safe to delete this mock PR!

The Sriov Network Operator is designed to help the user to provision and configure SR-IOV CNI plugin and Device plugin in the Openshift cluster.

Expand Down
Loading