Skip to content

Merge pull request #7404 from dokku/k3s-http-scale-to-zero #5557

Merge pull request #7404 from dokku/k3s-http-scale-to-zero

Merge pull request #7404 from dokku/k3s-http-scale-to-zero #5557

Workflow file for this run

---
name: CI
# yamllint disable-line rule:truthy
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
concurrency:
group: build-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
INSTALL_DOCKER_REPO: 1
jobs:
check-commit:
runs-on: ubuntu-24.04
outputs:
skip: ${{ steps.check-commit.outputs.skip }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: check if message contain keywords ace scopeid
id: check-commit
run: |
# checking for "docs" or "[ci skip]" messages
message=$(git log -1 --pretty=format:'%s')
if [[ "$message" =~ "\[(ci skip)\]" ]]; then
echo "Skipping tests due to [ci skip] message"
echo "skip=true" >> $GITHUB_OUTPUT
elif [[ "$message" =~ "^docs:" ]]; then
echo "Skipping tests due to "docs:" prefix on message"
echo "skip=true" >> $GITHUB_OUTPUT
fi
build:
name: build
runs-on: ubuntu-24.04
needs: check-commit
if: ${{ needs.check-commit.outputs.skip != 'true' }}
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
strategy:
fail-fast: true
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: set up qemu
uses: docker/setup-qemu-action@v3
- name: set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: build package
run: ./tests/ci/setup.sh build
env:
SKIP_IMAGE_BUILD: true
- name: set matrix for build
id: set-matrix
run: |
json=$(python3 .github/commands/matrix)
echo $json
echo "matrix=$json" >> $GITHUB_OUTPUT
- name: upload packages
uses: actions/upload-artifact@v4
with:
name: build
path: build
build-image-amd64:
name: build-image.linux/amd64
needs: build
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: build-image
uses: ./.github/actions/build-image
with:
architecture: linux/amd64
build-image-arm64:
name: build-image.linux/arm64
needs: build
runs-on: buildjet-4vcpu-ubuntu-2204-arm
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: build-image
uses: ./.github/actions/build-image
with:
architecture: linux/arm64
unit-tests:
name: unit.${{ matrix.index }}
needs: build
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix: ${{fromJson(needs.build.outputs.matrix)}}
steps:
- uses: actions/checkout@v4
- name: download packages
uses: actions/download-artifact@v4
with:
name: build
path: build
- name: ci-setup
run: ./.github/commands/ci-setup
# - name: start ssh session
# uses: luchihoratiu/debug-via-ssh@main
# with:
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
# SSH_PASS: ${{ secrets.NGROK_SSH_PASS }}
- name: run ci
timeout-minutes: 30
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }}
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
SYNC_GITHUB_PASSWORD: ${{ secrets.SYNC_GITHUB_PASSWORD }}
SYNC_GITHUB_USERNAME: ${{ secrets.SYNC_GITHUB_USERNAME }}
- uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.index }}
path: test-results
docker-deploy-tests:
name: docker
needs: build
runs-on: ubuntu-24.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: download packages
uses: actions/download-artifact@v4
with:
name: build
path: build
- name: ci-setup
run: ./.github/commands/ci-setup
- name: docker-container-setup
run: |
./tests/ci/setup.sh docker
- name: test docker deploys
shell: bash
timeout-minutes: 20
run: |
docker exec dokku bash -c "cat /etc/sudoers.d/dokku-nginx"
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker
go-tests:
name: go.${{ matrix.index }}
needs: build
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
index: [0, 1, 2, 3]
env:
GITHUB_NODE_INDEX: ${{ matrix.index }}
steps:
- uses: actions/checkout@v4
- name: download packages
uses: actions/download-artifact@v4
with:
name: build
path: build
- name: ci-setup
run: ./.github/commands/ci-setup
- name: run go tests
run: |
export CIRCLE_SHA1=$GITHUB_SHA
echo "CODACY_TOKEN=$CODACY_TOKEN"
if [ "$CODACY_TOKEN" != "" ]; then
echo "Detected value for CODACY_TOKEN"
fi
case $GITHUB_NODE_INDEX in
0) sudo -E make -e lint-ci go-tests ci-go-coverage ;;
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;;
2) sudo -E make -e deploy-test-multi ;;
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
esac
- uses: actions/upload-artifact@v4
with:
name: coverage.${{ matrix.index }}
path: test-results/coverage
publish-test-results:
name: publish-test-results
needs: unit-tests
runs-on: ubuntu-24.04
permissions:
checks: write
# the build-and-test job might be skipped, we don't need to run this job then
if: success() || failure()
steps:
- name: download test-results
uses: actions/download-artifact@v4
with:
path: test-results
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: Unit Test Results
github_token: ${{ secrets.GITHUB_TOKEN }}
junit_files: test-results/**/*.xml
comment_mode: "off"