Merge pull request #2050 from pi-hole/dependabot-tweaks #4627
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Test, Deploy | |
on: | |
push: | |
branches: | |
- '**' | |
pull_request: | |
release: | |
types: [published] | |
jobs: | |
smoke-tests: | |
if: | | |
github.event_name == 'push' | |
|| github.event_name == 'release' | |
|| (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) | |
outputs: | |
GIT_TAG: ${{ steps.variables.outputs.GIT_TAG }} | |
GIT_BRANCH: ${{ steps.variables.outputs.GIT_BRANCH }} | |
OUTPUT_DIR: ${{ steps.variables.outputs.OUTPUT_DIR }} | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout code | |
uses: actions/[email protected] | |
- | |
name: "Calculate required variables" | |
id: variables | |
run: | | |
GIT_TAG=${{ github.event.release.tag_name }} | |
# If GIT_TAG is set then GIT BRANCH should be "master", else set it from GITHUB_REF | |
GIT_BRANCH=$([ -n "${GIT_TAG}" ] && echo "master" || echo "${GITHUB_REF#refs/*/}") | |
echo "GIT_BRANCH=${GIT_BRANCH}" >> $GITHUB_OUTPUT | |
echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_OUTPUT | |
echo "OUTPUT_DIR=${GIT_TAG:-${GIT_BRANCH}}" >> $GITHUB_OUTPUT | |
- | |
name: "Check git branch name depth" | |
env: | |
GIT_BRANCH: ${{ steps.variables.outputs.GIT_BRANCH }} | |
run: | | |
IFS='/'; | |
read -r -a branch <<<"${GIT_BRANCH}"; | |
if [[ "${#branch[@]}" -gt 2 ]]; then echo "Error: Your branch name contains more than one subdir, which will cause issues with the build process." && FAIL=1; fi; | |
unset IFS; | |
# If FAIL is 1 then we fail. | |
[[ $FAIL == 1 ]] && exit 1 || echo "Branch name depth check passed." | |
shell: bash | |
build: | |
runs-on: ubuntu-latest | |
needs: smoke-tests | |
container: ghcr.io/pi-hole/ftl-build:v1.26-${{ matrix.arch }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86_64 | |
bin_name: pihole-FTL-linux-x86_64 | |
- arch: x86_64 | |
arch_extra: _full | |
bin_name: pihole-FTL-linux-x86_64_full | |
- arch: x86_64-musl | |
bin_name: pihole-FTL-musl-linux-x86_64 | |
- arch: x86_32 | |
bin_name: pihole-FTL-linux-x86_32 | |
- arch: armv4t | |
bin_name: pihole-FTL-armv4-linux-gnueabi | |
- arch: armv5te | |
bin_name: pihole-FTL-armv5-linux-gnueabi | |
- arch: armv6hf | |
bin_name: pihole-FTL-armv6-linux-gnueabihf | |
- arch: armv7hf | |
bin_name: pihole-FTL-armv7-linux-gnueabihf | |
- arch: armv8a | |
bin_name: pihole-FTL-armv8-linux-gnueabihf | |
- arch: aarch64 | |
bin_name: pihole-FTL-aarch64-linux-gnu | |
- arch: riscv64 | |
bin_name: pihole-FTL-riscv64-linux-gnu | |
env: | |
CI_ARCH: ${{ matrix.arch }}${{ matrix.arch_extra }} | |
steps: | |
- | |
name: Checkout code | |
uses: actions/[email protected] | |
- | |
name: "Fix ownership of repository" | |
run: chown -R root . | |
- | |
name: "Fix ownership of repository" | |
run: chown -R root . | |
- | |
name: "Build" | |
env: | |
GIT_BRANCH: ${{ needs.smoke-tests.outputs.GIT_BRANCH }} | |
GIT_TAG: ${{ needs.smoke-tests.outputs.GIT_TAG }} | |
run: | | |
bash build.sh "-DSTATIC=${STATIC}" | |
- | |
name: "Binary checks" | |
run: | | |
bash test/arch_test.sh | |
- | |
name: "Test x86_32/64 binaries" | |
if: matrix.arch == 'x86_64' || matrix.arch == 'x86_64-musl' || matrix.arch == 'x86_32' | |
run: | | |
bash test/run.sh | |
- | |
name: "Generate checksum file" | |
run: | | |
mv pihole-FTL "${{ matrix.bin_name }}" | |
sha1sum pihole-FTL-* > ${{ matrix.bin_name }}.sha1 | |
- | |
name: Upload artifacts to job for later processing | |
if: github.event_name != 'pull_request' | |
uses: actions/[email protected] | |
with: | |
name: tmp-binary-storage | |
path: '${{ matrix.bin_name }}*' | |
deploy: | |
if: github.event_name != 'pull_request' | |
needs: [smoke-tests, build] | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout code | |
uses: actions/[email protected] | |
- | |
name: Get Binaries built in previous jobs | |
uses: actions/[email protected] | |
id: download | |
with: | |
name: tmp-binary-storage | |
path: ftl-builds/ | |
- | |
name: Display structure of downloaded files | |
run: ls -R | |
working-directory: ${{steps.download.outputs.download-path}} | |
- | |
name: Install SSH Key | |
uses: benoitchantre/[email protected] | |
with: | |
private-key: ${{ secrets.SSH_KEY }} | |
known-hosts: ${{ secrets.KNOWN_HOSTS }} | |
- | |
name: Transfer Builds to Pi-hole server for pihole checkout | |
if: github.actor != 'dependabot[bot]' | |
env: | |
USER: ${{ secrets.SSH_USER }} | |
HOST: ${{ secrets.SSH_HOST }} | |
TARGET_DIR: ${{ needs.smoke-tests.outputs.OUTPUT_DIR }} | |
SOURCE_DIR: ${{ steps.download.outputs.download-path }} | |
run: | | |
bash ./deploy.sh | |
- | |
name: Attach binaries to release | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
${{ steps.download.outputs.download-path }}/* |