mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-17 06:21:15 +00:00
Prepare GitHub Actions
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# Job Name
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
name: PHP-CI
|
||||
name: build
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
@@ -12,55 +12,14 @@ name: PHP-CI
|
||||
on:
|
||||
# Runs on Pull Requests
|
||||
pull_request:
|
||||
|
||||
# Runs on master Branch and Tags
|
||||
# Runs on Push
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- '[0-9]+.[0-9]+*'
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# What to run
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
jobs:
|
||||
diagnostics:
|
||||
name: Diagnostics
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: False
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Show environment
|
||||
run: |
|
||||
env
|
||||
|
||||
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
|
||||
- name: Show GitHub variables
|
||||
run: |
|
||||
echo "github.actor: ${{ github.actor }}"
|
||||
echo "github.ref: ${{ github.ref }}"
|
||||
echo "github.base_ref: ${{ github.base_ref }}"
|
||||
echo "github.head_ref: ${{ github.head_ref }}"
|
||||
echo "github.event: ${{ github.event }}"
|
||||
echo "github.event_name: ${{ github.event_name }}"
|
||||
echo "github.event.pull_request.base.repo.id: ${{ github.event.pull_request.base.repo.id }}"
|
||||
echo "github.event.pull_request.head.repo.id: ${{ github.event.pull_request.head.repo.id }}"
|
||||
|
||||
- name: Dump GitHub context
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
run: echo "${GITHUB_CONTEXT}"
|
||||
|
||||
- name: Dump Runner context
|
||||
env:
|
||||
RUNNER_CONTEXT: ${{ toJson(runner) }}
|
||||
run: echo "${RUNNER_CONTEXT}"
|
||||
|
||||
|
||||
build:
|
||||
name: "[ PHP-${{ matrix.version }} ]"
|
||||
runs-on: ubuntu-latest
|
||||
@@ -83,7 +42,7 @@ jobs:
|
||||
steps:
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Checkout repository
|
||||
# Setup repository
|
||||
# ------------------------------------------------------------
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
@@ -97,7 +56,7 @@ jobs:
|
||||
# Retrieve git info (tags, etc)
|
||||
git fetch --all
|
||||
|
||||
# BRANCH, TAG or COMMIT
|
||||
# Branch, Tag or Commit
|
||||
GIT_TYPE="$( \
|
||||
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
|
||||
| sh \
|
||||
@@ -111,15 +70,25 @@ jobs:
|
||||
| grep '^GIT_NAME' \
|
||||
| sed 's|.*=||g' \
|
||||
)"
|
||||
# Docker Tag
|
||||
if [ "${GIT_TYPE}" = "BRANCH" ] && [ "${GIT_SLUG}" = "master" ]; then
|
||||
DOCKER_TAG="${VERSION}"
|
||||
else
|
||||
DOCKER_TAG="${VERSION}-${GIT_SLUG}"
|
||||
fi
|
||||
|
||||
# Output
|
||||
echo "GIT_TYPE=${GIT_TYPE}"
|
||||
echo "GIT_SLUG=${GIT_SLUG}"
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}"
|
||||
|
||||
# Export variable
|
||||
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
|
||||
echo "GIT_TYPE=${GIT_TYPE}" >> $GITHUB_ENV
|
||||
echo "GIT_SLUG=${GIT_SLUG}" >> $GITHUB_ENV
|
||||
echo "GIT_TYPE=${GIT_TYPE}" >> ${GITHUB_ENV}
|
||||
echo "GIT_SLUG=${GIT_SLUG}" >> ${GITHUB_ENV}
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}" >> ${GITHUB_ENV}
|
||||
env:
|
||||
VERSION: ${{ matrix.version }}
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
@@ -310,9 +279,8 @@ jobs:
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Push build artifacts
|
||||
# Deploy
|
||||
# ------------------------------------------------------------
|
||||
# Only run this, if the PR was created by the repo owner
|
||||
- name: Publish images (only repo owner)
|
||||
run: |
|
||||
retry() {
|
||||
@@ -328,34 +296,22 @@ jobs:
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Info output
|
||||
echo "Git Type: ${GIT_TYPE}"
|
||||
echo "Git Slug: ${GIT_SLUG}"
|
||||
# Output
|
||||
echo "GIT_TYPE=${GIT_TYPE}"
|
||||
echo "GIT_SLUG=${GIT_SLUG}"
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}"
|
||||
|
||||
docker images
|
||||
|
||||
# Login
|
||||
echo "retry make login USER= PASS="
|
||||
retry make login USER=${{ secrets.DOCKERHUB_USERNAME }} PASS=${{ secrets.DOCKERHUB_PASSWORD }}
|
||||
|
||||
# Push
|
||||
if [ "${GIT_TYPE}" = "TAG" ]; then
|
||||
echo "retry make push-base VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-mods VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-prod VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-work VERSION=${VERSION}-${GIT_SLUG}"
|
||||
else
|
||||
if [ "${GIT_SLUG}" = "master" ]; then
|
||||
echo "retry make push-base VERSION=${VERSION}"
|
||||
echo "retry make push-mods VERSION=${VERSION}"
|
||||
echo "retry make push-prod VERSION=${VERSION}"
|
||||
echo "retry make push-work VERSION=${VERSION}"
|
||||
else
|
||||
echo "retry make push-base VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-mods VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-prod VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-work VERSION=${VERSION}-${GIT_SLUG}"
|
||||
fi
|
||||
fi
|
||||
echo "retry make push-base VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-mods VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-prod VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-work VERSION=${DOCKER_TAG}"
|
||||
env:
|
||||
VERSION: ${{ matrix.version }}
|
||||
RETRIES: 20
|
||||
PAUSE: 10
|
||||
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
|
||||
@@ -365,5 +321,5 @@ jobs:
|
||||
||
|
||||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
|
||||
||
|
||||
(github.event_name == 'pull_request' && (startsWith(github.head_ref, 'release-')))
|
||||
(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-'))
|
||||
)
|
||||
37
.github/workflows/linting.yml
vendored
37
.github/workflows/linting.yml
vendored
@@ -1,27 +1,42 @@
|
||||
---
|
||||
|
||||
###
|
||||
### Lints all generic and json files in the whole git repository
|
||||
###
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# Job Name
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
name: lint
|
||||
|
||||
name: Linting
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# When to run
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
on:
|
||||
# Runs on Pull Requests
|
||||
pull_request:
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# What to run
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
jobs:
|
||||
lint:
|
||||
name: "[ ${{ matrix.job }} ]"
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: False
|
||||
matrix:
|
||||
job: [gen-dockerfiles]
|
||||
steps:
|
||||
# ------------------------------------------------------------
|
||||
# Setup repository
|
||||
# ------------------------------------------------------------
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Lint repository
|
||||
# ------------------------------------------------------------
|
||||
- name: Lint workflow
|
||||
id: vars
|
||||
run: |
|
||||
make lint-workflow
|
||||
|
||||
- name: Diff generated Docker files
|
||||
run: |
|
||||
make "${JOB}"
|
||||
make gen-readme
|
||||
git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
|
||||
env:
|
||||
JOB: ${{ matrix.job }}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# Job Name
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
name: PHP-Nightly
|
||||
name: nightly
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
@@ -19,50 +19,8 @@ on:
|
||||
# What to run
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
jobs:
|
||||
diagnostics:
|
||||
name: Diagnostics
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: False
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Show environment
|
||||
run: |
|
||||
env
|
||||
|
||||
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
|
||||
- name: Show GitHub variables
|
||||
run: |
|
||||
echo "github.actor: ${{ github.actor }}"
|
||||
echo "github.ref: ${{ github.ref }}"
|
||||
echo "github.base_ref: ${{ github.base_ref }}"
|
||||
echo "github.head_ref: ${{ github.head_ref }}"
|
||||
echo "github.event: ${{ github.event }}"
|
||||
echo "github.event_name: ${{ github.event_name }}"
|
||||
echo "github.event.pull_request.base.repo.id: ${{ github.event.pull_request.base.repo.id }}"
|
||||
echo "github.event.pull_request.head.repo.id: ${{ github.event.pull_request.head.repo.id }}"
|
||||
|
||||
- name: Dump GitHub context
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
run: echo "${GITHUB_CONTEXT}"
|
||||
|
||||
- name: Dump Runner context
|
||||
env:
|
||||
RUNNER_CONTEXT: ${{ toJson(runner) }}
|
||||
run: echo "${RUNNER_CONTEXT}"
|
||||
|
||||
- name: Show git info
|
||||
env:
|
||||
RUNNER_CONTEXT: ${{ toJson(runner) }}
|
||||
run: |
|
||||
git log | head -20
|
||||
|
||||
|
||||
build:
|
||||
name: "[ PHP-${{ matrix.version }} (ref: ${{ matrix.refs }}) ]"
|
||||
nightly:
|
||||
name: "[ PHP-${{ matrix.version }} ] (ref: ${{ matrix.refs }})"
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: False
|
||||
@@ -82,11 +40,11 @@ jobs:
|
||||
- '8.1'
|
||||
refs:
|
||||
- 'master'
|
||||
- '0.121'
|
||||
- '0.122'
|
||||
steps:
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Checkout repository
|
||||
# Setup repository
|
||||
# ------------------------------------------------------------
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
@@ -101,7 +59,7 @@ jobs:
|
||||
# Retrieve git info (tags, etc)
|
||||
git fetch --all
|
||||
|
||||
# BRANCH, TAG or COMMIT
|
||||
# Branch, Tag or Commit
|
||||
GIT_TYPE="$( \
|
||||
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
|
||||
| sh \
|
||||
@@ -115,15 +73,25 @@ jobs:
|
||||
| grep '^GIT_NAME' \
|
||||
| sed 's|.*=||g' \
|
||||
)"
|
||||
# Docker Tag
|
||||
if [ "${GIT_TYPE}" = "BRANCH" ] && [ "${GIT_SLUG}" = "master" ]; then
|
||||
DOCKER_TAG="${VERSION}"
|
||||
else
|
||||
DOCKER_TAG="${VERSION}-${GIT_SLUG}"
|
||||
fi
|
||||
|
||||
# Output
|
||||
echo "GIT_TYPE=${GIT_TYPE}"
|
||||
echo "GIT_SLUG=${GIT_SLUG}"
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}"
|
||||
|
||||
# Export variable
|
||||
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
|
||||
echo "GIT_TYPE=${GIT_TYPE}" >> $GITHUB_ENV
|
||||
echo "GIT_SLUG=${GIT_SLUG}" >> $GITHUB_ENV
|
||||
echo "GIT_TYPE=${GIT_TYPE}" >> ${GITHUB_ENV}
|
||||
echo "GIT_SLUG=${GIT_SLUG}" >> ${GITHUB_ENV}
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}" >> ${GITHUB_ENV}
|
||||
env:
|
||||
VERSION: ${{ matrix.version }}
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
@@ -314,9 +282,8 @@ jobs:
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Push build artifacts
|
||||
# Deploy
|
||||
# ------------------------------------------------------------
|
||||
# Only run this, if the PR was created by the repo owner
|
||||
- name: Publish images (only repo owner)
|
||||
run: |
|
||||
retry() {
|
||||
@@ -332,42 +299,30 @@ jobs:
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Info output
|
||||
echo "Git Type: ${GIT_TYPE}"
|
||||
echo "Git Slug: ${GIT_SLUG}"
|
||||
# Output
|
||||
echo "GIT_TYPE=${GIT_TYPE}"
|
||||
echo "GIT_SLUG=${GIT_SLUG}"
|
||||
echo "DOCKER_TAG=${DOCKER_TAG}"
|
||||
|
||||
docker images
|
||||
|
||||
# Login
|
||||
echo "retry make login USER= PASS="
|
||||
retry make login USER=${{ secrets.DOCKERHUB_USERNAME }} PASS=${{ secrets.DOCKERHUB_PASSWORD }}
|
||||
|
||||
# Push
|
||||
if [ "${GIT_TYPE}" = "TAG" ]; then
|
||||
echo "retry make push-base VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-mods VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-prod VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-work VERSION=${VERSION}-${GIT_SLUG}"
|
||||
else
|
||||
if [ "${GIT_SLUG}" = "master" ]; then
|
||||
echo "retry make push-base VERSION=${VERSION}"
|
||||
echo "retry make push-mods VERSION=${VERSION}"
|
||||
echo "retry make push-prod VERSION=${VERSION}"
|
||||
echo "retry make push-work VERSION=${VERSION}"
|
||||
else
|
||||
echo "retry make push-base VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-mods VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-prod VERSION=${VERSION}-${GIT_SLUG}"
|
||||
echo "retry make push-work VERSION=${VERSION}-${GIT_SLUG}"
|
||||
fi
|
||||
fi
|
||||
echo "retry make push-base VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-mods VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-prod VERSION=${DOCKER_TAG}"
|
||||
echo "retry make push-work VERSION=${DOCKER_TAG}"
|
||||
env:
|
||||
VERSION: ${{ matrix.version }}
|
||||
RETRIES: 20
|
||||
PAUSE: 10
|
||||
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
|
||||
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
|
||||
&& (
|
||||
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
|
||||
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
|
||||
||
|
||||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
|
||||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
|
||||
||
|
||||
(github.event_name == 'pull_request' && (startsWith(github.head_ref, 'release-')))
|
||||
(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-'))
|
||||
)
|
||||
24
Makefile
24
Makefile
@@ -31,6 +31,8 @@ help:
|
||||
@echo "Targets"
|
||||
@echo "--------------------------------------------------------------------------------"
|
||||
@echo
|
||||
@echo "lint Lint project files and repository"
|
||||
@echo
|
||||
@echo "gen-readme [VERSION=] Update README with PHP modules from built images."
|
||||
@echo "gen-dockerfiles [FAIL_FAST=] Generate Dockerfiles from templates."
|
||||
@echo
|
||||
@@ -67,6 +69,27 @@ help:
|
||||
@echo "ARGS Can be added to all build-* and rebuild-* targets"
|
||||
@echo " to supply additional docker build options."
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# Lint Targets
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
|
||||
lint: lint-workflow
|
||||
|
||||
lint-workflow:
|
||||
@\
|
||||
GIT_CURR_MAJOR="$$( git tag | sort -V | tail -1 | sed 's|\.[0-9]*$$||g' )"; \
|
||||
GIT_CURR_MINOR="$$( git tag | sort -V | tail -1 | sed 's|^[0-9]*\.||g' )"; \
|
||||
GIT_NEXT_TAG="$${GIT_CURR_MAJOR}.$$(( GIT_CURR_MINOR + 1 ))"; \
|
||||
if ! grep 'refs:' -A 100 .github/workflows/nightly.yml \
|
||||
| grep " - '$${GIT_NEXT_TAG}'" >/dev/null; then \
|
||||
echo "[ERR] New Tag required in .github/workflows/nightly.yml: $${GIT_NEXT_TAG}"; \
|
||||
exit 1; \
|
||||
else \
|
||||
echo "[OK] Git Tag present in .github/workflows/nightly.yml: $${GIT_NEXT_TAG}"; \
|
||||
fi
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
# GENERATE TARGETS
|
||||
# -------------------------------------------------------------------------------------------------
|
||||
@@ -83,7 +106,6 @@ else
|
||||
cd build; ./gen-readme.sh $(VERSION)
|
||||
endif
|
||||
|
||||
|
||||
gen-dockerfiles:
|
||||
docker run --rm \
|
||||
$$(tty -s && echo "-it" || echo) \
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# PHP-FPM Docker images
|
||||
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=Linting)
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=PHP-CI)
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=PHP-Nightly)
|
||||
[](https://travis-ci.org/devilbox/docker-php-fpm)
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=lint)
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=build)
|
||||
[](https://github.com/devilbox/docker-php-fpm/actions?workflow=nightly)
|
||||
[](https://github.com/devilbox/docker-php-fpm/releases)
|
||||
[](https://gitter.im/devilbox/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://devilbox.discourse.group)
|
||||
|
||||
Reference in New Issue
Block a user