Added default ip6tables rules to accept ipv6 neighbor protocol #103
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: continuous-integration | |
on: | |
push: | |
branches: | |
- master | |
- v[1-9].* | |
- prep-v[1-9].* | |
tags: | |
- v[1-9].* | |
pull_request: | |
branches: | |
- master | |
- v[1-9].* | |
- prep-v[1-9].* | |
env: | |
BUILDTIME_BASE: "golang:1.22.3-alpine3.18" | |
# Do not bump past Alpine 3.18 until upstream netfilter problems in iptables v1.8.10 are resolved. See: | |
# https://github.com/cloudnativelabs/kube-router/issues/1676 | |
RUNTIME_BASE: "alpine:3.18" | |
GO_VERSION: "~1.22.3" | |
GO_CACHE: "/home/runner/.cache/go-build" | |
GO_MOD_CACHE: "/home/runner/go/pkg/mod" | |
jobs: | |
# Runs Golangci-lint on the source code | |
ci-go-lint: | |
name: ci-go-lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
id: go | |
- name: Lint kube-router code | |
run: | | |
make lint | |
# Executes Unit Tests | |
ci-unit-tests: | |
name: ci-unit-tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
id: go | |
- name: Run unit tests for kube-router | |
run: | | |
make test | |
env: | |
DOCKER_BUILD_IMAGE: ${{ env.BUILDTIME_BASE }} | |
# Builds Kube-Router binary | |
ci-build-kube-router: | |
name: ci-build-kube-router | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
id: go | |
- name: Build kube-router | |
run: | | |
make kube-router | |
# Builds Container only if a new push to main branch, a tag or a pull request from a source branch within the repository | |
ci-build-container: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]') }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Extract branch from github ref - New Push | |
if: ${{ startsWith(github.ref, 'refs/tags/v') != true && github.event_name != 'pull_request' }} | |
shell: bash | |
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" | |
id: extract_branch | |
- name: Extract tag from github ref - New Release | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
shell: bash | |
run: echo "##[set-output name=tag;]$(echo ${GITHUB_REF#refs/tags/})" | |
id: extract_tag | |
- name: Build and push - New Push | |
uses: docker/build-push-action@v6 | |
if: ${{ startsWith(github.ref, 'refs/tags/v') != true && github.event_name != 'pull_request' }} | |
with: | |
context: . | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
linux/arm/v7 | |
linux/s390x | |
linux/ppc64le | |
push: true | |
build-args: | | |
BUILDTIME_BASE=${{ env.BUILDTIME_BASE }} | |
RUNTIME_BASE=${{ env.RUNTIME_BASE }} | |
tags: cloudnativelabs/kube-router-git:${{ steps.extract_branch.outputs.branch }} | |
- name: Build and push - New PR | |
uses: docker/build-push-action@v6 | |
if: github.event_name == 'pull_request' | |
with: | |
context: . | |
# Don't build multi arch images for PR as they take more than 30 min to build | |
platforms: linux/amd64 | |
push: true | |
build-args: | | |
BUILDTIME_BASE=${{ env.BUILDTIME_BASE }} | |
RUNTIME_BASE=${{ env.RUNTIME_BASE }} | |
tags: cloudnativelabs/kube-router-git:PR-${{ github.event.pull_request.number }} | |
# Tagging a release candidate, don't update latest | |
- name: Build and push - New Tag (Release Candidate) | |
uses: docker/build-push-action@v6 | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-rc') }} | |
with: | |
context: . | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
linux/arm/v7 | |
linux/s390x | |
linux/ppc64le | |
push: true | |
build-args: | | |
BUILDTIME_BASE=${{ env.BUILDTIME_BASE }} | |
RUNTIME_BASE=${{ env.RUNTIME_BASE }} | |
tags: | | |
cloudnativelabs/kube-router:${{ steps.extract_tag.outputs.tag }} | |
# Tagging a proper release, update latest | |
- name: Build and push - New Tag | |
uses: docker/build-push-action@v6 | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && ! contains(github.ref, '-rc') }} | |
with: | |
context: . | |
platforms: | | |
linux/amd64 | |
linux/arm64 | |
linux/arm/v7 | |
linux/s390x | |
linux/ppc64le | |
push: true | |
build-args: | | |
BUILDTIME_BASE=${{ env.BUILDTIME_BASE }} | |
RUNTIME_BASE=${{ env.RUNTIME_BASE }} | |
tags: | | |
cloudnativelabs/kube-router:${{ steps.extract_tag.outputs.tag }} | |
cloudnativelabs/kube-router:latest | |
# Runs Go Releaser on Tag Event | |
ci-goreleaser-tag: | |
runs-on: ubuntu-latest | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
id: go | |
- name: Run GoReleaser | |
uses: goreleaser/goreleaser-action@v6 | |
with: | |
version: "~> v2" | |
distribution: goreleaser | |
args: release --clean | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |