mirror of
https://github.com/AzuraCast/AzuraCast.git
synced 2024-06-13 20:56:36 +00:00
165 lines
5.0 KiB
YAML
165 lines
5.0 KiB
YAML
name : Build, Test and Publish
|
|
on :
|
|
pull_request :
|
|
branches :
|
|
- main
|
|
push :
|
|
paths-ignore :
|
|
- '.github/*.yml'
|
|
- '.github/ISSUE_TEMPLATE/*.md'
|
|
- 'install.sh' # Ansible-only scripts and folders
|
|
- 'update.sh'
|
|
- 'util/ansible/**'
|
|
branches :
|
|
- ci-testing
|
|
- main
|
|
- stable
|
|
schedule :
|
|
- cron : '0 2 * * 0' # Weekly on Sundays at 02:00
|
|
|
|
jobs :
|
|
build :
|
|
name : Build and Test
|
|
runs-on : ubuntu-latest
|
|
steps :
|
|
- uses : actions/checkout@master
|
|
|
|
- name : Reduce Git repository size.
|
|
run : |
|
|
git gc --prune=now --aggressive
|
|
|
|
- name : Cache PHP dependencies
|
|
uses : actions/cache@v2
|
|
with :
|
|
path : vendor
|
|
key : ${{ runner.OS }}-build-${{ hashFiles('**/composer.lock') }}
|
|
|
|
- name : Set console permissions and clear static assets.
|
|
run : |
|
|
rm -rf web/static/dist
|
|
rm -rf web/static/webpack.json
|
|
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 : Set up functional test environment.
|
|
run : |
|
|
cp sample.env .env
|
|
cp azuracast.sample.env azuracast.env
|
|
cp docker-compose.sample.yml docker-compose.yml
|
|
docker-compose pull web
|
|
|
|
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/
|
|
chmod 777 tests/_support/_generated
|
|
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/*
|
|
|
|
- name : Upload built static assets and translations
|
|
uses : actions/upload-artifact@v2
|
|
with :
|
|
name : assets
|
|
if-no-files-found : error
|
|
path : |
|
|
resources/locale/compiled
|
|
resources/locale/translations.json
|
|
web/static/dist
|
|
web/static/webpack.json
|
|
web/static/assets.json
|
|
|
|
publish :
|
|
name : Publish
|
|
needs : build
|
|
runs-on : ubuntu-latest
|
|
if : github.event_name == 'push' || github.event_name == 'schedule'
|
|
steps :
|
|
- uses : actions/checkout@master
|
|
|
|
- name : Download built static assets from previous step
|
|
uses : actions/download-artifact@v2
|
|
with :
|
|
name : assets
|
|
|
|
- name : Set up QEMU
|
|
uses : docker/setup-qemu-action@v1
|
|
|
|
- name : Set up Docker Buildx
|
|
uses : docker/setup-buildx-action@v1
|
|
|
|
- name : Login to DockerHub
|
|
uses : docker/login-action@v1
|
|
with :
|
|
username : ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password : ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name : Login to GitHub Container Registry
|
|
uses : docker/login-action@v1
|
|
with :
|
|
registry : ghcr.io
|
|
username : ${{ github.repository_owner }}
|
|
password : ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name : Determine Tag Name
|
|
id : tag
|
|
run : |
|
|
BRANCH_NAME=${GITHUB_REF#refs/heads/}
|
|
if [ $BRANCH_NAME == 'main' ]; then
|
|
BRANCH_NAME="latest"
|
|
fi
|
|
|
|
echo "::set-output name=TAG::${BRANCH_NAME}"
|
|
|
|
- name : Publish to Docker Hub
|
|
uses : docker/build-push-action@v2
|
|
with :
|
|
context : .
|
|
platforms : linux/amd64,linux/arm64
|
|
cache-from : type=registry,ref=azuracast/azuracast_web_v2:${{ steps.tag.outputs.TAG }}
|
|
push : true
|
|
tags : |
|
|
azuracast/azuracast_web_v2:${{ steps.tag.outputs.TAG }}
|
|
ghcr.io/azuracast/web_v2:${{ steps.tag.outputs.TAG }}
|