AzuraCast/.github/workflows/default.yml

140 lines
4.4 KiB
YAML
Raw Normal View History

name : Build, Test and Publish
on :
pull_request :
branches :
2021-02-11 02:52:15 +00:00
- main
push :
paths-ignore :
- '.github/*.yml'
- '.github/ISSUE_TEMPLATE/*.md'
- 'install.sh' # Ansible-only scripts and folders
- 'update.sh'
- 'util/ansible/**'
branches :
- ci-testing
2021-02-11 02:52:15 +00:00
- main
2020-05-21 07:17:16 +00:00
- stable
schedule :
- cron : '0 2 * * 0' # Weekly on Sundays at 02:00
jobs :
build :
name : Build, Test and Publish
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@master
- name : Reduce Git repository size.
run : |
2020-01-31 06:55:24 +00:00
git gc --prune=now --aggressive
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@v1
- name : Cache PHP dependencies
uses : actions/cache@v2
with :
path : vendor
key : ${{ runner.OS }}-build-${{ hashFiles('**/composer.lock') }}
- name : Cache Docker layers
uses : actions/cache@v2
with :
path : /tmp/.buildx-cache
key : ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys : |
${{ runner.os }}-buildx-
- name : Login to DockerHub
uses : docker/login-action@v1
with :
username : ${{ secrets.DOCKER_USERNAME }}
password : ${{ secrets.DOCKER_PASSWORD }}
- name : Set console permissions and clear static assets.
run : |
rm -rf web/static/dist
rm -rf web/static/assets.json
chmod a+x bin/console
- name : Clear existing locales.
if : github.event_name == 'push' || github.event_name == 'schedule'
run : |
rm -rf resources/locale/compiled
rm -rf resources/locale/*.UTF-8
rm -rf resources/locale/translations.json
mkdir -p resources/locale/compiled
- name : Generate new translations from existing code.
if : github.event_name == 'push' || github.event_name == 'schedule'
uses : ./.github/actions/generate-locales
- name : Pull latest translations.
if : github.event_name == 'push' || github.event_name == 'schedule'
uses : crowdin/github-action@1.0.18
with :
upload_sources : true
download_translations : true
export_only_approved : false
push_translations : false
crowdin_branch_name : main
config : crowdin.yaml
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID : ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN : ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name : Import locales, build static assets.
uses : ./.github/actions/build
- name : Build Docker Image for Local Testing
uses : docker/build-push-action@v2
with :
tags : azuracast/azuracast_web_v2:latest
cache-from : type=local,src=/tmp/.buildx-cache
cache-to : type=local,dest=/tmp/.buildx-cache
load : true
- name : Set up functional test environment.
run : |
cp azuracast.sample.env azuracast.env
cp docker-compose.sample.yml docker-compose.yml
cp docker-compose.testing.yml docker-compose.override.yml
docker-compose build web
docker-compose run --rm --user="azuracast" web azuracast_install
- name : Run functional test suite.
run : |
chmod 777 tests/_output/
docker-compose run --rm --user="azuracast" web composer dev-test
- name : Stop all running containers.
run : |
docker-compose down
- name : Echo test output directory
if : failure()
run : |
cat tests/_output/*
2021-02-12 00:43:51 +00:00
- name : Determine Tag Name
if : github.event_name == 'push' || github.event_name == 'schedule'
id : tag
run : |
2021-02-12 00:55:53 +00:00
BRANCH_NAME=${GITHUB_REF#refs/heads/}
2021-02-12 00:43:51 +00:00
if [ $BRANCH_NAME == 'main' ]; then
echo "::set-output name=TAG::azuracast/azuracast_web_v2:latest"
else
echo "::set-output name=TAG::azuracast/azuracast_web_v2:${BRANCH_NAME}"
fi
2021-02-12 00:55:53 +00:00
- name : Publish to Docker Hub
2021-02-12 00:43:51 +00:00
if : github.event_name == 'push' || github.event_name == 'schedule'
uses : docker/build-push-action@v2
with :
push : true
2021-02-12 00:43:51 +00:00
tags : ${{ steps.tag.outputs.TAG }}
cache-from : type=local,src=/tmp/.buildx-cache
cache-to : type=local,dest=/tmp/.buildx-cache