update (#81) #95
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: Push | |
on: | |
push: | |
branches: | |
- master | |
env: | |
DOCKER_FILE_PATH: Dockerfile | |
GOLANG_VERSION: 1.16 | |
OPERATOR_SDK_VERSION: "1.7.2" | |
KUSTOMIZE_VERSION: "3.8.7" | |
KUBERNETES_VERSION: "1.20.2" | |
KIND_VERSION: "0.10.0" | |
jobs: | |
build: | |
name: Build | |
if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
with: | |
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token | |
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo | |
- name: Set up Go | |
id: go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: ${{ env.GOLANG_VERSION }} | |
- name: Lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: v1.50.0 | |
only-new-issues: false | |
args: --timeout 10m | |
- name: Install kubectl | |
run: | | |
curl -LO "https://storage.googleapis.com/kubernetes-release/release/v${KUBERNETES_VERSION}/bin/linux/amd64/kubectl" | |
sudo install ./kubectl /usr/local/bin/ && rm kubectl | |
kubectl version --short --client | |
kubectl version --short --client | grep -q ${KUBERNETES_VERSION} | |
- name: Install Kind | |
run: | | |
curl -L -o kind https://github.com/kubernetes-sigs/kind/releases/download/v${KIND_VERSION}/kind-linux-amd64 | |
sudo install ./kind /usr/local/bin && rm kind | |
kind version | |
kind version | grep -q ${KIND_VERSION} | |
- name: Create Kind Cluster | |
run: | | |
kind create cluster | |
- name: Set up Cluster | |
run: | | |
kubectl cluster-info | |
kubectl create namespace test | |
- name: Test | |
run: make test OPERATOR_NAMESPACE=test USE_EXISTING_CLUSTER=true | |
- name: Generate Tag | |
id: generate_tag | |
uses: anothrNick/github-tag-action@1.36.0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }} | |
WITH_V: true | |
DEFAULT_BUMP: patch | |
DRY_RUN: true | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to Registry | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.STAKATER_DOCKERHUB_USERNAME }} | |
password: ${{ secrets.STAKATER_DOCKERHUB_PASSWORD }} | |
- name: Generate image repository path | |
run: | | |
echo IMAGE_REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV | |
- name: Build and push | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
file: ${{ env.DOCKER_FILE_PATH }} | |
pull: true | |
push: true | |
build-args: BUILD_PARAMETERS=${{ env.BUILD_PARAMETERS }} | |
cache-to: type=inline | |
tags: | | |
${{ env.IMAGE_REPOSITORY }}:${{ steps.generate_tag.outputs.new_tag }} | |
labels: | | |
org.opencontainers.image.source=${{ github.event.repository.clone_url }} | |
org.opencontainers.image.created=${{ steps.prep.outputs.created }} | |
org.opencontainers.image.revision=${{ github.sha }} | |
############################## | |
## Add steps to generate required artifacts for a release here(helm chart, operator manifest etc.) | |
############################## | |
# Generate tag for operator without "v" | |
- name: Generate Operator Tag | |
id: generate_operator_tag | |
uses: anothrNick/github-tag-action@1.36.0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }} | |
WITH_V: false | |
DEFAULT_BUMP: patch | |
DRY_RUN: true | |
# Install operator-sdk | |
- name: Install operator-sdk | |
env: | |
OPERATOR_SDK_VERSION: ${{ env.OPERATOR_SDK_VERSION }} | |
run: | | |
curl -fL -o /tmp/operator-sdk "https://github.com/operator-framework/operator-sdk/releases/download/v${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64" | |
sudo install /tmp/operator-sdk /usr/local/bin && rm -f /tmp/operator-sdk | |
operator-sdk version | |
operator-sdk version | grep -q "${OPERATOR_SDK_VERSION}" | |
# Install kustomize | |
- uses: imranismail/setup-kustomize@v1 | |
with: | |
kustomize-version: ${{ env.KUSTOMIZE_VERSION }} | |
- name: Generate Bundle | |
env: | |
VERSION: ${{ steps.generate_operator_tag.outputs.new_tag }} | |
run: make bundle | |
# Update chart tag to the latest semver tag | |
- name: Update Chart Version | |
env: | |
VERSION: ${{ steps.generate_operator_tag.outputs.new_tag }} | |
run: make bump-chart | |
- name: Update Chart CRDs | |
run: make generate-crds | |
# Publish helm chart | |
- name: Publish Helm chart | |
uses: stefanprodan/helm-gh-pages@master | |
with: | |
branch: master | |
repository: stakater-charts | |
target_dir: docs | |
token: ${{ secrets.GHCR_TOKEN }} | |
charts_dir: charts | |
charts_url: https://stakater.github.io/stakater-charts | |
owner: stakater | |
linting: off | |
commit_username: stakater-user | |
commit_email: stakater@gmail.com | |
# Commit back changes | |
- name: Commit files | |
run: | | |
git config --local user.email "stakater@gmail.com" | |
git config --local user.name "stakater-user" | |
git status | |
git add . | |
git commit -m "[skip-ci] Update artifacts" -a | |
- name: Push changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.PUBLISH_TOKEN }} | |
- name: Push Latest Tag | |
uses: anothrNick/github-tag-action@1.36.0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }} | |
WITH_V: true | |
DEFAULT_BUMP: patch | |
- name: Notify Slack | |
uses: 8398a7/action-slack@v3 | |
if: always() # Pick up events even if the job fails or is canceled. | |
with: | |
status: ${{ job.status }} | |
fields: repo,author,action,eventName,ref,workflow | |
env: | |
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }} | |
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }} |