diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 5eaea0c4a..df1dcf423 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -90,9 +90,9 @@ jobs: registry: ${{ secrets.PRIVATE_REGISTRY }} username: registry password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }} - # Build staging package image + # Build testing package image - name: Build package image - if: inputs.RELEASE == 'staging' + if: inputs.RELEASE == 'testing' uses: docker/build-push-action@v3 with: context: . @@ -100,11 +100,11 @@ jobs: file: src/linux/Dockerfile-${{ inputs.LINUX }} platforms: ${{ inputs.PLATFORMS }} 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 + cache-from: type=registry,ref=bunkerity/cache:${{ inputs.LINUX }}-testing + cache-to: type=registry,ref=bunkerity/cache:${{ inputs.LINUX }}-testing,mode=min + # Build non-testing package image - name: Build package image - if: inputs.RELEASE != 'staging' + if: inputs.RELEASE != 'testing' uses: docker/build-push-action@v3 with: context: . diff --git a/.github/workflows/push-github.yml b/.github/workflows/push-github.yml index 3490143ef..d57ea9d33 100644 --- a/.github/workflows/push-github.yml +++ b/.github/workflows/push-github.yml @@ -18,18 +18,29 @@ jobs: - uses: actions/checkout@v3 # Get PDF doc - name: Get documentation + if: inputs.VERSION != "testing" uses: actions/download-artifact@v3 with: name: BunkerWeb_documentation_v${{ inputs.VERSION }}.pdf # Create tag - uses: rickstaa/action-create-tag@v1 name: Create tag + if: inputs.VERSION != "testing" with: tag: "v${{ inputs.VERSION }}" message: "v${{ inputs.VERSION }}" force_push_tag: true + # Create tag + - uses: rickstaa/action-create-tag@v1 + name: Create tag + if: inputs.VERSION == "testing" + with: + tag: "${{ inputs.VERSION }}" + message: "${{ inputs.VERSION }}" + force_push_tag: true # Extract changelog - name: Extract changelog + if: inputs.VERSION != "testing" id: getchangelog run: | content=$(awk -v n=2 '/##/{n--}; n > 0' CHANGELOG.md | grep -v '# Changelog' | grep -v '##' | sed '/^$/d') @@ -39,6 +50,7 @@ jobs: echo "::set-output name=content::$content" # Create release - name: Create release + if: inputs.VERSION != "testing" uses: softprops/action-gh-release@v1 with: body: | @@ -60,4 +72,25 @@ jobs: tag_name: v${{ inputs.VERSION }} discussion_category_name: Announcements files: BunkerWeb_documentation_v${{ inputs.VERSION }}.pdf + # Create release + - name: Create release + if: inputs.VERSION == "testing" + uses: softprops/action-gh-release@v1 + with: + body: | + **The testing version of BunkerWeb should not be used in production, please use the latest stable version instead.** + + Documentation : https://docs.bunkerweb.io/${{ inputs.VERSION }}/ + + Docker tags : + - `bunkerity/bunkerweb:${{ inputs.VERSION }}` + - `bunkerity/bunkerweb-scheduler:${{ inputs.VERSION }}` + - `bunkerity/bunkerweb-autoconf:${{ inputs.VERSION }}` + - `bunkerity/bunkerweb-ui:${{ inputs.VERSION }}` + + Linux packages : https://packagecloud.io/app/bunkerity/bunkerweb/search?q=${{ inputs.VERSION }}&filter=all&dist= + draft: false + prerelease: ${{ inputs.PRERELEASE }} + name: Testing + tag_name: ${{ inputs.VERSION }} diff --git a/.github/workflows/staging-tests.yml b/.github/workflows/staging-tests.yml index 5248e340e..c642bae62 100644 --- a/.github/workflows/staging-tests.yml +++ b/.github/workflows/staging-tests.yml @@ -33,13 +33,13 @@ jobs: username: registry password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }} - name: Pull BW image - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:staging local/bunkerweb-tests:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:testing local/bunkerweb-tests:latest if: contains(fromJSON('["linux", "k8s"]'), inputs.TYPE) != true - name: Pull Scheduler image - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:staging local/scheduler-tests:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:testing local/scheduler-tests:latest if: contains(fromJSON('["linux", "k8s"]'), inputs.TYPE) != true - name: Pull Autoconf image - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:staging local/autoconf-tests:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:testing local/autoconf-tests:latest if: contains(fromJSON('["autoconf", "swarm"]'), inputs.TYPE) - name: Push images to local repo run: docker tag local/bunkerweb-tests:latest 192.168.42.100:5000/bunkerweb-tests:latest && docker push 192.168.42.100:5000/bunkerweb-tests:latest && docker tag local/scheduler-tests:latest 192.168.42.100:5000/scheduler-tests:latest && docker push 192.168.42.100:5000/scheduler-tests:latest && docker tag local/autoconf-tests:latest 192.168.42.100:5000/autoconf-tests:latest && docker push 192.168.42.100:5000/autoconf-tests:latest @@ -59,19 +59,19 @@ jobs: if: inputs.TYPE == 'k8s' - name: Pull BW linux ubuntu test image if: inputs.TYPE == 'linux' - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/ubuntu-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/ubuntu-tests:staging local/ubuntu:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/ubuntu-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/ubuntu-tests:testing local/ubuntu:latest - name: Pull BW linux debian test image if: inputs.TYPE == 'linux' - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/debian-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/debian-tests:staging local/debian:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/debian-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/debian-tests:testing local/debian:latest # - name: Pull BW linux centos test image # if: inputs.TYPE == 'linux' - # run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/centos-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/centos-tests:staging local/centos:latest + # run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/centos-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/centos-tests:testing local/centos:latest - name: Pull BW linux fedora test image if: inputs.TYPE == 'linux' - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/fedora-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/fedora-tests:staging local/fedora:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/fedora-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/fedora-tests:testing local/fedora:latest - name: Pull BW linux rhel test image if: inputs.TYPE == 'linux' - run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/rhel-tests:staging && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/rhel-tests:staging local/rhel:latest + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/rhel-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/rhel-tests:testing local/rhel:latest # Do tests - name: Run tests if: inputs.TYPE == 'docker' @@ -99,7 +99,7 @@ jobs: ROOT_DOMAIN: ${{ secrets.ROOT_DOMAIN }} KUBECONFIG: "/tmp/k8s/kubeconfig" PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }} - IMAGE_TAG: "staging" + IMAGE_TAG: "testing" - name: Run Linux ubuntu tests if: inputs.TYPE == 'linux' run: export $(echo "$TEST_DOMAINS" | xargs) && ./tests/main.py "linux" "ubuntu" diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 072b009cf..accc83e5d 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -24,7 +24,7 @@ jobs: dockerfile: src/ui/Dockerfile uses: ./.github/workflows/container-build.yml with: - RELEASE: staging + RELEASE: testing ARCH: linux/amd64 CACHE: true PUSH: true @@ -52,7 +52,7 @@ jobs: package: rpm uses: ./.github/workflows/linux-build.yml with: - RELEASE: staging + RELEASE: testing LINUX: ${{ matrix.linux }} PACKAGE: ${{ matrix.package }} TEST: true @@ -125,7 +125,7 @@ jobs: needs: [create-infras] uses: ./.github/workflows/tests-ui.yml with: - RELEASE: staging + RELEASE: testing secrets: PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }} PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }} @@ -150,7 +150,7 @@ jobs: uses: ./.github/workflows/test-core.yml with: TEST: ${{ matrix.test }} - RELEASE: staging + RELEASE: testing secrets: PRIVATE_REGISTRY: ${{ secrets.PRIVATE_REGISTRY }} PRIVATE_REGISTRY_TOKEN: ${{ secrets.PRIVATE_REGISTRY_TOKEN }} @@ -166,4 +166,108 @@ jobs: with: TYPE: ${{ matrix.type }} secrets: - CICD_SECRETS: ${{ secrets.CICD_SECRETS }} \ No newline at end of file + CICD_SECRETS: ${{ secrets.CICD_SECRETS }} + + # Push Docker images + push-images: + needs: [staging-tests, tests-ui, tests-core] + runs-on: ubuntu-latest + steps: + - 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 }} + - name: Push BW image + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/bunkerweb-tests:testing bunkerity/bunkerweb:testing && docker push bunkerity/bunkerweb:testing + - name: Push scheduler image + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/scheduler-tests:testing bunkerity/bunkerweb-scheduler:testing && docker push bunkerity/bunkerweb-scheduler:testing + - name: Push UI image + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/ui-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/ui-tests:testing bunkerity/bunkerweb-ui:testing && docker push bunkerity/bunkerweb-ui:testing + - name: Push autoconf image + run: docker pull ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:testing && docker tag ${{ secrets.PRIVATE_REGISTRY }}/infra/autoconf-tests:testing bunkerity/bunkerweb-autoconf:testing && docker push bunkerity/bunkerweb-autoconf:testing + + # Push Linux packages + push-packages: + needs: [staging-tests, tests-ui, tests-core] + strategy: + matrix: + linux: [ubuntu, debian, fedora, el] + arch: [amd64, arm64] + include: + - release: testing + repo: bunkerweb + - linux: ubuntu + separator: _ + suffix: "" + version: jammy + package: deb + - linux: debian + separator: _ + suffix: "" + version: bullseye + package: deb + - linux: fedora + separator: "-" + suffix: "1." + version: 38 + package: rpm + - linux: el + separator: "-" + suffix: "1." + version: 8 + package: rpm + - linux: ubuntu + arch: amd64 + package_arch: amd64 + - linux: debian + arch: amd64 + package_arch: amd64 + - linux: fedora + arch: amd64 + package_arch: x86_64 + - linux: el + arch: amd64 + package_arch: x86_64 + uses: ./.github/workflows/push-packagecloud.yml + with: + SEPARATOR: ${{ matrix.separator }} + SUFFIX: ${{ matrix.suffix }} + REPO: ${{ matrix.repo }} + LINUX: ${{ matrix.linux }} + VERSION: ${{ matrix.version }} + PACKAGE: ${{ matrix.package }} + BW_VERSION: ${{ matrix.release }} + PACKAGE_ARCH: ${{ matrix.package_arch }} + ARCH: ${{ matrix.arch }} + secrets: + PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }} + + # Push doc + push-doc: + needs: [push-images, push-packages] + permissions: + contents: write + uses: ./.github/workflows/push-doc.yml + with: + VERSION: testing + ALIAS: unstable + secrets: + BUNKERBOT_TOKEN: ${{ secrets.BUNKERBOT_TOKEN }} + + # Push on GH + push-gh: + needs: [push-doc] + permissions: + contents: write + discussions: write + uses: ./.github/workflows/push-github.yml + with: + VERSION: testing + PRERELEASE: true \ No newline at end of file diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 000000000..076a7bc16 --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: /latest/ + +Sitemap: https://docs.bunkerweb.io/sitemap.xml \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 534172471..cdd05b98b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -68,4 +68,6 @@ extra: plugins: - search - - print-site \ No newline at end of file + - print-site + - mike: + canonical_version: latest \ No newline at end of file