optimize the code logic #69
Workflow file for this run
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: CI | |
on: | |
pull_request: | |
branches: | |
- "*" | |
push: | |
branches: | |
- feature/work-flow | |
jobs: | |
changes: | |
runs-on: ubuntu-18.04 | |
outputs: | |
go: ${{ steps.filter.outputs.go }} | |
charts: ${{ steps.filter.outputs.charts }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
filters: | | |
go: | |
- '**/*.go' | |
- 'go.mod' | |
- 'go.sum' | |
- 'TAG' | |
- 'test/e2e/**/*' | |
charts: | |
- 'charts/Chart.yaml' | |
- 'charts/**/*' | |
security: | |
runs-on: ubuntu-18.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Run Gosec Security Scanner | |
uses: securego/gosec@master | |
with: | |
# G601 for zz_generated.deepcopy.go | |
# G306 TODO: Expect WriteFile permissions to be 0600 or less | |
# G307 TODO: Deferring unsafe method "Close" | |
args: -exclude=G601,G301,G104,G204,G304,G306,G307 -tests=false -exclude-dir=scheduler -exclude-dir=kube-webhook-certgen -exclude-dir=test -exclude-dir=images/ -exclude-dir=docs/ ./... | |
build: | |
name: Build | |
runs-on: ubuntu-18.04 | |
needs: changes | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up Go 1.17 | |
id: go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.17 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: crazy-max/ghaction-docker-buildx@v1 | |
with: | |
buildx-version: latest | |
qemu-version: latest | |
- name: Available platforms | |
run: echo ${{ steps.buildx.outputs.platforms }} | |
- name: Prepare Host | |
run: | | |
sudo apt-get -qq update || true | |
sudo apt-get install -y pigz | |
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.22.0/bin/linux/amd64/kubectl | |
chmod +x ./kubectl | |
sudo mv ./kubectl /usr/local/bin/kubectl | |
- name: Build images | |
run: | | |
echo "building images..." | |
go mod vendor | |
echo "docker build -t registry.cn-hangzhou.aliyuncs.com/carina/carina:e2e . " | |
docker build -t registry.cn-hangzhou.aliyuncs.com/carina/carina:e2e . | |
echo "creating images cache..." | |
docker save \ | |
registry.cn-hangzhou.aliyuncs.com/carina/carina:e2e \ | |
| pigz > docker.tar.gz | |
- name: cache | |
uses: actions/upload-artifact@v2 | |
with: | |
name: docker.tar.gz | |
path: docker.tar.gz | |
# helm: | |
# name: Helm chart | |
# runs-on: ubuntu-18.04 | |
# needs: | |
# - changes | |
# - build | |
# # if: | | |
# # (needs.changes.outputs.charts == 'true') | |
# strategy: | |
# matrix: | |
# k8s: [v1.22.0] | |
# steps: | |
# | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# | |
# - name: Set up Go 1.17 | |
# id: go | |
# uses: actions/setup-go@v2 | |
# with: | |
# go-version: 1.17 | |
# | |
# - name: cache | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: docker.tar.gz | |
# | |
# - name: fix permissions | |
# run: | | |
# sudo mkdir -p $HOME/.kube | |
# sudo chmod -R 777 $HOME/.kube | |
# | |
# - name: Create Kubernetes cluster | |
# id: kind | |
# uses: engineerd/setup-kind@v0.5.0 | |
# with: | |
# version: v0.11.1 | |
# config: test/e2e/kind.yaml | |
# image: kindest/node:${{ matrix.k8s }} | |
# - uses: geekyeggo/delete-artifact@v1 | |
# with: | |
# name: docker.tar.gz | |
# failOnError: false | |
# | |
# - name: Load images from cache | |
# run: | | |
# echo "loading docker images..." | |
# pigz -dc docker.tar.gz | docker load | |
# - name: Prepare cluster for testing | |
# id: local-path | |
# run: | | |
# kubectl version | |
# echo "installing helm 3..." | |
# curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash | |
# | |
# - name: Test | |
# env: | |
# KIND_CLUSTER_NAME: kind | |
# SKIP_CLUSTER_CREATION: true | |
# SKIP_IMAGE_CREATION: true | |
# run: | | |
# kind get kubeconfig > $HOME/.kube/kind-config-kind | |
# kubectl get nodes | |
# for n in `docker ps --filter name=worker --format "{{.Names}}"`; \ | |
# do \ | |
# for i in `seq 1 5`; \ | |
# do \ | |
# docker exec $$n truncate --size=200G /tmp/disk$$i.device && \ | |
# sleep 2 &&\ | |
# docker exec $$n losetup -f /tmp/disk$$i.device --show; \ | |
# done \ | |
# done | |
# lsblk | |
# | |
# helm install e2e ./charts --set image.carina.repository=registry.cn-hangzhou.aliyuncs.com/carina/carina --set image.carina.tag=e2e | |
# sleep 30s | |
# echo "e2e" | |
# go install github.com/onsi/ginkgo/ginkgo@v1.16.4 | |
# whereis ginkgo | |
# cd test/e2e/ && make e2e | |
kubernetes: | |
name: Kubernetes | |
runs-on: ubuntu-18.04 | |
needs: | |
- changes | |
- build | |
# if: | | |
# (needs.changes.outputs.go == 'true') | |
strategy: | |
matrix: | |
# k8s: [v1.19.11, v1.20.7, v1.21.2, v1.22.0] | |
k8s: [v1.22.10] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up Go 1.17 | |
id: go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.17 | |
- name: cache | |
uses: actions/download-artifact@v2 | |
with: | |
name: docker.tar.gz | |
- name: Create Kubernetes ${{ matrix.k8s }} cluster | |
run: | | |
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE=777 INSTALL_K3S_VERSION=v1.22.10+k3s1 sh - | |
cat /etc/rancher/k3s/k3s.yaml | |
mkdir -p ~/.kube | |
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config | |
- uses: geekyeggo/delete-artifact@v1 | |
with: | |
name: docker.tar.gz | |
failOnError: false | |
- name: Load images from cache | |
run: | | |
echo "loading docker images..." | |
pigz -dc docker.tar.gz | docker load | |
sudo docker save -o carina-e2e.tar registry.cn-hangzhou.aliyuncs.com/carina/carina:e2e | |
sudo k3s ctr -n k8s.io i import carina-e2e.tar | |
sudo k3s ctr -n k8s.io i ls | |
- name: Deploy carina | |
run: | | |
echo "Deploying carina..." | |
for i in $(seq 1 10); do | |
truncate --size=200G $HOME/disk$i.device && \ | |
sudo losetup -f $HOME/disk$i.device | |
done | |
lsblk | |
cd test/e2e/ && make install | |
echo "waiting carina up" | |
sleep 120s | |
echo "kubectl get pods -n kube-system |grep carina" | |
kubectl get pods -n kube-system |grep carina | |
echo "kubectl get nodestorageresource -oyaml" | |
kubectl get nodestorageresource -oyaml | |
- name: Run e2e tests | |
env: | |
KIND_CLUSTER_NAME: kind | |
SKIP_CLUSTER_CREATION: true | |
SKIP_IMAGE_CREATION: true | |
run: | | |
kubectl get nodes | |
echo "e2e" | |
go install github.com/onsi/ginkgo/ginkgo@v1.16.4 | |
whereis ginkgo | |
cd test/e2e/ && make e2e |