diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index bc2b6dae2..ddd78cc05 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -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 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 000000000..6b4251269 --- /dev/null +++ b/.github/workflows/release.yaml @@ -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 < build/images/nginx/aws.tfvars +# access_key = "${{ secrets.AWS_ACCESS_KEY }}" +# secret_key = "${{ secrets.AWS_ACCESS_SECRET_KEY }}" +# EOF +# +# cat < 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 }} diff --git a/Makefile b/Makefile index 24d31a204..c09065961 100644 --- a/Makefile +++ b/Makefile @@ -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)