From bee7879cb29953e781b69541171416287fab6933 Mon Sep 17 00:00:00 2001 From: Jan Larwig Date: Sat, 18 Nov 2023 14:56:29 +0100 Subject: [PATCH] add nightly build and push (#2297) * add nightly build and push * add date based nightly build tags * only keep single multiarch image build and push * add changelog * add images to internal docs static files * add docu for nightly builds * remove unnecessary spaces * update nightly repository --- .github/workflows/nightly.yml | 39 ++++++++++++++++++ CHANGELOG.md | 3 +- Makefile | 25 +++++++---- README.md | 21 ++++++---- docs/docs/installation.md | 13 ++++-- docs/src/pages/index.md | 4 +- docs/static/img/architecture.png | Bin 23502 -> 0 bytes docs/static/img/architecture.svg | 4 ++ docs/static/img/sign-in-page.png | Bin 34914 -> 33132 bytes .../version-7.5.x/installation.md | 23 +++++++---- 10 files changed, 101 insertions(+), 31 deletions(-) create mode 100644 .github/workflows/nightly.yml delete mode 100644 docs/static/img/architecture.png create mode 100644 docs/static/img/architecture.svg diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 00000000..b62ca30c --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,39 @@ +name: Nightly builds + +on: + schedule: # Run every day at 03:00 UTC + - cron: '0 3 * * *' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + with: + ref: master + fetch-depth: 0 + fetch-tags: true + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to quay.io + uses: docker/login-action@v2 + with: + registry: quay.io/oauth2-proxy + username: ${{ secrets.REGISTRY_USERNAME_NIGHTLY }} + password: ${{ secrets.REGISTRY_PASSWORD_NIGHTLY }} + + - name: Build images + run: | + make docker-nightly-build + + - name: Push images + run: | + make docker-nightly-push diff --git a/CHANGELOG.md b/CHANGELOG.md index 704d79e0..20ed65ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,8 +15,9 @@ - [#2274](https://github.com/oauth2-proxy/oauth2-proxy/pull/2274) Upgrade golang.org/x/net to v0.17.0 (@pierluigilenoci) - [#2278](https://github.com/oauth2-proxy/oauth2-proxy/pull/2278) Improve the Nginx auth_request example (@akunzai) - [#2282](https://github.com/oauth2-proxy/oauth2-proxy/pull/2282) Fixed checking Google Groups membership using Google Application Credentials (@kvanzuijlen) -- [#2183](https://github.com/oauth2-proxy/oauth2-proxy/pull/2183) Allowing relative redirect url though an option +- [#2183](https://github.com/oauth2-proxy/oauth2-proxy/pull/2183) Allowing relative redirect url though an option (@axel7083) - [#1866](https://github.com/oauth2-proxy/oauth2-proxy/pull/1866) Add support for unix socker as upstream (@babs) +- [#2297](https://github.com/oauth2-proxy/oauth2-proxy/pull/2297) Add nightly build and push (@tuunit) # V7.5.1 diff --git a/Makefile b/Makefile index 619823b7..e96d6c3a 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ BINARY := oauth2-proxy VERSION ?= $(shell git describe --always --dirty --tags 2>/dev/null || echo "undefined") # Allow to override image registry. REGISTRY ?= quay.io/oauth2-proxy +DATE := $(shell date +"%Y%m%d") .NOTPARALLEL: GO_MAJOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1) @@ -51,6 +52,10 @@ DOCKER_BUILDX_PUSH_X_PLATFORM := $(DOCKER_BUILDX_PUSH) --platform ${DOCKER_BUILD docker: $(DOCKER_BUILDX_X_PLATFORM) -t $(REGISTRY)/oauth2-proxy:latest -t $(REGISTRY)/oauth2-proxy:${VERSION} . +.PHONY: docker-push +docker-push: + $(DOCKER_BUILDX_PUSH_X_PLATFORM) -t $(REGISTRY)/oauth2-proxy:latest -t $(REGISTRY)/oauth2-proxy:${VERSION} . + .PHONY: docker-all docker-all: docker $(DOCKER_BUILDX) --platform linux/amd64 -t $(REGISTRY)/oauth2-proxy:latest-amd64 -t $(REGISTRY)/oauth2-proxy:${VERSION}-amd64 . @@ -59,10 +64,6 @@ docker-all: docker $(DOCKER_BUILDX) --platform linux/arm/v6 -t $(REGISTRY)/oauth2-proxy:latest-armv6 -t $(REGISTRY)/oauth2-proxy:${VERSION}-armv6 . $(DOCKER_BUILDX) --platform linux/arm/v7 -t $(REGISTRY)/oauth2-proxy:latest-armv7 -t $(REGISTRY)/oauth2-proxy:${VERSION}-armv7 . -.PHONY: docker-push -docker-push: - $(DOCKER_BUILDX_PUSH_X_PLATFORM) -t $(REGISTRY)/oauth2-proxy:latest -t $(REGISTRY)/oauth2-proxy:${VERSION} . - .PHONY: docker-push-all docker-push-all: docker-push $(DOCKER_BUILDX_PUSH) --platform linux/amd64 -t $(REGISTRY)/oauth2-proxy:latest-amd64 -t $(REGISTRY)/oauth2-proxy:${VERSION}-amd64 . @@ -71,6 +72,14 @@ docker-push-all: docker-push $(DOCKER_BUILDX_PUSH) --platform linux/arm/v6 -t $(REGISTRY)/oauth2-proxy:latest-armv6 -t $(REGISTRY)/oauth2-proxy:${VERSION}-armv6 . $(DOCKER_BUILDX_PUSH) --platform linux/arm/v7 -t $(REGISTRY)/oauth2-proxy:latest-armv7 -t $(REGISTRY)/oauth2-proxy:${VERSION}-armv7 . +.PHONY: docker-nightly-build +docker-nightly-build: + $(DOCKER_BUILDX_X_PLATFORM) -t $(REGISTRY)/oauth2-proxy-nightly:latest -t $(REGISTRY)/oauth2-proxy-nightly-${DATE} . + +.PHONY: docker-nightly-push +docker-nightly-push: + $(DOCKER_BUILDX_PUSH_X_PLATFORM) -t $(REGISTRY)/oauth2-proxy-nightly:latest -t $(REGISTRY)/oauth2-proxy-nightly-${DATE} . + .PHONY: generate generate: go generate ./pkg/... @@ -101,10 +110,10 @@ validate-go-version: # local-env can be used to interact with the local development environment # eg: -# make local-env-up # Bring up a basic test environment -# make local-env-down # Tear down the basic test environment -# make local-env-nginx-up # Bring up an nginx based test environment -# make local-env-nginx-down # Tead down the nginx based test environment +# make local-env-up # Bring up a basic test environment +# make local-env-down # Tear down the basic test environment +# make local-env-nginx-up # Bring up an nginx based test environment +# make local-env-nginx-down # Tead down the nginx based test environment .PHONY: local-env-% local-env-%: make -C contrib/local-environment $* diff --git a/README.md b/README.md index 7d857b2e..e4e6be68 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![OAuth2 Proxy](/docs/static/img/logos/OAuth2_Proxy_horizontal.svg) +![OAuth2 Proxy](docs/static/img/logos/OAuth2_Proxy_horizontal.svg) [![Continuous Integration](https://github.com/oauth2-proxy/oauth2-proxy/actions/workflows/ci.yaml/badge.svg)](https://github.com/oauth2-proxy/oauth2-proxy/actions/workflows/ci.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/oauth2-proxy/oauth2-proxy)](https://goreportcard.com/report/github.com/oauth2-proxy/oauth2-proxy) @@ -7,7 +7,7 @@ [![Maintainability](https://api.codeclimate.com/v1/badges/a58ff79407212e2beacb/maintainability)](https://codeclimate.com/github/oauth2-proxy/oauth2-proxy/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/a58ff79407212e2beacb/test_coverage)](https://codeclimate.com/github/oauth2-proxy/oauth2-proxy/test_coverage) -A reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) +A reverse proxy and static file server that provides authentication using Providers (Google, Keycloak, GitHub and others) to validate accounts by email, domain or group. **Note:** This repository was forked from [bitly/OAuth2_Proxy](https://github.com/bitly/oauth2_proxy) on 27/11/2018. @@ -17,17 +17,24 @@ A list of changes can be seen in the [CHANGELOG](CHANGELOG.md). **Note:** This project was formerly hosted as `pusher/oauth2_proxy` but has been renamed as of 29/03/2020 to `oauth2-proxy/oauth2-proxy`. Going forward, all images shall be available at `quay.io/oauth2-proxy/oauth2-proxy` and binaries will be named `oauth2-proxy`. -![Sign In Page](https://cloud.githubusercontent.com/assets/45028/4970624/7feb7dd8-6886-11e4-93e0-c9904af44ea8.png) +![Sign In Page](docs/static/img/sign-in-page.png) ## Installation 1. Choose how to deploy: - a. Download [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.0`) + a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.1`) - b. Build with `$ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest` which will put the binary in `$GOROOT/bin` + b. Using Go to install the latest release + ```bash + $ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest + # which will put the binary in `$GOROOT/bin` + ``` + c. Using a [Prebuilt Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) - c. Using the prebuilt docker image [quay.io/oauth2-proxy/oauth2-proxy](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) + d. Using a [Pre-Release Nightly Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy-nightly) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) + + e. Using the official [Kubernetes manifest](https://github.com/oauth2-proxy/manifests) (Helm) Prebuilt binaries can be validated by extracting the file and verifying it against the `sha256sum.txt` checksum file provided for each release starting with version `v3.0.0`. @@ -50,7 +57,7 @@ See [open redirect vulnerability](https://github.com/oauth2-proxy/oauth2-proxy/s Read the docs on our [Docs site](https://oauth2-proxy.github.io/oauth2-proxy/docs/). -![OAuth2 Proxy Architecture](https://cloud.githubusercontent.com/assets/45028/8027702/bd040b7a-0d6a-11e5-85b9-f8d953d04f39.png) +![OAuth2 Proxy Architecture](docs/static/img/architecture.svg) ## Getting Involved diff --git a/docs/docs/installation.md b/docs/docs/installation.md index 154508dd..185b2c44 100644 --- a/docs/docs/installation.md +++ b/docs/docs/installation.md @@ -6,13 +6,18 @@ slug: / 1. Choose how to deploy: - a. Download [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.0`) + a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.1`) - b. Build with `$ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest` which will put the binary in `$GOPATH/bin` + b. Using Go to install the latest release + ```bash + $ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest + # which will put the binary in `$GOROOT/bin` + ``` + c. Using a [Prebuilt Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) - c. Using the prebuilt docker image [quay.io/oauth2-proxy/oauth2-proxy](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 tags available) + d. Using a [Pre-Release Nightly Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy-nightly) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) - d. Using a [Kubernetes manifest](https://github.com/oauth2-proxy/manifests) (Helm) + e. Using the official [Kubernetes manifest](https://github.com/oauth2-proxy/manifests) (Helm) Prebuilt binaries can be validated by extracting the file and verifying it against the `sha256sum.txt` checksum file provided for each release starting with version `v3.0.0`. diff --git a/docs/src/pages/index.md b/docs/src/pages/index.md index e08e3450..799b77a5 100644 --- a/docs/src/pages/index.md +++ b/docs/src/pages/index.md @@ -3,7 +3,7 @@ title: Welcome to OAuth2 Proxy hide_table_of_contents: true --- -![OAuth2 Proxy](../../static/img/logos/OAuth2_Proxy_horizontal.svg) +![OAuth2 Proxy](/img/logos/OAuth2_Proxy_horizontal.svg) A reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. @@ -18,4 +18,4 @@ A list of changes can be seen in the [CHANGELOG](https://github.com/oauth2-proxy ## Architecture -![OAuth2 Proxy Architecture](/img/architecture.png) +![OAuth2 Proxy Architecture](/img/architecture.svg) diff --git a/docs/static/img/architecture.png b/docs/static/img/architecture.png deleted file mode 100644 index 0e2bbbf5f2e9bfa052db236743752324f3514d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23502 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 SHq6(is10i!ZA*UgO86%=uK;BL diff --git a/docs/static/img/architecture.svg b/docs/static/img/architecture.svg new file mode 100644 index 00000000..739f4fbe --- /dev/null +++ b/docs/static/img/architecture.svg @@ -0,0 +1,4 @@ + + + +
nginx :443
(SSL Termination)
nginx :443...
oauth2-proxy
:4180
oauth2-proxy...
secured upstream
http service
secured upstream...
Auth Provider
(Google, Keycloak, ...)
Auth Provider...
oauth2-proxy
:443 (SSL)
oauth2-proxy...
secured upstream
http service
secured upstream...
Auth Provider
(Google, Keycloak, ...)
Auth Provider...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/static/img/sign-in-page.png b/docs/static/img/sign-in-page.png index 06e095616d17bcf688afd1b123bedcffc3185db1..6656a2fd93b2d0535f4840fc7f2f60705a25bb06 100644 GIT binary patch literal 33132 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 f{x{M>&d+IArn2vC0)l literal 34914 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

3P_Ww^fTd3l*MLsnVxzGH*qOeop_y@fvd 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 diff --git a/docs/versioned_docs/version-7.5.x/installation.md b/docs/versioned_docs/version-7.5.x/installation.md index 2be4c6a0..3720853b 100644 --- a/docs/versioned_docs/version-7.5.x/installation.md +++ b/docs/versioned_docs/version-7.5.x/installation.md @@ -6,20 +6,25 @@ slug: / 1. Choose how to deploy: - a. Download [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.0`) + a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.5.1`) - b. Build with `$ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest` which will put the binary in `$GOPATH/bin` + b. Using Go to install the latest release + ```bash + $ go install github.com/oauth2-proxy/oauth2-proxy/v7@latest + # which will put the binary in `$GOROOT/bin` + ``` + c. Using a [Prebuilt Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) - c. Using the prebuilt docker image [quay.io/oauth2-proxy/oauth2-proxy](https://quay.io/oauth2-proxy/oauth2-proxy) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 tags available) + d. Using a [Pre-Release Nightly Docker Image](https://quay.io/oauth2-proxy/oauth2-proxy-nightly) (AMD64, PPC64LE, ARMv6, ARMv7, and ARM64 available) - d. Using a [Kubernetes manifest](https://github.com/oauth2-proxy/manifests) (Helm) + e. Using the official [Kubernetes manifest](https://github.com/oauth2-proxy/manifests) (Helm) -Prebuilt binaries can be validated by extracting the file and verifying it against the `sha256sum.txt` checksum file provided for each release starting with version `v3.0.0`. + Prebuilt binaries can be validated by extracting the file and verifying it against the `sha256sum.txt` checksum file provided for each release starting with version `v3.0.0`. -``` -$ sha256sum -c sha256sum.txt -oauth2-proxy-x.y.z.linux-amd64: OK -``` + ``` + sha256sum -c sha256sum.txt 2>&1 | grep OK + oauth2-proxy-x.y.z.linux-amd64: OK + ``` 2. [Select a Provider and Register an OAuth Application with a Provider](configuration/auth.md) 3. [Configure OAuth2 Proxy using config file, command line options, or environment variables](configuration/overview.md)