Use github actions to create releases and krew plugin assets

This commit is contained in:
Manuel Alejandro de Brito Fontes 2020-04-24 17:57:51 -04:00
parent c7c06e0e6f
commit 4933170ae8
3 changed files with 152 additions and 6 deletions

View file

@ -1,4 +1,4 @@
name: docs and Helm chart
name: Documentation and Helm chart
on:
push:
@ -6,16 +6,30 @@ on:
- master
jobs:
build:
chart:
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v1
#- name: Run chart-releaser
# uses: helm/chart-releaser-action@v1.0.0-alpha.2
# env:
# CR_TOKEN: "${{ secrets.PERSONAL_TOKEN }}"
- name: Setup
shell: bash
run: |
git config --global user.name "$GITHUB_ACTOR"
git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.0.0-rc.2
env:
CR_TOKEN: "${{ secrets.PERSONAL_TOKEN }}"
docs:
needs: chart
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v1
- name: Deploy docs
uses: ./.github/actions/mkdocs

128
.github/workflows/release.yaml vendored Normal file
View file

@ -0,0 +1,128 @@
name: Release
on:
push:
tags:
- controller*
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v1
- name: Set up Go 1.14
uses: actions/setup-go@master
with:
go-version: 1.14
- name: Build krew plugin
shell: bash
run: |
export PATH=${PATH}:`go env GOPATH`/bin
make build-plugin
# - name: Build and publish images
# shell: bash
# run: |
# cat <<EOF | > build/images/nginx/aws.tfvars
# access_key = "${{ secrets.AWS_ACCESS_KEY }}"
# secret_key = "${{ secrets.AWS_ACCESS_SECRET_KEY }}"
# EOF
#
# cat <<EOF | > build/images/nginx/env.tfvars
# docker_username="${{ secrets.DOCKER_USERNAME }}"
# docker_password="${{ secrets.DOCKER_PASSWORD }}"
# EOF
#
# ./build/build-ingress-controller.sh
- name: Create env variables
shell: bash
run: |
# $(cat cmd/plugin/release/ingress-nginx.yaml)
echo "::set-env name=RELEASE_VERSION::$(make show-version)"
echo "::set-env name=RELEASE_CHANGELOG::##CHANGELOG##"
- name: Create release
id: create_release
uses: actions/create-release@v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/controller')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: controller-${{ env.RELEASE_VERSION }}
release_name: "NGINX: ${{ env.RELEASE_VERSION }}"
body: |
**Image:** `quay.io/kubernetes-ingress-controller/nginx-ingress-controller:${{ env.RELEASE_VERSION }}`
${{ env.RELEASE_CHANGELOG }}
Complete changelog [here](https://github.com/kubernetes/ingress-nginx/blob/master/Changelog.md)
draft: false
prerelease: false
- name: Upload krew plugin Darwin
uses: actions/upload-release-asset@v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/controller')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: cmd/plugin/release/kubectl-ingress_nginx-darwin-amd64.tar.gz
asset_name: kubectl-ingress_nginx-darwin-amd64.tar.gz
asset_content_type: application/tar+gzip
- name: Upload krew plugin Linux
uses: actions/upload-release-asset@v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/controller')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: cmd/plugin/release/kubectl-ingress_nginx-linux-amd64.tar.gz
asset_name: kubectl-ingress_nginx-linux-amd64.tar.gz
asset_content_type: application/tar+gzip
- name: Upload krew plugin Windows
uses: actions/upload-release-asset@v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/controller')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: cmd/plugin/release/kubectl-ingress_nginx-windows-amd64.tar.gz
asset_name: kubectl-ingress_nginx-windows-amd64.tar.gz
asset_content_type: application/tar+gzip
- name: Upload krew plugin
uses: actions/upload-release-asset@v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/controller')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: cmd/plugin/release/ingress-nginx.yaml
asset_name: ingress-nginx.yaml
asset_content_type: text/x-yaml
- name: Create KREW_PLUGIN_BODY_PR env variable
shell: bash
run: |
echo "::set-env name=KREW_PLUGIN_BODY_PR::$(cat cmd/plugin/release/ingress-nginx.yaml)"
- name: Open PR for new release of Krew Plugin
uses: gha-utilities/init-pull-request@v0.1.2
env:
GITHUB_REPOSITORY: maintainer/repo-name
with:
verbose: true
draft: false
pull_request_token: ${{ secrets.GITHUB_TOKEN }}
head: ingress-nginx:krew
base: krew
title: 'Update ingress-nginx krew plugin to ${{ env.RELEASE_VERSION }}'
body: |
${{ env.KREW_PLUGIN_BODY_PR }}

View file

@ -288,3 +288,7 @@ endif
docker buildx create --name ingress-nginx --use || true
docker buildx inspect --bootstrap
endif
.PHONY: show-version
show-version:
echo -n $(TAG)