summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Boerner <ich@felix-boerner.de>2024-01-13 18:39:23 +0100
committerFelix Boerner <ich@felix-boerner.de>2024-01-13 18:39:23 +0100
commit96b05bb47a993e6d561bfab4b65bc02b4bf77069 (patch)
treeb22480581b5cc13fcb9cebb0139457509b379b39
parent62eeb8c140fac035c6b91e0928cb3c21744bc034 (diff)
ci: reuse workflows
-rw-r--r--.github/workflows/release.yml50
-rw-r--r--.github/workflows/test.yml93
-rw-r--r--.github/workflows/tests.yml410
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 @@ name: Release
'on':
workflow_run:
workflows:
- - Tests
+ - Test
branches:
- master
types:
@@ -10,51 +10,5 @@ name: Release
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