1
0
Fork 0
mirror of https://github.com/mlocati/docker-php-extension-installer synced 2025-05-09 08:32:42 +00:00

Switch from TravisCI to GitHub Actions

This commit is contained in:
Michele Locati 2020-02-02 16:17:49 +01:00
parent 3abefaacdb
commit 13bb928ca4
No known key found for this signature in database
GPG key ID: 98B7CE2E7234E28B
8 changed files with 191 additions and 159 deletions

View file

@ -5,12 +5,23 @@ set -o errexit
set -o nounset
echo 'Checking environment'
if test -z "${TRAVIS_BUILD_DIR:-}" || test -z "${TRAVIS_COMMIT_RANGE:-}" || test -z "${DOCKER_DISTRO:-}"; then
echo 'Not in a TravisCI environment' >&2
if test -n "${GITHUB_WORKSPACE:-}" && test -n "${GITHUB_SHA:-}"; then
if test -z "${1:-}"; then
echo 'Missing commit range of the push event' >&2
exit 1
fi
CI_BUILD_DIR="$GITHUB_WORKSPACE"
CI_COMMIT_RANGE="$1"
else
echo 'Not in a CI environment' >&2
exit 1
fi
if test -z "${DOCKER_DISTRO:-}"; then
echo 'DOCKER_DISTRO environment variable not set' >&2
exit 1
fi
. "$TRAVIS_BUILD_DIR/scripts/common"
. "$CI_BUILD_DIR/scripts/common"
ALREADY_TESTED_EXTENSIONS=''
@ -29,7 +40,7 @@ getDockerImageName() {
;;
esac
getDockerImageName_suffix='cli'
getDockerImageName_reqs="$TRAVIS_BUILD_DIR/data/special-requirements"
getDockerImageName_reqs="$CI_BUILD_DIR/data/special-requirements"
if test -f "$getDockerImageName_reqs"; then
IFS=' '
for getDockerImageName_testExtension in $1; do
@ -86,7 +97,7 @@ testExtension() {
fi
printf ' - Docker image: %s\n' "$testExtension_Image"
testExtension_out="$(mktemp)"
if $(docker run --rm --volume "$TRAVIS_BUILD_DIR:/app" --workdir /app "$testExtension_Image" sh -c "./install-php-extensions $1 && php ./scripts/check-installed-extension.php $1" >"$testExtension_out" 2>&1); then
if $(docker run --rm --volume "$CI_BUILD_DIR:/app" --workdir /app "$testExtension_Image" sh -c "./install-php-extensions $1 && php ./scripts/check-installed-extension.php $1" >"$testExtension_out" 2>&1); then
rm -rf "$testExtension_out"
printf ' - Passed\n'
return 0
@ -192,7 +203,7 @@ getAllPHPVersionsForExtension() {
fi
fi
done
done <"$TRAVIS_BUILD_DIR/data/supported-extensions"
done <"$CI_BUILD_DIR/data/supported-extensions"
printf '%s' "$getAllPHPVersionsForExtension_result"
}
@ -211,7 +222,7 @@ testExtensionsFromMessage() {
testExtensionsFromMessage_result=0
TEST_EXTENSIONS=
FIRST_LINE=1
testExtensionsFromMessage_message="$(git -C "$TRAVIS_BUILD_DIR" log --pretty='format:%B' -n 1 "$1")"
testExtensionsFromMessage_message="$(git -C "$CI_BUILD_DIR" log --pretty='format:%B' -n 1 "$1")"
IFS='
'
for COMMIT_LINE in $testExtensionsFromMessage_message; do
@ -269,7 +280,7 @@ ADDED_EXTENSION_LINE=
FOUND_ATAT=
IFS='
'
for DIFF_LINE in $(git -C "$TRAVIS_BUILD_DIR" diff --no-indent-heuristic --minimal --no-color --word-diff=none -no-renames --unified=0 "$TRAVIS_COMMIT_RANGE" -- data/supported-extensions); do
for DIFF_LINE in $(git -C "$CI_BUILD_DIR" diff --no-indent-heuristic --minimal --no-color --word-diff=none -no-renames --unified=0 "$CI_COMMIT_RANGE" -- data/supported-extensions); do
if test -n "$DIFF_LINE"; then
if test -z "$FOUND_ATAT"; then
if test -z "${DIFF_LINE##@@*}"; then
@ -287,7 +298,7 @@ done
IFS='
'
for COMMIT_HASH in $(git -C "$TRAVIS_BUILD_DIR" log --pretty='format:%H' "$TRAVIS_COMMIT_RANGE"); do
for COMMIT_HASH in $(git -C "$CI_BUILD_DIR" log --pretty='format:%H' "$CI_COMMIT_RANGE"); do
if ! testExtensionsFromMessage "$COMMIT_HASH"; then
TESTS_RESULTS=1
fi

70
scripts/ci-update-readme Executable file
View file

@ -0,0 +1,70 @@
#!/bin/sh
# Let's set a sane environment
set -o errexit
set -o nounset
UPDATE_README_COMMIT_AUTHOR_NAME='CI'
UPDATE_README_COMMIT_AUTHOR_EMAIL='michele@locati.it'
UPDATE_README_COMMIT_MESSAGE='[skip ci] Automatically update README.md'
WATCHED_FILES='data/special-requirements data/supported-extensions scripts/common scripts/update-readme scripts/ci-update-readme'
UPDATE_BRANCH='master'
echo 'Checking environment'
if test -z "${GITHUB_WORKSPACE:-}" || test -z "${GITHUB_REF:-}" || test -z "${GITHUB_EVENT_NAME:-}" || test -z "${GITHUB_REPOSITORY:-}"; then
echo 'Not in a GitHub Actions environment' >&2
exit 1
fi
if test "$GITHUB_EVENT_NAME" != 'push' || test "$GITHUB_REF" != "refs/heads/$UPDATE_BRANCH"; then
echo 'This script should only be run in push builds to %s' "$UPDATE_BRANCH" >&2
exit 1
fi
if test -z "${DEPLOY_KEY:-}"; then
echo 'GitHub deploy key not set' >&2
exit 1
fi
SCRIPTS_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
. "$SCRIPTS_DIR/common"
cd "$GITHUB_WORKSPACE"
printf 'Checking-out branch %s\n' "$UPDATE_BRANCH"
git checkout --force "$UPDATE_BRANCH"
LAST_AUTO_UPDATED_IN="$(git rev-list --max-count 1 --author "<$UPDATE_README_COMMIT_AUTHOR_EMAIL>" --grep "$UPDATE_README_COMMIT_MESSAGE" "$UPDATE_BRANCH")"
if test -z "$LAST_AUTO_UPDATED_IN"; then
printf 'Rebuild of README.md enabled (no previous automatic refresh of it in branch %s)\n' "$UPDATE_BRANCH"
else
MODIFIED_FILES_SINCE="$(git diff --name-only "$LAST_AUTO_UPDATED_IN...$UPDATE_BRANCH")"
if test -z "$(commonElements "$WATCHED_FILES" "$MODIFIED_FILES_SINCE")"; then
printf 'Rebuild of README.md not needed (no relevant files changed in branch %s since commit %s)\n' "$UPDATE_BRANCH" "$LAST_AUTO_UPDATED_IN"
exit 0
fi
printf 'Rebuild of README.md enabled (relevant files changed in branch %s since commit %s)\n' "$UPDATE_BRANCH" "$LAST_AUTO_UPDATED_IN"
fi
echo 'Updating README.md'
"$SCRIPTS_DIR/update-readme"
if test -z "$(git ls-files -m | grep -E '^README\.md$')"; then
echo 'README.md has not been changed'
exit 0
fi
printf 'Initializing SSH'
eval "$(ssh-agent)"
printf '%s' "$DEPLOY_KEY" | tr -d '\r' | ssh-add - >/dev/null
printf 'Adding %s remote\n' "$GITHUB_REPOSITORY"
git remote add deploy "git@github.com/$GITHUB_REPOSITORY.git"
echo 'Committing changes to README.md'
git config user.name "$UPDATE_README_COMMIT_AUTHOR_NAME"
git config user.email "$UPDATE_README_COMMIT_AUTHOR_EMAIL"
git add README.md
git commit -m "$UPDATE_README_COMMIT_MESSAGE"
printf 'Pushing to %s\n' "$GITHUB_REPOSITORY"
git push deploy "$UPDATE_BRANCH"
echo 'Done.'

View file

@ -24,6 +24,6 @@ shfmt $PARAMS \
scripts/invoke-shfmt \
scripts/lint \
scripts/test-restore-apt \
scripts/travisci-test-extensions \
scripts/travisci-update-readme \
scripts/ci-test-extensions \
scripts/ci-update-readme \
scripts/update-readme

View file

@ -1,73 +0,0 @@
#!/bin/sh
# Let's set a sane environment
set -o errexit
set -o nounset
UPDATE_README_COMMIT_AUTHOR_NAME='Travis CI'
UPDATE_README_COMMIT_AUTHOR_EMAIL='michele@locati.it'
UPDATE_README_COMMIT_MESSAGE='[skip ci] Automatically update README.md'
WATCHED_FILES='data/special-requirements data/supported-extensions scripts/common scripts/update-readme scripts/travisci-update-readme'
SCRIPTS_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
. "$SCRIPTS_DIR/common"
echo 'Checking environment'
if test -z "${TRAVIS_BUILD_DIR:-}" || test -z "${TRAVIS_BRANCH:-}" || test -z "${TRAVIS_EVENT_TYPE:-}" || test -z "${TRAVIS_REPO_SLUG:-}"; then
echo 'Not in a TravisCI environment' >&2
exit 1
fi
if test -z "${GUTHUB_ACCESS_TOKEN:-}"; then
echo 'GitHub access token not set' >&2
# To create it:
# - go to https://github.com/settings/tokens/new?scopes=repo
# - create a new token
# - sudo apt install -y build-essential ruby ruby-dev
# - sudo gem install travis
# - travis encrypt -r <owner>/<repo> GUTHUB_ACCESS_TOKEN=<TOKEN>
# - Add to .travis.yml:
# env:
# global:
# - secure: "encrypted string"
exit 1
fi
if test "$TRAVIS_EVENT_TYPE" != 'push'; then
echo 'This script should only be run in push builds' >&2
exit 1
fi
printf 'Checking-out branch %s\n' "$TRAVIS_BRANCH"
git checkout --force "$TRAVIS_BRANCH"
LAST_AUTO_UPDATED_IN="$(git -C "$TRAVIS_BUILD_DIR" rev-list --max-count 1 --author "<$UPDATE_README_COMMIT_AUTHOR_EMAIL>" --grep "$UPDATE_README_COMMIT_MESSAGE" "$TRAVIS_BRANCH")"
if test -z "$LAST_AUTO_UPDATED_IN"; then
printf 'Rebuild of README.md enabled (no previous automatic refresh of it in branch %s)\n' "$TRAVIS_BRANCH"
else
MODIFIED_FILES_SINCE="$(git -C "$TRAVIS_BUILD_DIR" diff --name-only "$LAST_AUTO_UPDATED_IN...$TRAVIS_BRANCH")"
if test -z "$(commonElements "$WATCHED_FILES" "$MODIFIED_FILES_SINCE")"; then
printf 'Rebuild of README.md not needed (no relevant files changed in branch %s since commit %s)\n' "$TRAVIS_BRANCH" "$LAST_AUTO_UPDATED_IN"
exit 0
fi
printf 'Rebuild of README.md enabled (relevant files changed in branch %s since commit %s)\n' "$TRAVIS_BRANCH" "$LAST_AUTO_UPDATED_IN"
fi
echo 'Updating README.md'
"$TRAVIS_BUILD_DIR/scripts/update-readme"
if test -z "$(git -C "$TRAVIS_BUILD_DIR" ls-files -m | grep -E '^README\.md$')"; then
echo 'README.md has not been changed'
exit 0
fi
printf 'Adding %s remote\n' "$TRAVIS_REPO_SLUG"
git remote add deploy "https://$GUTHUB_ACCESS_TOKEN@github.com/$TRAVIS_REPO_SLUG.git"
echo 'Committing changes to README.md'
git -C "$TRAVIS_BUILD_DIR" config user.name "$UPDATE_README_COMMIT_AUTHOR_NAME"
git -C "$TRAVIS_BUILD_DIR" config user.email "$UPDATE_README_COMMIT_AUTHOR_EMAIL"
git -C "$TRAVIS_BUILD_DIR" add README.md
git -C "$TRAVIS_BUILD_DIR" commit -m "$UPDATE_README_COMMIT_MESSAGE"
printf 'Pushing to %s\n' "$TRAVIS_REPO_SLUG"
git push deploy "$TRAVIS_BRANCH"
echo 'Done.'