From 96b05bb47a993e6d561bfab4b65bc02b4bf77069 Mon Sep 17 00:00:00 2001
From: Felix Boerner <ich@felix-boerner.de>
Date: Sat, 13 Jan 2024 17:39:23 +0000
Subject: [PATCH] ci: reuse workflows

---
 /dev/null                     |  410 -----------------------------------------
 .github/workflows/test.yml    |   93 +++++++++
 .github/workflows/release.yml |   50 ----
 3 files changed, 95 insertions(+), 458 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 4305b4b..fdcd71c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,7 +2,7 @@
 'on':
   workflow_run:
     workflows:
-      - Tests
+      - Test
     branches:
       - master
     types:
@@ -10,51 +10,5 @@
 jobs:
   release:
     name: Release
-    runs-on: ubuntu-latest
     if: ${{ github.event.workflow_run.conclusion == 'success' }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-
-      - name: Check for Go files
-        id: check_go
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/*.go"
-
-      - name: Fetch all tags
-        if: steps.check_go.outputs.files_exists == 'true'
-        run: git fetch --force --tags
-
-      - name: Set up Go
-        if: steps.check_go.outputs.files_exists == 'true'
-        uses: actions/setup-go@v5
-        with:
-          go-version: 'stable'
-
-      - name: Install GoReleaser
-        if: steps.check_go.outputs.files_exists == 'true'
-        uses: goreleaser/goreleaser-action@v5
-        with:
-          install-only: true
-
-      - name: Set up Node.js
-        uses: actions/setup-node@v4
-        with:
-          node-version: 'lts/*'
-
-      - name: Install semantic-release
-        run: |
-          npm install -g semantic-release conventional-changelog-conventionalcommits
-
-      - name: Create Github release
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        run: |
-          if [[ "${{ steps.check_go.outputs.files_exists }}" == "true" ]]; then
-            npx -p @semantic-release/changelog -p @semantic-release/exec -p @semantic-release/git semantic-release
-          else
-            npx semantic-release
-          fi
+    uses: escalate/github-actions-workflows/.github/workflows/release-go.yml@master
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..c0830f4
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,93 @@
+name: Test
+'on':
+  push:
+    branches:
+      - master
+  pull_request:
+jobs:
+  test:
+    name: Test
+    uses: escalate/github-actions-workflows/.github/workflows/test.yml@master
+
+  hugo:
+    name: Hugo
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out repository
+        uses: actions/checkout@v4
+
+      - name: Setup Hugo
+        uses: peaceiris/actions-hugo@v2
+
+      - name: Build Hugo example site with image
+        run: |
+          cd tests/exampleSiteWithImage/
+          hugo --logLevel=info --baseURL= --themesDir=../../../
+
+      - name: Upload Hugo example site with image
+        uses: actions/upload-artifact@v4
+        with:
+          name: hugo-example-site-with-image
+          path: tests/exampleSiteWithImage/public
+
+      - name: Build Hugo example site with video
+        run: |
+          cd tests/exampleSiteWithVideo/
+          hugo --logLevel=info --baseURL= --themesDir=../../../
+
+      - name: Upload Hugo example site with video
+        uses: actions/upload-artifact@v4
+        with:
+          name: hugo-example-site-with-video
+          path: tests/exampleSiteWithVideo/public
+
+  sitespeed:
+    name: Sitespeed.io
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out repository
+        uses: actions/checkout@v4
+
+      - name: Run sitespeed.io for example site with image in desktop mode
+        run: |
+          rm --recursive --force tests/exampleSiteWithImage/sitespeed-result
+          docker compose --file tests/exampleSiteWithImage/docker-compose.desktop.yml up --exit-code-from sitespeed
+
+      - name: Upload sitespeed.io result for example site with image in desktop mode
+        uses: actions/upload-artifact@v4
+        with:
+          name: sitespeed.io-example-site-with-image-desktop
+          path: tests/exampleSiteWithImage/sitespeed-result
+
+      - name: Run sitespeed.io for example site with image in mobile mode
+        run: |
+          rm --recursive --force tests/exampleSiteWithImage/sitespeed-result
+          docker compose --file tests/exampleSiteWithImage/docker-compose.mobile.yml up --exit-code-from sitespeed
+
+      - name: Upload sitespeed.io result for example site with image in mobile mode
+        uses: actions/upload-artifact@v4
+        with:
+          name: sitespeed.io-example-site-with-image-mobile
+          path: tests/exampleSiteWithImage/sitespeed-result
+
+      - name: Run sitespeed.io for example site with video in desktop mode
+        run: |
+          rm --recursive --force tests/exampleSiteWithVideo/sitespeed-result
+          docker compose --file tests/exampleSiteWithVideo/docker-compose.desktop.yml up --exit-code-from sitespeed
+
+      - name: Upload sitespeed.io result for example site with video in desktop mode
+        uses: actions/upload-artifact@v4
+        with:
+          name: sitespeed.io-example-site-with-video-desktop
+          path: tests/exampleSiteWithVideo/sitespeed-result
+
+      - name: Run sitespeed.io for example site with video in mobile mode
+        run: |
+          rm --recursive --force tests/exampleSiteWithVideo/sitespeed-result
+          docker compose --file tests/exampleSiteWithVideo/docker-compose.mobile.yml up --exit-code-from sitespeed
+
+      - name: Upload sitespeed.io result for example site with video in mobile mode
+        uses: actions/upload-artifact@v4
+        with:
+          name: sitespeed.io-example-site-with-video-mobile
+          path: tests/exampleSiteWithVideo/sitespeed-result
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
deleted file mode 100644
index ea13836..0000000
--- a/.github/workflows/tests.yml
+++ /dev/null
@@ -1,410 +0,0 @@
-name: Tests
-'on':
-  push:
-    branches:
-      - master
-  pull_request:
-jobs:
-  commits:
-    name: Commits
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        if: github.event_name == 'pull_request'
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-
-      - name: Set up Node.js
-        if: github.event_name == 'pull_request'
-        uses: actions/setup-node@v4
-        with:
-          node-version: 'lts/*'
-
-      - name: Install commitlint
-        if: github.event_name == 'pull_request'
-        run: |
-          npm install -g @commitlint/cli @commitlint/config-conventional
-
-      - name: Run commitlint
-        if: github.event_name == 'pull_request'
-        run: |
-          npx commitlint \
-          --from "${{ github.event.pull_request.base.sha }}" \
-          --to "${{ github.event.pull_request.head.sha }}" \
-          --color \
-          --verbose
-
-  secrets:
-    name: Secrets
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-
-      - name: Install gitleaks
-        env:
-          GH_REPO: gitleaks/gitleaks
-          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-        run: |
-          gh release download --pattern "*linux_x64.tar.gz" --dir /tmp
-          tar --extract --gzip --file /tmp/*linux_x64.tar.gz --directory /tmp
-          chmod +x /tmp/gitleaks
-          mv /tmp/gitleaks /usr/local/bin/gitleaks
-
-      - name: Run gitleaks
-        run: |
-          gitleaks detect --no-banner --redact
-
-  editorconfig:
-    name: Editorconfig
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Install editorconfig-checker
-        env:
-          GH_REPO: editorconfig-checker/editorconfig-checker
-          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-        run: |
-          gh release download --pattern "*linux-amd64.tar.gz" --dir /tmp
-          tar --extract --gzip --strip-components 1 --file /tmp/ec-linux-amd64.tar.gz --directory /tmp
-          chmod +x /tmp/ec-linux-amd64
-          mv /tmp/ec-linux-amd64 /usr/local/bin/ec
-
-      - name: Run editorconfig-checker
-        run: |
-          ec
-
-  dockerfile:
-    name: Dockerfile
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Dockerfile files
-        id: check_dockerfile
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/Dockerfile*"
-
-      - name: Install hadolint
-        if: steps.check_dockerfile.outputs.files_exists == 'true'
-        env:
-          GH_REPO: hadolint/hadolint
-          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-        run: |
-          gh release download --pattern "*Linux-x86_64" --dir /tmp
-          chmod +x /tmp/hadolint-Linux-x86_64
-          mv /tmp/hadolint-Linux-x86_64 /usr/local/bin/hadolint
-
-      - name: Run hadolint
-        if: steps.check_dockerfile.outputs.files_exists == 'true'
-        run: |
-          find . -name "Dockerfile*" -not -name "Dockerfile.j2" -not -path "*/ansible_collections/*" -print0 | xargs -0 -I{} hadolint "{}"
-
-  shell:
-    name: Shell
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Shell files
-        id: check_shell
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/*.sh"
-
-      - name: Install shellcheck
-        if: steps.check_shell.outputs.files_exists == 'true'
-        env:
-          GH_REPO: koalaman/shellcheck
-          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-        run: |
-          gh release download --pattern "*linux.x86_64.tar.xz" --dir /tmp
-          tar --extract --xz --strip-components 1 --file /tmp/shellcheck-*.linux.x86_64.tar.xz --directory /tmp
-          chmod +x /tmp/shellcheck
-          mv /tmp/shellcheck /usr/local/bin/shellcheck
-
-      - name: Run shellcheck
-        if: steps.check_shell.outputs.files_exists == 'true'
-        run: |
-          find . -name "*.sh" -not -path "*/ansible_collections/*" -print0 | xargs -0 -I{} shellcheck --external-sources "{}"
-
-  yaml:
-    name: YAML
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for YAML files
-        id: check_yaml
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/*.yml"
-
-      - name: Install yamllint
-        if: steps.check_yaml.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check yamllint
-
-      - name: Run yamllint
-        if: steps.check_yaml.outputs.files_exists == 'true'
-        run: |
-          yamllint --strict .
-
-  python:
-    name: Python
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Python files
-        id: check_python
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/*.py"
-
-      - name: Install flake8
-        if: steps.check_python.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check flake8
-
-      - name: Run flake8
-        if: steps.check_python.outputs.files_exists == 'true'
-        run: |
-          flake8 --show-source .
-
-      - name: Install isort
-        if: steps.check_python.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check isort[colors]
-
-      - name: Run isort
-        if: steps.check_python.outputs.files_exists == 'true'
-        run: |
-          isort . --check-only --diff --color
-
-      - name: Check for Tox file
-        id: check_tox
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "tox.ini"
-
-      - name: Install tox
-        if: steps.check_tox.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check tox
-
-      - name: Install test dependencies
-        if: steps.check_tox.outputs.files_exists == 'true'
-        run: |
-          make dev-requirements
-
-      - name: Run tox
-        if: steps.check_tox.outputs.files_exists == 'true'
-        run: |
-          tox
-
-  ansible:
-    name: Ansible
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Ansible files
-        id: check_ansible
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "tasks, meta"
-
-      - name: Set up Python 3.x
-        if: steps.check_ansible.outputs.files_exists == 'true'
-        uses: actions/setup-python@v5
-        with:
-          python-version: '3.x'
-
-      - name: Install ansible
-        if: steps.check_ansible.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check ansible
-
-      - name: Install ansible-lint
-        if: steps.check_ansible.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check ansible-lint
-
-      - name: Run ansible-lint
-        if: steps.check_ansible.outputs.files_exists == 'true'
-        run: |
-          ansible-lint --force-color .
-
-      - name: Check for Molecule files
-        id: check_molecule
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "molecule"
-
-      - name: Install molecule
-        if: steps.check_molecule.outputs.files_exists == 'true'
-        run: |
-          pip3 install --disable-pip-version-check molecule molecule-plugins[docker] pytest-testinfra
-
-      - name: Run molecule
-        if: steps.check_molecule.outputs.files_exists == 'true'
-        run: |
-          molecule test --all
-
-  docker-compose:
-    name: Docker-Compose
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Docker-Compose test file
-        id: check_docker_compose_test
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "docker-compose.test.yml"
-
-      - name: Run docker-compose test
-        if: steps.check_docker_compose_test.outputs.files_exists == 'true'
-        run: |
-          docker compose --file docker-compose.test.yml build
-
-  go:
-    name: Go
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Check for Go files
-        id: check_go
-        uses: andstor/file-existence-action@v2
-        with:
-          files: "**/*.go"
-
-      - name: Set up Go
-        if: steps.check_go.outputs.files_exists == 'true'
-        uses: actions/setup-go@v5
-        with:
-          go-version: 'stable'
-
-      - name: Run go vet
-        if: steps.check_go.outputs.files_exists == 'true'
-        run: |
-          go vet ./...
-
-      - name: Run go test
-        if: steps.check_go.outputs.files_exists == 'true'
-        run: |
-          go test -v -cover ./...
-
-      - name: Install staticcheck
-        if: steps.check_go.outputs.files_exists == 'true'
-        env:
-          GH_REPO: dominikh/go-tools
-          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-        run: |
-          gh release download --pattern "*linux_amd64.tar.gz" --dir /tmp
-          tar --extract --gzip --strip-components 1 --file /tmp/staticcheck_linux_amd64.tar.gz --directory /tmp
-          chmod +x /tmp/staticcheck
-          mv /tmp/staticcheck /usr/local/bin/staticcheck
-
-      - name: Run staticcheck
-        if: steps.check_go.outputs.files_exists == 'true'
-        run: |
-          staticcheck
-
-  hugo:
-    name: Hugo
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Setup Hugo
-        uses: peaceiris/actions-hugo@v2
-
-      - name: Build Hugo example site with image
-        run: |
-          cd tests/exampleSiteWithImage/
-          hugo --logLevel=info --baseURL= --themesDir=../../../
-
-      - name: Upload Hugo example site with image
-        uses: actions/upload-artifact@v4
-        with:
-          name: hugo-example-site-with-image
-          path: tests/exampleSiteWithImage/public
-
-      - name: Build Hugo example site with video
-        run: |
-          cd tests/exampleSiteWithVideo/
-          hugo --logLevel=info --baseURL= --themesDir=../../../
-
-      - name: Upload Hugo example site with video
-        uses: actions/upload-artifact@v4
-        with:
-          name: hugo-example-site-with-video
-          path: tests/exampleSiteWithVideo/public
-
-  sitespeed:
-    name: Sitespeed.io
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v4
-
-      - name: Run sitespeed.io for example site with image in desktop mode
-        run: |
-          rm --recursive --force tests/exampleSiteWithImage/sitespeed-result
-          docker compose --file tests/exampleSiteWithImage/docker-compose.desktop.yml up --exit-code-from sitespeed
-
-      - name: Upload sitespeed.io result for example site with image in desktop mode
-        uses: actions/upload-artifact@v4
-        with:
-          name: sitespeed.io-example-site-with-image-desktop
-          path: tests/exampleSiteWithImage/sitespeed-result
-
-      - name: Run sitespeed.io for example site with image in mobile mode
-        run: |
-          rm --recursive --force tests/exampleSiteWithImage/sitespeed-result
-          docker compose --file tests/exampleSiteWithImage/docker-compose.mobile.yml up --exit-code-from sitespeed
-
-      - name: Upload sitespeed.io result for example site with image in mobile mode
-        uses: actions/upload-artifact@v4
-        with:
-          name: sitespeed.io-example-site-with-image-mobile
-          path: tests/exampleSiteWithImage/sitespeed-result
-
-      - name: Run sitespeed.io for example site with video in desktop mode
-        run: |
-          rm --recursive --force tests/exampleSiteWithVideo/sitespeed-result
-          docker compose --file tests/exampleSiteWithVideo/docker-compose.desktop.yml up --exit-code-from sitespeed
-
-      - name: Upload sitespeed.io result for example site with video in desktop mode
-        uses: actions/upload-artifact@v4
-        with:
-          name: sitespeed.io-example-site-with-video-desktop
-          path: tests/exampleSiteWithVideo/sitespeed-result
-
-      - name: Run sitespeed.io for example site with video in mobile mode
-        run: |
-          rm --recursive --force tests/exampleSiteWithVideo/sitespeed-result
-          docker compose --file tests/exampleSiteWithVideo/docker-compose.mobile.yml up --exit-code-from sitespeed
-
-      - name: Upload sitespeed.io result for example site with video in mobile mode
-        uses: actions/upload-artifact@v4
-        with:
-          name: sitespeed.io-example-site-with-video-mobile
-          path: tests/exampleSiteWithVideo/sitespeed-result

--
Gitblit v1.10.0