Scaffold CI
This commit is contained in:
parent
119f841e99
commit
2d1eb7a843
|
@ -0,0 +1,6 @@
|
|||
FROM stefanprodan/alpine-base:latest
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,9 @@
|
|||
name: 'helm'
|
||||
description: 'A GitHub Action to run Helm commands'
|
||||
author: 'Hidde Beydals'
|
||||
branding:
|
||||
icon: 'command'
|
||||
color: 'blue'
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
helm_ver=3.2.4 && \
|
||||
helm_url=https://get.helm.sh && \
|
||||
curl -sL ${helm_url}/helm-v${helm_ver}-linux-amd64.tar.gz | \
|
||||
tar xz
|
||||
|
||||
mkdir -p $GITHUB_WORKSPACE/bin
|
||||
cp ./linux-amd64/helm $GITHUB_WORKSPACE/bin
|
||||
chmod +x $GITHUB_WORKSPACE/bin/helm
|
||||
|
||||
$GITHUB_WORKSPACE/bin/helm version
|
||||
|
||||
echo "::add-path::$GITHUB_WORKSPACE/bin"
|
||||
echo "::add-path::$RUNNER_WORKSPACE/$(basename $GITHUB_REPOSITORY)/bin"
|
|
@ -0,0 +1,6 @@
|
|||
FROM giantswarm/tiny-tools
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,9 @@
|
|||
name: 'kubebuilder'
|
||||
description: 'A GitHub Action to run kubebuilder commands'
|
||||
author: 'Stefan Prodan'
|
||||
branding:
|
||||
icon: 'command'
|
||||
color: 'blue'
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh -l
|
||||
|
||||
VERSION=2.3.1
|
||||
|
||||
curl -sL https://go.kubebuilder.io/dl/${VERSION}/linux/amd64 | tar -xz -C /tmp/
|
||||
|
||||
mkdir -p $GITHUB_WORKSPACE/kubebuilder
|
||||
mv /tmp/kubebuilder_${VERSION}_linux_amd64/* $GITHUB_WORKSPACE/kubebuilder/
|
||||
ls -lh $GITHUB_WORKSPACE/kubebuilder/bin
|
||||
|
||||
echo "::add-path::$GITHUB_WORKSPACE/kubebuilder/bin"
|
||||
echo "::add-path::$RUNNER_WORKSPACE/$(basename $GITHUB_REPOSITORY)/kubebuilder/bin"
|
|
@ -0,0 +1,6 @@
|
|||
FROM stefanprodan/alpine-base:latest
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,9 @@
|
|||
name: 'kubectl'
|
||||
description: 'A GitHub Action to run kubectl commands'
|
||||
author: 'Stefan Prodan'
|
||||
branding:
|
||||
icon: 'command'
|
||||
color: 'blue'
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
kubectl_ver=1.18.3 && \
|
||||
curl -sL https://storage.googleapis.com/kubernetes-release/release/v${kubectl_ver}/bin/linux/amd64/kubectl > kubectl
|
||||
|
||||
mkdir -p $GITHUB_WORKSPACE/bin
|
||||
cp ./kubectl $GITHUB_WORKSPACE/bin
|
||||
chmod +x $GITHUB_WORKSPACE/bin/kubectl
|
||||
|
||||
$GITHUB_WORKSPACE/bin/kubectl version --client
|
||||
|
||||
echo "::add-path::$GITHUB_WORKSPACE/bin"
|
||||
echo "::add-path::$RUNNER_WORKSPACE/$(basename $GITHUB_REPOSITORY)/bin"
|
|
@ -0,0 +1,6 @@
|
|||
FROM stefanprodan/alpine-base:latest
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,9 @@
|
|||
name: 'kustomize'
|
||||
description: 'A GitHub Action to run kustomize commands'
|
||||
author: 'Stefan Prodan'
|
||||
branding:
|
||||
icon: 'command'
|
||||
color: 'blue'
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
kustomize_ver=3.8.0 && \
|
||||
kustomize_url=https://github.com/kubernetes-sigs/kustomize/releases/download && \
|
||||
curl -sL ${kustomize_url}/kustomize%2Fv${kustomize_ver}/kustomize_v${kustomize_ver}_linux_amd64.tar.gz | \
|
||||
tar xz
|
||||
|
||||
mkdir -p $GITHUB_WORKSPACE/bin
|
||||
cp ./kustomize $GITHUB_WORKSPACE/bin
|
||||
chmod +x $GITHUB_WORKSPACE/bin/kustomize
|
||||
|
||||
$GITHUB_WORKSPACE/bin/kustomize version
|
||||
|
||||
echo "::add-path::$GITHUB_WORKSPACE/bin"
|
||||
echo "::add-path::$RUNNER_WORKSPACE/$(basename $GITHUB_REPOSITORY)/bin"
|
|
@ -0,0 +1,74 @@
|
|||
name: e2e
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
kind:
|
||||
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-beta
|
||||
with:
|
||||
go-version: 1.14.x
|
||||
- name: Setup Kubernetes
|
||||
uses: engineerd/setup-kind@v0.3.0
|
||||
- name: Setup Helm
|
||||
uses: ./.github/actions/helm
|
||||
- name: Setup Kustomize
|
||||
uses: ./.github/actions/kustomize
|
||||
- name: Setup Kubebuilder
|
||||
uses: ./.github/actions/kubebuilder
|
||||
- name: Setup Kubectl
|
||||
uses: ./.github/actions/kubectl
|
||||
- name: Run tests
|
||||
run: make test
|
||||
env:
|
||||
KUBEBUILDER_ASSETS: ${{ github.workspace }}/kubebuilder/bin
|
||||
- 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: make docker-build IMG=test/helm-controller:latest
|
||||
env:
|
||||
KUBEBUILDER_ASSETS: ${{ github.workspace }}/kubebuilder/bin
|
||||
- name: Load test image
|
||||
run: kind load docker-image test/helm-controller:latest
|
||||
- name: Deploy controllers
|
||||
run: |
|
||||
make dev-deploy IMG=test/helm-controller:latest
|
||||
kubectl -n helm-system rollout status deploy/source-controller --timeout=1m
|
||||
kubectl -n helm-system rollout status deploy/helm-controller --timeout=1m
|
||||
env:
|
||||
KUBEBUILDER_ASSETS: ${{ github.workspace }}/kubebuilder/bin
|
||||
- name: Logs
|
||||
run: |
|
||||
kubectl -n helm-system logs deploy/source-controller
|
||||
kubectl -n helm-system logs deploy/helm-controller
|
||||
- name: Debug failure
|
||||
if: failure()
|
||||
run: |
|
||||
which kubectl
|
||||
kubectl version
|
||||
helm version
|
||||
kubectl -n helm-system get helmrepositories -oyaml
|
||||
kubectl -n helm-system get helmcharts -oyaml
|
||||
kubectl -n helm-system get helmreleases -oyaml
|
||||
kubectl -n helm-system get all
|
||||
kubectl -n helm-system logs deploy/source-controller
|
||||
kubectl -n helm-system logs deploy/helm-controller
|
|
@ -0,0 +1,52 @@
|
|||
name: release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
build-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Setup Kustomize
|
||||
uses: ./.github/actions/kustomize
|
||||
- name: Get version
|
||||
id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
||||
- name: Generate release asset
|
||||
run: |
|
||||
mkdir -p config/release
|
||||
cp config/default/* config/release
|
||||
cd config/release
|
||||
kustomize edit set image fluxcd/helm-controller=fluxcd/helm-controller:${{ steps.get_version.outputs.VERSION }}
|
||||
kustomize build . > helm-controller.yaml
|
||||
- name: Push image
|
||||
uses: docker/build-push-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
repository: fluxcd/helm-controller
|
||||
tag_with_ref: true
|
||||
- name: Create release
|
||||
id: create_release
|
||||
uses: actions/create-release@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: true
|
||||
body: |
|
||||
[CHANGELOG](https://github.com/fluxcd/helm-controller/blob/master/CHANGELOG.md)
|
||||
- name: Upload artifacts
|
||||
id: upload-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./config/release/helm-controller.yaml
|
||||
asset_name: helm-controller.yaml
|
||||
asset_content_type: text/plain
|
|
@ -1,5 +1,5 @@
|
|||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- bases/helm.fluxcd.io_kustomizations.yaml
|
||||
# +kubebuilder:scaffold:crdkustomizeresource
|
||||
- bases/helm.fluxcd.io_helmreleases.yaml
|
||||
# +kubebuilder:scaffold:crdkustomizeresource
|
||||
|
|
Loading…
Reference in New Issue