mirror of
https://github.com/dokku/dokku.git
synced 2025-12-28 16:06:40 +01:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
244 lines
6.1 KiB
YAML
244 lines
6.1 KiB
YAML
---
|
|
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@v6
|
|
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@v6
|
|
|
|
- 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@v5
|
|
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@v6
|
|
|
|
- name: build-image
|
|
uses: ./.github/actions/build-image
|
|
with:
|
|
architecture: linux/amd64
|
|
|
|
build-image-arm64:
|
|
name: build-image.linux/arm64
|
|
needs: build
|
|
runs-on: ubuntu-24.04-arm
|
|
timeout-minutes: 20
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- 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@v6
|
|
|
|
- name: download packages
|
|
uses: actions/download-artifact@v6
|
|
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@v5
|
|
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@v6
|
|
|
|
- name: download packages
|
|
uses: actions/download-artifact@v6
|
|
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@v6
|
|
|
|
- name: download packages
|
|
uses: actions/download-artifact@v6
|
|
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@v5
|
|
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@v6
|
|
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"
|