From 61ac620fa3ac621fae7e1c831220e493ff230b65 Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Arango Gutierrez Date: Sun, 28 Jan 2024 21:23:04 +0100 Subject: [PATCH] Add Github Actions Signed-off-by: Carlos Eduardo Arango Gutierrez --- .common-ci.yml | 1 - .github/ISSUE_TEMPLATE | 37 +++++++++++++++++ .github/dependabot.yml | 20 +++++++++ .github/workflows/golang.yaml | 56 ++++++++++++++++++++++++++ .github/workflows/images.yaml | 76 +++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 63 ----------------------------- Dockerfile.devel | 20 --------- Makefile | 31 ++++---------- versions.mk | 3 ++ 9 files changed, 199 insertions(+), 108 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/golang.yaml create mode 100644 .github/workflows/images.yaml delete mode 100644 Dockerfile.devel diff --git a/.common-ci.yml b/.common-ci.yml index 4b618b35..1c36c975 100644 --- a/.common-ci.yml +++ b/.common-ci.yml @@ -20,7 +20,6 @@ default: variables: BUILD_MULTI_ARCH_IMAGES: "false" - BUILDIMAGE: "${CI_REGISTRY_IMAGE}/build:${CI_COMMIT_SHORT_SHA}" stages: - image diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE new file mode 100644 index 00000000..cb06b59c --- /dev/null +++ b/.github/ISSUE_TEMPLATE @@ -0,0 +1,37 @@ +--- +name: Kata Manager Bug report +about: Create a report to help us improve +title: '' +labels: '' + +--- + +_The template below is mostly useful for bug reports and support questions. Feel free to remove anything which doesn't apply to you and add more information where it makes sense._ + +_**Important Note: NVIDIA AI Enterprise customers can get support from NVIDIA Enterprise support. Please open a case [here](https://enterprise-support.nvidia.com/s/create-case)**._ + + +### 1. Quick Debug Information +* OS/Version(e.g. RHEL8.6, Ubuntu22.04): +* Kernel Version: +* Container Runtime Type/Version(e.g. Containerd, CRI-O, Docker): +* K8s Flavor/Version(e.g. K8s, OCP, Rancher, GKE, EKS): + +### 2. Issue or feature description +_Briefly explain the issue in terms of expected behavior and current behavior._ + +### 3. Information to [attach](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/) (optional if deemed irrelevant) + +Common error checking: + - [ ] The output of `nvidia-smi -a` on your host + - [ ] Your docker configuration file (e.g: `/etc/docker/daemon.json`) + - [ ] The k8s-device-plugin container logs + - [ ] The kubelet logs on the node (e.g: `sudo journalctl -r -u kubelet`) + +Additional information that might help better understand your environment and reproduce the bug: + - [ ] Docker version from `docker version` + - [ ] Docker command, image and tag used + - [ ] Kernel version from `uname -a` + - [ ] Any relevant kernel output lines from `dmesg` + - [ ] NVIDIA packages version from `dpkg -l '*nvidia*'` _or_ `rpm -qa '*nvidia*'` + - [ ] NVIDIA container library version from `nvidia-container-cli -V` diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..ee23ed2e --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,20 @@ +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "gomod" + target-branch: main + directory: "/" + schedule: + interval: "weekly" + day: "sunday" + ignore: + - dependency-name: k8s.io/* + labels: + - dependencies + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/golang.yaml b/.github/workflows/golang.yaml new file mode 100644 index 00000000..e91e8d43 --- /dev/null +++ b/.github/workflows/golang.yaml @@ -0,0 +1,56 @@ +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Golang + +on: + pull_request: + branches: + - main + - release-* + push: + branches:make + - main + - release-* + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Lint + uses: golangci/golangci-lint-action@v3 + with: + version: latest + args: -v --timeout 5m + skip-cache: true + test: + name: Unit test + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: '1.20' + - run: make test + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build + run: make docker-build diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml new file mode 100644 index 00000000..756bae69 --- /dev/null +++ b/.github/workflows/images.yaml @@ -0,0 +1,76 @@ +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Images + +# Run this workflow on pull requests +on: + pull_request: + types: + - opened + - synchronize + branches: + - main + - release-* + push: + branches: + - main + - release-* + +jobs: + build-image: + runs-on: ubuntu-latest + strategy: + matrix: + dist: [ubi8] + steps: + - uses: actions/checkout@v4 + + - name: Calculate build vars + id: vars + run: | + echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV + echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV + REPO_FULL_NAME="${{ github.event.pull_request.head.repo.full_name }}" + echo "${REPO_FULL_NAME}" + echo "LABEL_IMAGE_SOURCE=https://github.com/${REPO_FULL_NAME}" >> $GITHUB_ENV + + GENERATE_ARTIFACTS="false" + if [[ "${{ github.actor }}" == "dependabot[bot]" ]]; then + GENERATE_ARTIFACTS="false" + elif [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.head.repo.full_name }}" == "${{ github.repository }}" ]]; then + GENERATE_ARTIFACTS="true" + elif [[ "${{ github.event_name }}" == "push" ]]; then + GENERATE_ARTIFACTS="true" + fi + echo "PUSH_ON_BUILD=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV + echo "BUILD_MULTI_ARCH_IMAGES=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build image + env: + IMAGE_NAME: ghcr.io/${LOWERCASE_REPO_OWNER}/k8s-kata-manager + VERSION: ${COMMIT_SHORT_SHA} + run: | + echo "${VERSION}" + make -f deployments/container/Makefile build-${{ matrix.dist }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bcd15b87..d6491aa2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,68 +15,6 @@ include: - local: '.common-ci.yml' -build-dev-image: - stage: image - script: - - apk --no-cache add make bash - - make .build-image - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - - make .push-build-image - -.requires-build-image: - image: "${BUILDIMAGE}" - -.go-check: - extends: - - .requires-build-image - stage: go-checks - -fmt: - extends: - - .go-check - script: - - make assert-fmt - -vet: - extends: - - .go-check - script: - - make vet - -lint: - extends: - - .go-check - script: - - make lint - allow_failure: true - -ineffassign: - extends: - - .go-check - script: - - make ineffassign - allow_failure: true - -misspell: - extends: - - .go-check - script: - - make misspell - -go-build: - extends: - - .requires-build-image - stage: go-build - script: - - make build - -unit-tests: - extends: - - .requires-build-image - stage: unit-tests - script: - - make coverage - # Define the image build targets image-build: stage: image-build @@ -92,4 +30,3 @@ image-build: script: - make build-image - make push-image - diff --git a/Dockerfile.devel b/Dockerfile.devel deleted file mode 100644 index 42c0b18c..00000000 --- a/Dockerfile.devel +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -ARG GOLANG_VERSION -FROM golang:${GOLANG_VERSION} - -RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.52.2 -RUN go install github.com/matryer/moq@latest -RUN go install github.com/gordonklaus/ineffassign@latest -RUN go install github.com/client9/misspell/cmd/misspell@latest diff --git a/Makefile b/Makefile index 0cb7861b..a4ad5dda 100644 --- a/Makefile +++ b/Makefile @@ -129,36 +129,19 @@ CONTROLLER_GEN = $(PROJECT_DIR)/bin/controller-gen controller-gen: @GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.10.0 -##### Devel image build and push targets ##### -.PHONY: .build-image .pull-build-image .push-build-image -BUILDIMAGE ?= k8s-kata-manager-devel -.build-image: Dockerfile.devel - if [ x"$(SKIP_IMAGE_BUILD)" = x"" ]; then \ - $(DOCKER) build \ - --progress=plain \ - --build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \ - --tag $(BUILDIMAGE) \ - -f $(^) \ - .; \ - fi - -.pull-build-image: - $(DOCKER) pull $(BUILDIMAGE) - -.push-build-image: - $(DOCKER) push $(BUILDIMAGE) - -$(DOCKER_TARGETS): docker-%: .build-image - @echo "Running 'make $(*)' in docker container $(BUILDIMAGE)" +$(DOCKER_TARGETS): docker-%: + @echo "Running 'make $(*)' in container image $(BUILDIMAGE)" $(DOCKER) run \ --rm \ - -e GOCACHE=/tmp/.cache \ - -v $(PWD):$(PWD) \ - -w $(PWD) \ + -e GOCACHE=/tmp/.cache/go \ + -e GOMODCACHE=/tmp/.cache/gomod \ + -v $(PWD):/work \ + -w /work \ --user $$(id -u):$$(id -g) \ $(BUILDIMAGE) \ make $(*) + ##### Image build and push targets ##### build-image: DOCKER_BUILDKIT=1 \ diff --git a/versions.mk b/versions.mk index 1d0994ae..651ef0d5 100644 --- a/versions.mk +++ b/versions.mk @@ -19,3 +19,6 @@ vVERSION := v$(VERSION:v%=%) CUDA_VERSION := 12.2.0 GOLANG_VERSION := 1.20.4 + +BUILDIMAGE_TAG ?= devel-go$(GOLANG_VERSION) +BUILDIMAGE ?= ghcr.io/nvidia/k8s-test-infra:$(BUILDIMAGE_TAG)