diff --git a/.github/workflows/varnish.yml b/.github/workflows/varnish.yml new file mode 100644 index 0000000..2c93e21 --- /dev/null +++ b/.github/workflows/varnish.yml @@ -0,0 +1,67 @@ +name: Varnish image build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + - cron: '24 9 * * 6' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + IMAGE_TAG: ${{ github.sha }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout Dockerfile + id: checkout + uses: actions/checkout@v2 + + - name: Setup QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: all + + - name: Setup Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to GitHub Container Registry + id: ghcr + uses: docker/login-action@v1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GH_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + flavor: | + latest=${{ startsWith(github.ref, 'refs/heads/main') }} + suffix=-${{ github.sha }} + + - name: Build and push Docker image + id: build + uses: docker/build-push-action@v2 + with: + build-args: GH_TOKEN=${{ secrets.GH_TOKEN }} + context: . + file: ./varnish/Dockerfile + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: varnish-${{ steps.meta.outputs.labels }} diff --git a/varnish/Dockerfile b/varnish/Dockerfile new file mode 100644 index 0000000..b9e8cb9 --- /dev/null +++ b/varnish/Dockerfile @@ -0,0 +1,3 @@ +FROM varnish:fresh + +COPY default.vcl /etc/varnish/default.vcl \ No newline at end of file diff --git a/varnish/default.vcl b/varnish/default.vcl new file mode 100644 index 0000000..72009c5 --- /dev/null +++ b/varnish/default.vcl @@ -0,0 +1,14 @@ +vcl 4.1; + +import dynamic; + +backend default none; + +sub vcl_init { + new backend = director(port = "8000"); +} + +sub vcl_recv { + set req.http.host = "revanced-releases-api"; + set req.backend_hint = backend.backend("revanced-releases-api"); +} \ No newline at end of file