Merge pull request #77 from stefanprodan/e2e-helm

Consolidate e2e and unit tests
This commit is contained in:
Stefan Prodan
2020-05-28 10:36:37 +03:00
committed by GitHub
9 changed files with 47 additions and 180 deletions

View File

@@ -1,8 +0,0 @@
FROM stefanprodan/alpine-base:latest
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
RUN apk --no-cache add git
ENTRYPOINT ["/entrypoint.sh"]

View File

@@ -1,35 +0,0 @@
name: 'helm-gh-pages'
description: 'A GitHub Action to publish helm charts to Github Pages'
author: 'Stefan Prodan'
branding:
icon: 'command'
color: 'blue'
inputs:
token:
description: "GitHub token"
required: true
charts_dir:
description: "The charts directory, defaults to `charts`"
required: false
charts_url:
description: "The GitHub Pages URL, default to `https://<USER>.github.io/<REPOSITORY>`"
required: false
user:
description: "The GitHub user that owns this repository"
required: false
repository:
description: "The GitHub repository name"
required: false
branch:
description: "The branch to publish charts, default to `gh-pages`"
required: false
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.token }}
- ${{ inputs.charts_dir }}
- ${{ inputs.charts_url }}
- ${{ inputs.user }}
- ${{ inputs.repository }}
- ${{ inputs.branch }}

View File

@@ -1,87 +0,0 @@
#!/usr/bin/env bash
set -o errexit
set -o pipefail
GITHUB_TOKEN=$1
CHARTS_DIR=$2
CHARTS_URL=$3
USER=$4
REPOSITORY=$5
BRANCH=$6
HELM_VERSION=3.2.1
CHARTS_TMP_DIR=$(mktemp -d)
REPO_ROOT=$(git rev-parse --show-toplevel)
main() {
if [[ -z "$CHARTS_DIR" ]]; then
CHARTS_DIR="charts"
fi
if [[ -z "$USER" ]]; then
USER=$(cut -d '/' -f 1 <<< "$GITHUB_REPOSITORY")
fi
if [[ -z "$REPOSITORY" ]]; then
REPOSITORY=$(cut -d '/' -f 2 <<< "$GITHUB_REPOSITORY")
fi
if [[ -z "$BRANCH" ]]; then
BRANCH="gh-pages"
fi
if [[ -z "$CHARTS_URL" ]]; then
CHARTS_URL="https://${USER}.github.io/${REPOSITORY}"
fi
download
lint
package
upload
}
download() {
tmpDir=$(mktemp -d)
pushd $tmpDir >& /dev/null
curl -sSL https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | tar xz
cp linux-amd64/helm /usr/local/bin/helm
popd >& /dev/null
rm -rf $tmpDir
}
lint() {
helm lint ${REPO_ROOT}/${CHARTS_DIR}/*
}
package() {
helm package ${REPO_ROOT}/${CHARTS_DIR}/* --destination ${CHARTS_TMP_DIR}
}
upload() {
tmpDir=$(mktemp -d)
pushd $tmpDir >& /dev/null
repo_url="https://x-access-token:${GITHUB_TOKEN}@github.com/${USER}/${REPOSITORY}"
git clone ${repo_url}
cd ${REPOSITORY}
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
git remote set-url origin ${repo_url}
git checkout gh-pages
mv -f ${CHARTS_TMP_DIR}/*.tgz .
helm repo index . --url ${CHARTS_URL}
git add .
git commit -m "Publish Helm charts"
git push origin gh-pages
popd >& /dev/null
rm -rf $tmpDir
}
main

View File

@@ -12,4 +12,4 @@ runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.helm-version }}
- ${{ inputs.helm-version }}

View File

@@ -7,7 +7,7 @@ on:
- 'master'
jobs:
kind:
kind-helm:
strategy:
matrix:
helm-version:
@@ -17,27 +17,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Restore Go cache
uses: actions/cache@v1
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: 1.14.x
- name: Setup Kubernetes
uses: engineerd/setup-kind@v0.4.0
- name: Run unit tests
run: make test
- name: Check if working tree is dirty
run: |
if [[ $(git diff --stat) != '' ]]; then
echo 'run make test and commit changes'
exit 1
fi
- name: Build container image
run: |
GIT_COMMIT=$(git rev-list -1 HEAD) && \

View File

@@ -1,28 +0,0 @@
name: lint
on:
pull_request:
push:
branches:
- 'master'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: helm
uses: stefanprodan/kube-tools@v1
with:
command: |
helmv3 template ./charts/podinfo | kubeval --strict
- name: kubeval
uses: stefanprodan/kube-tools@v1
with:
command: |
kustomize build ./kustomize | kubeval --strict
- name: conftest
uses: stefanprodan/kube-tools@v1
with:
command: |
kustomize build ./kustomize | conftest test -p .github/policy -

View File

@@ -29,7 +29,7 @@ jobs:
repository: stefanprodan/podinfo-base
tags: latest
- name: Publish helm chart
uses: ./.github/actions/helm-gh-pages
uses: stefanprodan/helm-gh-pages@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/release-notes

43
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: test
on:
pull_request:
push:
branches:
- 'master'
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Restore Go cache
uses: actions/cache@v1
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: 1.14.x
- name: Run unit tests
run: make test
- name: Check if working tree is dirty
run: |
if [[ $(git diff --stat) != '' ]]; then
echo 'run make test and commit changes'
exit 1
fi
- name: Validate Helm chart
uses: stefanprodan/kube-tools@v1
with:
command: |
helmv3 template ./charts/podinfo | kubeval --strict
- name: Validate kustomization
uses: stefanprodan/kube-tools@v1
with:
command: |
kustomize build ./kustomize | kubeval --strict
kustomize build ./kustomize | conftest test -p .github/policy -

View File

@@ -1,6 +1,7 @@
# podinfo
[![e2e](https://github.com/stefanprodan/podinfo/workflows/e2e/badge.svg)](https://github.com/stefanprodan/podinfo/blob/master/.github/workflows/e2e.yml)
[![test](https://github.com/stefanprodan/podinfo/workflows/test/badge.svg)](https://github.com/stefanprodan/podinfo/blob/master/.github/workflows/test.yml)
[![release](https://github.com/stefanprodan/podinfo/workflows/release/badge.svg)](https://github.com/stefanprodan/podinfo/blob/master/.github/workflows/release.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/stefanprodan/podinfo)](https://goreportcard.com/report/github.com/stefanprodan/podinfo)
[![Docker Pulls](https://img.shields.io/docker/pulls/stefanprodan/podinfo)](https://hub.docker.com/r/stefanprodan/podinfo)