From 9c2025432040551da4f74c3e27c711e225fce24a Mon Sep 17 00:00:00 2001 From: lalyos Date: Fri, 11 Sep 2020 17:15:29 +0200 Subject: [PATCH] github action to release and automagically update version and sha --- .github/workflows/release.yml | 53 +++++++++++++++++++++++++++++++++++ Makefile | 11 ++++++-- plugins/examples.yaml | 10 +++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d22a78c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,53 @@ +--- +on: + push: + tags: + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + +name: Upload Release Asset + +jobs: + build: + name: Upload Release Asset + runs-on: ubuntu-latest + steps: + - name: Checkout master + uses: actions/checkout@v2 + with: + ref: master + - name: Checkout code + uses: actions/checkout@v2 + - name: Build project + run: | + make ci + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + - name: Upload Release Asset + 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 }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./examples.tar.gz + asset_name: examples.tar.gz + asset_content_type: application/tar+gzip + - name: Commit updated krew yaml + id: git_commit + run: | + git config --global user.email "action@github.com" + git config --global user.name "Github Action" + git stash -- plugins/examples.yaml + git checkout master + git stash pop + git add plugins/examples.yaml + git commit -m "update version references to: ${{ github.ref }}" + git push origin master diff --git a/Makefile b/Makefile index d5c41f3..bda8137 100644 --- a/Makefile +++ b/Makefile @@ -4,14 +4,21 @@ tgz: @tar -uf examples.tar kubectl-examples gzip examples.tar +ver = $(shell git describe --tags) sha = $(shell shasum -a 256 < examples.tar.gz|cut -d" " -f1) -update: +fix-sha: @sed -i 's/sha256: .*$$/sha256: $(sha)/' plugins/examples.yaml -install: clean tgz update +fix-version: + @sed -i 's/v[0-9]\.[0-9]\.[0-9]/$(ver)/' plugins/examples.yaml + +install: clean tgz fix-sha kubectl krew install --manifest=plugins/examples.yaml --archive=examples.tar.gz +ci: tgz fix-sha fix-version + @echo github action ... + clean: @rm -f examples.tar.gz @kubectl krew uninstall examples || : \ No newline at end of file diff --git a/plugins/examples.yaml b/plugins/examples.yaml index 2b87001..35bfff4 100644 --- a/plugins/examples.yaml +++ b/plugins/examples.yaml @@ -11,6 +11,16 @@ spec: A reference repository of YAML with canonical and as-simple-as-possible demonstrations of kubernetes functionality and features. + + Usage: + interactively selecting resource type: + kubectl examples + + interactively selecting yaml: + kubectl examples Service + + create a sample ingress while modifying it: + kubectl examples Ingress fanout | kubectl create -f - --edit platforms: - selector: matchExpressions: