mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
init work on CI/CD for generic beta releases, remove useless autoconf examples and fix linux postinstall script
This commit is contained in:
parent
4f2c58bd7c
commit
54a17c7752
22 changed files with 621 additions and 412 deletions
394
.github/workflows/beta.yml
vendored
Normal file
394
.github/workflows/beta.yml
vendored
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
name: Automatic push (BETA)
|
||||
|
||||
permissions: read-all
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [beta]
|
||||
|
||||
jobs:
|
||||
# Build BW amd64 + i386 images
|
||||
build-bw-amd64:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/amd64
|
||||
IMAGE: bunkerweb
|
||||
DOCKERFILE: src/bw/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-bw-386:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/386
|
||||
IMAGE: bunkerweb
|
||||
DOCKERFILE: src/bw/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Build SC amd64 + i386 images
|
||||
build-sc-amd64:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/amd64
|
||||
IMAGE: scheduler
|
||||
DOCKERFILE: src/scheduler/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-sc-386:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/386
|
||||
IMAGE: scheduler
|
||||
DOCKERFILE: src/scheduler/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Build AU amd64 + i386 images
|
||||
build-au-amd64:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/amd64
|
||||
IMAGE: autoconf
|
||||
DOCKERFILE: src/autoconf/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-au-386:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/386
|
||||
IMAGE: autoconf
|
||||
DOCKERFILE: src/autoconf/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Build UI amd64 + i386 images
|
||||
build-ui-amd64:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/amd64
|
||||
IMAGE: ui
|
||||
DOCKERFILE: src/ui/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-ui-386:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/386
|
||||
IMAGE: ui
|
||||
DOCKERFILE: src/ui/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Build arm64 + arm/v7 images
|
||||
build-bw-arm:
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/arm64,linux/arm/v7
|
||||
IMAGE: bunkerweb
|
||||
DOCKERFILE: src/bw/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-sc-arm:
|
||||
needs: ["build-bw-arm"]
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/arm64,linux/arm/v7
|
||||
IMAGE: scheduler
|
||||
DOCKERFILE: src/scheduler/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-au-arm:
|
||||
needs: ["build-sc-arm"]
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/arm64,linux/arm/v7
|
||||
IMAGE: autoconf
|
||||
DOCKERFILE: src/autoconf/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-ui-arm:
|
||||
needs: ["build-au-arm"]
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
ARCH: linux/arm64,linux/arm/v7
|
||||
IMAGE: ui
|
||||
DOCKERFILE: src/ui/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Linux packages
|
||||
build-ubuntu:
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
LINUX: ubuntu
|
||||
PACKAGE: deb
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-debian:
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
LINUX: debian
|
||||
PACKAGE: deb
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# build-centos:
|
||||
# uses: ./.github/workflows/linux-build.yml
|
||||
# with:
|
||||
# RELEASE: beta
|
||||
# LINUX: centos
|
||||
# PACKAGE: rpm
|
||||
# secrets:
|
||||
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
# DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-fedora:
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
LINUX: fedora
|
||||
PACKAGE: rpm
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-rhel:
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: beta
|
||||
LINUX: rhel
|
||||
PACKAGE: rpm
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Wait for all builds and extract VERSION
|
||||
wait-builds:
|
||||
needs: [
|
||||
build-bw-amd64, build-bw-386,
|
||||
build-sc-amd64, build-sc-386,
|
||||
build-au-amd64, build-au-386,
|
||||
build-ui-amd64, build-ui-386,
|
||||
build-ui-arm,
|
||||
build-ubuntu,
|
||||
build-debian,
|
||||
build-fedora,
|
||||
build-rhel
|
||||
]
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
- name: Get VERSION
|
||||
id: getversion
|
||||
run: echo "::set-output name=version::$(cat src/VERSION | tr -d '\n')"
|
||||
|
||||
# Push Docker images
|
||||
push-bunkerweb:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-docker.yml
|
||||
with:
|
||||
IMAGE: bunkerity/bunkerweb:beta,bunkerity/bunkerweb:${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
CACHE_FROM: bunkerweb-beta
|
||||
DOCKERFILE: src/bw/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
ARM_SSH_KEY: ${{ secrets.ARM_SSH_KEY }}
|
||||
ARM_SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }}
|
||||
push-scheduler:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-docker.yml
|
||||
with:
|
||||
IMAGE: bunkerity/bunkerweb-scheduler:beta,bunkerity/bunkerweb-scheduler:${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
CACHE_FROM: scheduler-beta
|
||||
DOCKERFILE: src/scheduler/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
ARM_SSH_KEY: ${{ secrets.ARM_SSH_KEY }}
|
||||
ARM_SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }}
|
||||
push-autoconf:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-docker.yml
|
||||
with:
|
||||
IMAGE: bunkerity/bunkerweb-autoconf:beta,bunkerity/bunkerweb-autoconf:${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
CACHE_FROM: autoconf-beta
|
||||
DOCKERFILE: src/autoconf/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
ARM_SSH_KEY: ${{ secrets.ARM_SSH_KEY }}
|
||||
ARM_SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }}
|
||||
push-ui:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-docker.yml
|
||||
with:
|
||||
IMAGE: bunkerity/bunkerweb-ui:beta,bunkerity/bunkerweb-ui:${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
CACHE_FROM: ui-beta
|
||||
DOCKERFILE: src/ui/Dockerfile
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
ARM_SSH_KEY: ${{ secrets.ARM_SSH_KEY }}
|
||||
ARM_SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }}
|
||||
|
||||
# Push Linux packages
|
||||
push-ubuntu:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-packagecloud.yml
|
||||
with:
|
||||
SEPARATOR: _
|
||||
SUFFIX: amd64
|
||||
REPO: bunkerweb
|
||||
LINUX: ubuntu
|
||||
VERSION: jammy
|
||||
PACKAGE: deb
|
||||
BW_VERSION: ${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
secrets:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
push-debian:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-packagecloud.yml
|
||||
with:
|
||||
SEPARATOR: _
|
||||
SUFFIX: amd64
|
||||
REPO: bunkerweb
|
||||
LINUX: debian
|
||||
VERSION: bullseye
|
||||
PACKAGE: deb
|
||||
BW_VERSION: ${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
secrets:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
push-rhel:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/staging-push-packagecloud.yml
|
||||
with:
|
||||
SEPARATOR: "-"
|
||||
SUFFIX: 1.x86_64
|
||||
REPO: bunkerweb
|
||||
LINUX: el
|
||||
VERSION: 8
|
||||
PACKAGE: rpm
|
||||
BW_VERSION: ${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
secrets:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
push-fedora:
|
||||
needs: [wait-builds]
|
||||
uses: ./.github/workflows/push-packagecloud.yml
|
||||
with:
|
||||
SEPARATOR: "-"
|
||||
SUFFIX: 1.x86_64
|
||||
REPO: bunkerweb
|
||||
LINUX: fedora
|
||||
VERSION: 37
|
||||
PACKAGE: rpm
|
||||
BW_VERSION: ${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
secrets:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
|
||||
# Create tag + release + discussion
|
||||
publish-beta:
|
||||
needs: [
|
||||
push-bunkerweb,
|
||||
push-scheduler,
|
||||
push-autoconf,
|
||||
push-ui,
|
||||
push-ubuntu,
|
||||
push-debian,
|
||||
push-rhel,
|
||||
push-fedora
|
||||
]
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: rickstaa/action-create-tag@v1
|
||||
name: Create tag
|
||||
with:
|
||||
tag: "v${{ jobs.wait-builds.steps.getversion.outputs.version }}"
|
||||
message: "v${{ jobs.wait-builds.steps.getversion.outputs.version }}"
|
||||
- name: Extract changelog
|
||||
id: getchangelog
|
||||
run: echo "::set-output name=content::$(awk -v n=2 '/##/{n--}; n > 0' CHANGELOG.md | grep -v '# Changelog' | grep -v '##' | sed '/^$/d')"
|
||||
- name: Create release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body: |
|
||||
Documentation : https://docs.bunkerweb.io/${{ jobs.wait-builds.steps.getversion.outputs.version }}/
|
||||
|
||||
Docker tags :
|
||||
- `bunkerity/bunkerweb:${{ jobs.wait-builds.steps.getversion.outputs.version }}`
|
||||
- `bunkerity/bunkerweb-scheduler:${{ jobs.wait-builds.steps.getversion.outputs.version }}`
|
||||
- `bunkerity/bunkerweb-autoconf:${{ jobs.wait-builds.steps.getversion.outputs.version }}`
|
||||
- `bunkerity/bunkerweb-ui:${{ jobs.wait-builds.steps.getversion.outputs.version }}`
|
||||
|
||||
Linux packages : https://packagecloud.io/app/bunkerity/bunkerweb/search?q=${{ jobs.wait-builds.steps.getversion.outputs.version }}&filter=all&dist=
|
||||
|
||||
Changelog :
|
||||
${{steps.getchangelog.outputs.content}}
|
||||
draft: false
|
||||
prerelease: true
|
||||
name: v${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
tag_name: v${{ jobs.wait-builds.steps.getversion.outputs.version }}
|
||||
discussion_category_name: Announcements
|
||||
|
||||
|
||||
|
|
@ -1,8 +1,14 @@
|
|||
name: Build staging container (REUSABLE)
|
||||
name: Build container (REUSABLE)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
RELEASE:
|
||||
required: true
|
||||
type: string
|
||||
ARCH:
|
||||
require: true
|
||||
type: string
|
||||
IMAGE:
|
||||
required: true
|
||||
type: string
|
||||
|
|
@ -39,17 +45,29 @@ jobs:
|
|||
registry: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
username: registry
|
||||
password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# Build image
|
||||
- name: Build container for amd64
|
||||
# Build staging image
|
||||
- name: Build image
|
||||
if: inputs.RELEASE == 'staging'
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
file: ${{ inputs.DOCKERFILE }}
|
||||
platforms: linux/amd64
|
||||
platforms: ${{ inputs.ARCH }}
|
||||
load: true
|
||||
tags: local/${{ inputs.IMAGE }}
|
||||
cache-from: type=registry,ref=bunkerity/cache:${{ inputs.IMAGE }}-staging
|
||||
cache-to: type=registry,ref=bunkerity/cache:${{ inputs.IMAGE }}-staging,mode=min
|
||||
# Build non-staging image
|
||||
- name: Build image
|
||||
if: inputs.RELEASE != 'staging'
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
file: ${{ inputs.DOCKERFILE }}
|
||||
platforms: ${{ inputs.ARCH }}
|
||||
load: true
|
||||
tags: local/${{ inputs.IMAGE }}
|
||||
cache-to: type=registry,ref=bunkerity/cache:${{ inputs.IMAGE }}-${{ inputs.RELEASE }}-${{ inputs.ARCH }},mode=min
|
||||
# Check OS vulnerabilities
|
||||
- name: Check OS vulnerabilities
|
||||
uses: aquasecurity/trivy-action@master
|
||||
|
|
@ -63,4 +81,7 @@ jobs:
|
|||
trivyignores: .trivyignore
|
||||
# Push image
|
||||
- name: Push image
|
||||
run: docker tag local/${{ inputs.IMAGE }} ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.IMAGE }}-tests:staging && docker push ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.IMAGE }}-tests:staging
|
||||
if: inputs.RELEASE == 'staging'
|
||||
run: docker tag local/${{ inputs.IMAGE }} ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.IMAGE }}-tests:$TAG && docker push ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.IMAGE }}-tests:$TAG
|
||||
env:
|
||||
TAG: "${{ inputs.RELEASE }}"
|
||||
2
.github/workflows/dev.yml
vendored
2
.github/workflows/dev.yml
vendored
|
|
@ -1,5 +1,7 @@
|
|||
name: Automatic tests (DEV)
|
||||
|
||||
permissions: read-all
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [dev]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
name: Build staging Linux package (REUSABLE)
|
||||
name: Build Linux package (REUSABLE)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
RELEASE:
|
||||
required: true
|
||||
type: string
|
||||
LINUX:
|
||||
required: true
|
||||
type: string
|
||||
|
|
@ -39,8 +42,9 @@ jobs:
|
|||
registry: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
username: registry
|
||||
password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# Build package image
|
||||
# Build staging package image
|
||||
- name: Build package image
|
||||
if: inputs.RELEASE == 'staging'
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
|
|
@ -50,6 +54,16 @@ jobs:
|
|||
tags: local/bunkerweb-${{ inputs.LINUX }}:latest
|
||||
cache-from: type=registry,ref=bunkerity/cache:${{ inputs.LINUX }}-staging
|
||||
cache-to: type=registry,ref=bunkerity/cache:${{ inputs.LINUX }}-staging,mode=min
|
||||
# Build non-staging package image
|
||||
- name: Build package image
|
||||
if: inputs.RELEASE != 'staging'
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
load: true
|
||||
file: src/linux/Dockerfile-${{ inputs.LINUX }}
|
||||
platforms: linux/amd64
|
||||
tags: local/bunkerweb-${{ inputs.LINUX }}:latest
|
||||
# Generate package
|
||||
- name: Generate package
|
||||
run: ./src/linux/package.sh ${{ inputs.LINUX }}
|
||||
|
|
@ -65,4 +79,4 @@ jobs:
|
|||
file: tests/linux/Dockerfile-${{ inputs.LINUX }}
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.LINUX }}-tests:staging
|
||||
tags: ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.LINUX }}-tests:${{ inputs.RELEASE }}
|
||||
67
.github/workflows/push-docker.yml
vendored
Normal file
67
.github/workflows/push-docker.yml
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
name: Push image (REUSABLE)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
IMAGE:
|
||||
required: true
|
||||
type: string
|
||||
CACHE_FROM:
|
||||
required: true
|
||||
type: string
|
||||
DOCKERFILE:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
DOCKER_USERNAME:
|
||||
required: true
|
||||
DOCKER_TOKEN:
|
||||
required: true
|
||||
ARM_SSH_KEY:
|
||||
required: true
|
||||
ARM_SSH_CONFIG:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Prepare
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
- name: Setup Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
- name: Setup SSH for ARM node
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "$SSH_KEY" > ~/.ssh/id_rsa_arm
|
||||
chmod 600 ~/.ssh/id_rsa_arm
|
||||
echo "$SSH_CONFIG" > ~/.ssh/config
|
||||
env:
|
||||
SSH_KEY: ${{ secrets.ARM_SSH_KEY }}
|
||||
SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }}
|
||||
- name: Append ARM node to buildx
|
||||
run: |
|
||||
docker buildx create --append --name ${{ steps.buildx.outputs.name }} --node arm --platform linux/arm64,linux/arm/v7,linux/arm/v6 ssh://ubuntu@arm
|
||||
# Build and push
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
file: ${{ inputs.DOCKERFILE }}
|
||||
platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
tags: ${{ inputs.IMAGE }}
|
||||
cache-from: |
|
||||
type=registry,ref=bunkerity/cache:${{ inputs.CACHE_FROM }}-amd64
|
||||
type=registry,ref=bunkerity/cache:${{ inputs.CACHE_FROM }}-386
|
||||
type=registry,ref=bunkerity/cache:${{ inputs.CACHE_FROM }}-arm
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
name: Push staging packagecloud (REUSABLE)
|
||||
name: Push packagecloud (REUSABLE)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
|
@ -21,6 +21,9 @@ on:
|
|||
PACKAGE:
|
||||
required: true
|
||||
type: string
|
||||
BW_VERSION:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
PACKAGECLOUD_TOKEN:
|
||||
required: true
|
||||
|
|
@ -32,10 +35,6 @@ jobs:
|
|||
# Prepare
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set variables
|
||||
run: |
|
||||
VER=$(cat src/VERSION | tr -d '\n')
|
||||
echo "VERSION=$VER" >> $GITHUB_ENV
|
||||
- name: Install ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
|
|
@ -49,7 +48,7 @@ jobs:
|
|||
path: /tmp/${{ inputs.LINUX }}
|
||||
# Remove existing packages
|
||||
- name: Remove existing package
|
||||
run: package_cloud yank bunkerity/${{ inputs.REPO }}/${{ inputs.LINUX }}/${{ inputs.VERSION }} bunkerweb${{ inputs.SEPARATOR }}${{ env.VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}.${{ inputs.PACKAGE }}
|
||||
run: package_cloud yank bunkerity/${{ inputs.REPO }}/${{ inputs.LINUX }}/${{ inputs.VERSION }} bunkerweb${{ inputs.SEPARATOR }}${{ inputs.BW_VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}.${{ inputs.PACKAGE }}
|
||||
continue-on-error: true
|
||||
env:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
|
|
@ -57,7 +56,7 @@ jobs:
|
|||
- name: Push package to packagecloud
|
||||
uses: danielmundi/upload-packagecloud@v1
|
||||
with:
|
||||
PACKAGE-NAME: /tmp/${{ inputs.LINUX }}/bunkerweb${{ inputs.SEPARATOR }}${{ env.VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}.${{ inputs.PACKAGE }}
|
||||
PACKAGE-NAME: /tmp/${{ inputs.LINUX }}/bunkerweb${{ inputs.SEPARATOR }}${{ inputs.BW_VERSION }}${{ inputs.SEPARATOR }}${{ inputs.SUFFIX }}.${{ inputs.PACKAGE }}
|
||||
PACKAGECLOUD-USERNAME: bunkerity
|
||||
PACKAGECLOUD-REPO: ${{ inputs.REPO }}
|
||||
PACKAGECLOUD-DISTRIB: ${{ inputs.LINUX }}/${{ inputs.VERSION }}
|
||||
40
.github/workflows/staging-push-docker.yml
vendored
40
.github/workflows/staging-push-docker.yml
vendored
|
|
@ -1,40 +0,0 @@
|
|||
name: Push staging container (REUSABLE)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
PRIVATE_IMAGE:
|
||||
required: true
|
||||
type: string
|
||||
PUBLIC_IMAGE:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
DOCKER_USERNAME:
|
||||
required: true
|
||||
DOCKER_TOKEN:
|
||||
required: true
|
||||
PRIVATE_REGISTRY:
|
||||
required: true
|
||||
PRIVATE_REGISTRY_TOKEN:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Prepare
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
- name: Login to private repository
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
username: registry
|
||||
password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# Push
|
||||
- name: Push bunkerweb
|
||||
run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.PRIVATE_IMAGE }} && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/${{ inputs.PRIVATE_IMAGE }} bunkerity/${{ inputs.PUBLIC_IMAGE }} && docker push bunkerity/${{ inputs.PUBLIC_IMAGE }}
|
||||
265
.github/workflows/staging.yml
vendored
265
.github/workflows/staging.yml
vendored
|
|
@ -1,4 +1,6 @@
|
|||
name: Automatic build, test and deploy (STAGING)
|
||||
name: Automatic tests (STAGING)
|
||||
|
||||
permissions: read-all
|
||||
|
||||
on:
|
||||
push:
|
||||
|
|
@ -7,8 +9,10 @@ on:
|
|||
jobs:
|
||||
# Containers
|
||||
build-bw:
|
||||
uses: ./.github/workflows/staging-container-build.yml
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
ARCH: linux/amd64
|
||||
IMAGE: bunkerweb
|
||||
DOCKERFILE: src/bw/Dockerfile
|
||||
secrets:
|
||||
|
|
@ -17,8 +21,10 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-scheduler:
|
||||
uses: ./.github/workflows/staging-container-build.yml
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
ARCH: linux/amd64
|
||||
IMAGE: scheduler
|
||||
DOCKERFILE: src/scheduler/Dockerfile
|
||||
secrets:
|
||||
|
|
@ -27,8 +33,10 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-autoconf:
|
||||
uses: ./.github/workflows/staging-container-build.yml
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
ARCH: linux/amd64
|
||||
IMAGE: autoconf
|
||||
DOCKERFILE: src/autoconf/Dockerfile
|
||||
secrets:
|
||||
|
|
@ -37,8 +45,10 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-ui:
|
||||
uses: ./.github/workflows/staging-container-build.yml
|
||||
uses: ./.github/workflows/container-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
ARCH: linux/amd64
|
||||
IMAGE: ui
|
||||
DOCKERFILE: src/ui/Dockerfile
|
||||
secrets:
|
||||
|
|
@ -49,8 +59,9 @@ jobs:
|
|||
|
||||
# Linux
|
||||
build-ubuntu:
|
||||
uses: ./.github/workflows/staging-linux-build.yml
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
LINUX: ubuntu
|
||||
PACKAGE: deb
|
||||
secrets:
|
||||
|
|
@ -59,8 +70,9 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-debian:
|
||||
uses: ./.github/workflows/staging-linux-build.yml
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
LINUX: debian
|
||||
PACKAGE: deb
|
||||
secrets:
|
||||
|
|
@ -69,8 +81,9 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# build-centos:
|
||||
# uses: ./.github/workflows/staging-linux-build.yml
|
||||
# uses: ./.github/workflows/linux-build.yml
|
||||
# with:
|
||||
# RELEASE: staging
|
||||
# LINUX: centos
|
||||
# PACKAGE: rpm
|
||||
# secrets:
|
||||
|
|
@ -79,8 +92,9 @@ jobs:
|
|||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-fedora:
|
||||
uses: ./.github/workflows/staging-linux-build.yml
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
LINUX: fedora
|
||||
PACKAGE: rpm
|
||||
secrets:
|
||||
|
|
@ -89,8 +103,9 @@ jobs:
|
|||
PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
build-rhel:
|
||||
uses: ./.github/workflows/staging-linux-build.yml
|
||||
uses: ./.github/workflows/linux-build.yml
|
||||
with:
|
||||
RELEASE: staging
|
||||
LINUX: rhel
|
||||
PACKAGE: rpm
|
||||
secrets:
|
||||
|
|
@ -124,13 +139,13 @@ jobs:
|
|||
category: "/language:${{matrix.language}}"
|
||||
|
||||
# Create infrastructures
|
||||
create-infra-docker:
|
||||
needs: [code-security, build-bw, build-scheduler]
|
||||
uses: ./.github/workflows/staging-create-infra.yml
|
||||
with:
|
||||
TYPE: docker
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# create-infra-docker:
|
||||
# needs: [code-security, build-bw, build-scheduler]
|
||||
# uses: ./.github/workflows/staging-create-infra.yml
|
||||
# with:
|
||||
# TYPE: docker
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
create-infra-autoconf:
|
||||
needs: [code-security, build-bw, build-scheduler, build-autoconf]
|
||||
uses: ./.github/workflows/staging-create-infra.yml
|
||||
|
|
@ -138,20 +153,20 @@ jobs:
|
|||
TYPE: autoconf
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
create-infra-swarm:
|
||||
needs: [code-security, build-bw, build-scheduler, build-autoconf]
|
||||
uses: ./.github/workflows/staging-create-infra.yml
|
||||
with:
|
||||
TYPE: swarm
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
create-infra-k8s:
|
||||
needs: [code-security, build-bw, build-scheduler, build-autoconf]
|
||||
uses: ./.github/workflows/staging-create-infra.yml
|
||||
with:
|
||||
TYPE: k8s
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# create-infra-swarm:
|
||||
# needs: [code-security, build-bw, build-scheduler, build-autoconf]
|
||||
# uses: ./.github/workflows/staging-create-infra.yml
|
||||
# with:
|
||||
# TYPE: swarm
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# create-infra-k8s:
|
||||
# needs: [code-security, build-bw, build-scheduler, build-autoconf]
|
||||
# uses: ./.github/workflows/staging-create-infra.yml
|
||||
# with:
|
||||
# TYPE: k8s
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
create-infra-linux:
|
||||
needs:
|
||||
[
|
||||
|
|
@ -168,13 +183,13 @@ jobs:
|
|||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
|
||||
# Perform tests
|
||||
tests-docker:
|
||||
needs: [create-infra-docker]
|
||||
uses: ./.github/workflows/staging-tests.yml
|
||||
with:
|
||||
TYPE: docker
|
||||
RUNS_ON: "['self-hosted', 'bw-docker']"
|
||||
secrets: inherit
|
||||
# tests-docker:
|
||||
# needs: [create-infra-docker]
|
||||
# uses: ./.github/workflows/staging-tests.yml
|
||||
# with:
|
||||
# TYPE: docker
|
||||
# RUNS_ON: "['self-hosted', 'bw-docker']"
|
||||
# secrets: inherit
|
||||
tests-autoconf:
|
||||
needs: [create-infra-autoconf]
|
||||
uses: ./.github/workflows/staging-tests.yml
|
||||
|
|
@ -182,20 +197,20 @@ jobs:
|
|||
TYPE: autoconf
|
||||
RUNS_ON: "['self-hosted', 'bw-autoconf']"
|
||||
secrets: inherit
|
||||
tests-swarm:
|
||||
needs: [create-infra-swarm]
|
||||
uses: ./.github/workflows/staging-tests.yml
|
||||
with:
|
||||
TYPE: swarm
|
||||
RUNS_ON: "['self-hosted', 'bw-swarm']"
|
||||
secrets: inherit
|
||||
tests-k8s:
|
||||
needs: [create-infra-k8s]
|
||||
uses: ./.github/workflows/staging-tests.yml
|
||||
with:
|
||||
TYPE: k8s
|
||||
RUNS_ON: "['ubuntu-latest']"
|
||||
secrets: inherit
|
||||
# tests-swarm:
|
||||
# needs: [create-infra-swarm]
|
||||
# uses: ./.github/workflows/staging-tests.yml
|
||||
# with:
|
||||
# TYPE: swarm
|
||||
# RUNS_ON: "['self-hosted', 'bw-swarm']"
|
||||
# secrets: inherit
|
||||
# tests-k8s:
|
||||
# needs: [create-infra-k8s]
|
||||
# uses: ./.github/workflows/staging-tests.yml
|
||||
# with:
|
||||
# TYPE: k8s
|
||||
# RUNS_ON: "['ubuntu-latest']"
|
||||
# secrets: inherit
|
||||
tests-linux:
|
||||
needs: [create-infra-linux]
|
||||
uses: ./.github/workflows/staging-tests.yml
|
||||
|
|
@ -213,14 +228,14 @@ jobs:
|
|||
PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# Delete infrastructures
|
||||
delete-infra-docker:
|
||||
if: ${{ always() }}
|
||||
needs: [tests-docker]
|
||||
uses: ./.github/workflows/staging-delete-infra.yml
|
||||
with:
|
||||
TYPE: docker
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# delete-infra-docker:
|
||||
# if: ${{ always() }}
|
||||
# needs: [tests-docker]
|
||||
# uses: ./.github/workflows/staging-delete-infra.yml
|
||||
# with:
|
||||
# TYPE: docker
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
delete-infra-autoconf:
|
||||
if: ${{ always() }}
|
||||
needs: [tests-autoconf]
|
||||
|
|
@ -229,22 +244,22 @@ jobs:
|
|||
TYPE: autoconf
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
delete-infra-swarm:
|
||||
if: ${{ always() }}
|
||||
needs: [tests-swarm]
|
||||
uses: ./.github/workflows/staging-delete-infra.yml
|
||||
with:
|
||||
TYPE: swarm
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
delete-infra-k8s:
|
||||
if: ${{ always() }}
|
||||
needs: [tests-k8s]
|
||||
uses: ./.github/workflows/staging-delete-infra.yml
|
||||
with:
|
||||
TYPE: k8s
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# delete-infra-swarm:
|
||||
# if: ${{ always() }}
|
||||
# needs: [tests-swarm]
|
||||
# uses: ./.github/workflows/staging-delete-infra.yml
|
||||
# with:
|
||||
# TYPE: swarm
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
# delete-infra-k8s:
|
||||
# if: ${{ always() }}
|
||||
# needs: [tests-k8s]
|
||||
# uses: ./.github/workflows/staging-delete-infra.yml
|
||||
# with:
|
||||
# TYPE: k8s
|
||||
# secrets:
|
||||
# CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
delete-infra-linux:
|
||||
if: ${{ always() }}
|
||||
needs: [tests-linux]
|
||||
|
|
@ -252,100 +267,4 @@ jobs:
|
|||
with:
|
||||
TYPE: linux
|
||||
secrets:
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
|
||||
# # Push containers
|
||||
# push-bunkerweb:
|
||||
# needs: [tests-docker, tests-autoconf, tests-swarm, tests-k8s, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-docker.yml
|
||||
# with:
|
||||
# PRIVATE_IMAGE: bunkerweb-tests:staging
|
||||
# PUBLIC_IMAGE: bunkerweb:beta
|
||||
# secrets:
|
||||
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
# DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# push-scheduler:
|
||||
# needs: [tests-docker, tests-autoconf, tests-swarm, tests-k8s, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-docker.yml
|
||||
# with:
|
||||
# PRIVATE_IMAGE: scheduler-tests:staging
|
||||
# PUBLIC_IMAGE: bunkerweb-scheduler:beta
|
||||
# secrets:
|
||||
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
# DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# push-autoconf:
|
||||
# needs: [tests-docker, tests-autoconf, tests-swarm, tests-k8s, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-docker.yml
|
||||
# with:
|
||||
# PRIVATE_IMAGE: autoconf-tests:staging
|
||||
# PUBLIC_IMAGE: bunkerweb-autoconf:beta
|
||||
# secrets:
|
||||
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
# DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
# push-ui:
|
||||
# needs: [tests-docker, tests-autoconf, tests-swarm, tests-k8s, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-docker.yml
|
||||
# with:
|
||||
# PRIVATE_IMAGE: ui-tests:staging
|
||||
# PUBLIC_IMAGE: bunkerweb-ui:beta
|
||||
# secrets:
|
||||
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
# DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
# PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }}
|
||||
# PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
|
||||
|
||||
# # Push Linux packages
|
||||
# push-ubuntu:
|
||||
# needs: [tests-linux, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-packagecloud.yml
|
||||
# with:
|
||||
# SEPARATOR: _
|
||||
# SUFFIX: amd64
|
||||
# REPO: bunkerweb-dev
|
||||
# LINUX: ubuntu
|
||||
# VERSION: jammy
|
||||
# PACKAGE: deb
|
||||
# secrets:
|
||||
# PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
# push-debian:
|
||||
# needs: [tests-linux, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-packagecloud.yml
|
||||
# with:
|
||||
# SEPARATOR: _
|
||||
# SUFFIX: amd64
|
||||
# REPO: bunkerweb-dev
|
||||
# LINUX: debian
|
||||
# VERSION: bullseye
|
||||
# PACKAGE: deb
|
||||
# secrets:
|
||||
# PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
# push-rhel:
|
||||
# needs: [tests-linux, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-packagecloud.yml
|
||||
# with:
|
||||
# SEPARATOR: "-"
|
||||
# SUFFIX: 1.x86_64
|
||||
# REPO: bunkerweb-dev
|
||||
# LINUX: el
|
||||
# VERSION: 8
|
||||
# PACKAGE: rpm
|
||||
# secrets:
|
||||
# PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
# push-fedora:
|
||||
# needs: [tests-linux, tests-ui]
|
||||
# uses: ./.github/workflows/staging-push-packagecloud.yml
|
||||
# with:
|
||||
# SEPARATOR: "-"
|
||||
# SUFFIX: 1.x86_64
|
||||
# REPO: bunkerweb-dev
|
||||
# LINUX: fedora
|
||||
# VERSION: 37
|
||||
# PACKAGE: rpm
|
||||
# secrets:
|
||||
# PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
CICD_SECRETS: ${{ secrets.CICD_SECRETS }}
|
||||
14
CHANGELOG.md
14
CHANGELOG.md
|
|
@ -1,5 +1,17 @@
|
|||
# Changelog
|
||||
|
||||
## v1.5.0-beta -
|
||||
|
||||
- Refactoring of almost all the components of the project
|
||||
- Dedicated scheduler service to manage jobs and configuration
|
||||
- Store configuration in a database backend
|
||||
- Improved web UI and make it working with all integrations
|
||||
- Improved internal LUA code
|
||||
- Add Redis support when using clustered integrations
|
||||
- Add RHEL integration
|
||||
- Add Vagrant integration
|
||||
- Improved CI/CD
|
||||
|
||||
## v1.4.8 - 2023/04/05
|
||||
|
||||
- Fix UI bug related to multiple settings
|
||||
|
|
@ -205,4 +217,4 @@
|
|||
- Fix default value for CONTENT_SECURITY_POLICY to allow file downloads
|
||||
- Add ROOT_SITE_SUBFOLDER environment variable
|
||||
|
||||
## TODO - retrospective changelog
|
||||
## TODO - retrospective changelog
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
version: "3"
|
||||
|
||||
services:
|
||||
myapp1:
|
||||
image: php:fpm
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp1
|
||||
# ⚠️ UID and GID of mywww (101:101) and php:fpm (33:33) are not the same ⚠️
|
||||
# but both needs access to the files and folders of web-files
|
||||
# don't forget to edit the permissions of the files and folders accordingly
|
||||
# example : chown -R 33:101 ./bw-data/www && find ./bw-data/www -type f -exec chmod 0640 {} \; && find ./bw-data/www -type d -exec chmod 0750 {} \;
|
||||
volumes:
|
||||
- ./www/app1.example.com:/app # folder containing PHP app1 (don't forget to rename it)
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app1.example.com" # replace with your domain
|
||||
- "bunkerweb.REMOTE_PHP=myapp1"
|
||||
- "bunkerweb.REMOTE_PHP_PATH=/app"
|
||||
|
||||
myapp2:
|
||||
image: php:fpm
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp2
|
||||
# ⚠️ UID and GID of BunkerWeb (101:101) and php:fpm (33:33) are not the same ⚠️
|
||||
# but both needs access to the files and folders of web-files
|
||||
# don't forget to edit the permissions of the files and folders accordingly
|
||||
# example : chown -R 33:101 ./www && find ./www -type f -exec chmod 0640 {} \; && find ./www -type d -exec chmod 0750 {} \;
|
||||
volumes:
|
||||
- ./www/app2.example.com:/app # folder containing PHP app2 (don't forget to rename it)
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app2.example.com" # replace with your domain
|
||||
- "bunkerweb.REMOTE_PHP=myapp2"
|
||||
- "bunkerweb.REMOTE_PHP_PATH=/app"
|
||||
|
||||
myapp3:
|
||||
image: php:fpm
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp3
|
||||
# ⚠️ UID and GID of BunkerWeb (101:101) and php:fpm (33:33) are not the same ⚠️
|
||||
# but both needs access to the files and folders of web-files
|
||||
# don't forget to edit the permissions of the files and folders accordingly
|
||||
# example : chown -R 33:101 ./www && find ./www -type f -exec chmod 0640 {} \; && find ./www -type d -exec chmod 0750 {} \;
|
||||
volumes:
|
||||
- ./www/app3.example.com:/app # folder containing PHP app3 (don't forget to rename it)
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app3.example.com" # replace with your domain
|
||||
- "bunkerweb.REMOTE_PHP=myapp3"
|
||||
- "bunkerweb.REMOTE_PHP_PATH=/app"
|
||||
|
||||
networks:
|
||||
bw-services:
|
||||
external:
|
||||
name: bw-services
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $(id -u) -ne 0 ] ; then
|
||||
echo "❌ Run me as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chown -R 101:33 ./www
|
||||
find ./www -type f -exec chmod 0660 {} \;
|
||||
find ./www -type d -exec chmod 0770 {} \;
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "autoconf-php",
|
||||
"kinds": ["autoconf"],
|
||||
"timeout": 60,
|
||||
"tests": [
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app1.example.com",
|
||||
"string": "app1"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app2.example.com",
|
||||
"string": "app2"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app3.example.com",
|
||||
"string": "app3"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
echo "Hello from app1 !";
|
||||
|
||||
?>
|
||||
|
||||
<script src="/js/script.js"></script>
|
||||
|
|
@ -1 +0,0 @@
|
|||
alert("JavaScript is working!");
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
echo "Hello from app2 !";
|
||||
|
||||
?>
|
||||
|
||||
<script src="/js/script.js"></script>
|
||||
|
|
@ -1 +0,0 @@
|
|||
alert("JavaScript is working!");
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
echo "Hello from app3 !";
|
||||
|
||||
?>
|
||||
|
||||
<script src="/js/script.js"></script>
|
||||
|
|
@ -1 +0,0 @@
|
|||
alert("JavaScript is working!");
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
version: "3"
|
||||
|
||||
services:
|
||||
myapp1:
|
||||
image: tutum/hello-world
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp1
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app1.example.com" # replace with your domain
|
||||
- "bunkerweb.USE_REVERSE_PROXY=yes"
|
||||
- "bunkerweb.REVERSE_PROXY_URL=/"
|
||||
- "bunkerweb.REVERSE_PROXY_HOST=http://myapp1"
|
||||
|
||||
myapp2:
|
||||
image: tutum/hello-world
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp2
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app2.example.com" # replace with your domain
|
||||
- "bunkerweb.USE_REVERSE_PROXY=yes"
|
||||
- "bunkerweb.REVERSE_PROXY_URL=/"
|
||||
- "bunkerweb.REVERSE_PROXY_HOST=http://myapp2"
|
||||
|
||||
myapp3:
|
||||
image: tutum/hello-world
|
||||
networks:
|
||||
bw-services:
|
||||
aliases:
|
||||
- myapp3
|
||||
labels:
|
||||
- "bunkerweb.SERVER_NAME=app3.example.com" # replace with your domain
|
||||
- "bunkerweb.USE_REVERSE_PROXY=yes"
|
||||
- "bunkerweb.REVERSE_PROXY_URL=/"
|
||||
- "bunkerweb.REVERSE_PROXY_HOST=http://myapp3"
|
||||
|
||||
networks:
|
||||
bw-services:
|
||||
external:
|
||||
name: bw-services
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "autoconf-reverse-proxy",
|
||||
"kinds": ["autoconf"],
|
||||
"timeout": 60,
|
||||
"tests": [
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app1.example.com",
|
||||
"string": "hello"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app2.example.com",
|
||||
"string": "hello"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"url": "https://app3.example.com",
|
||||
"string": "hello"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -96,17 +96,17 @@ else
|
|||
fi
|
||||
|
||||
# Create letsencrypt folders if needed
|
||||
if [ ! -d /etc/letsencrypt ]
|
||||
if [ ! -d /etc/letsencrypt ] ; then
|
||||
mkdir /etc/letsencrypt
|
||||
chown nginx:nginx /etc/letsencrypt
|
||||
chmod 770 /etc/letsencrypt
|
||||
fi
|
||||
if [ ! -d /var/lib/letsencrypt ]
|
||||
if [ ! -d /var/lib/letsencrypt ] ; then
|
||||
mkdir /var/lib/letsencrypt
|
||||
chown nginx:nginx /var/lib/letsencrypt
|
||||
chmod 770 /var/lib/letsencrypt
|
||||
fi
|
||||
if [ ! -d /var/log/letsencrypt ]
|
||||
if [ ! -d /var/log/letsencrypt ] ; then
|
||||
mkdir /var/log/letsencrypt
|
||||
chown nginx:nginx /var/log/letsencrypt
|
||||
chmod 770 /var/log/letsencrypt
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ class AutoconfTest(Test):
|
|||
shell=True,
|
||||
)
|
||||
if proc.returncode != 0:
|
||||
raise (Exception("cp bw-data failed"))
|
||||
raise (Exception("rm /tmp/www/* failed"))
|
||||
super()._cleanup_test()
|
||||
except:
|
||||
log(
|
||||
|
|
|
|||
Loading…
Reference in a new issue