Skip to content

Merge docs/extract locales to CI workflow #340

Merge docs/extract locales to CI workflow

Merge docs/extract locales to CI workflow #340

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
concurrency:
# different events on the same ref can run in parallel
# different refs on the same event can run in parallel
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name}}
cancel-in-progress: true
env:
docs_artifact: docs
jobs:
context:
runs-on: ubuntu-latest
outputs:
is_fork: ${{ steps.context.outputs.is_fork }}
is_dependabot: ${{ steps.context.outputs.is_dependabot }}
is_push_master: ${{ steps.context.outputs.is_push_master }}
is_ci: ${{ steps.context.outputs.is_ci }}
steps:
- name: Log context
shell: bash
run: |
cat <<EOF
${{ toJSON(github) }}
EOF
- name: Set context
id: context
shell: bash
run: |
is_push_master="${{ github.event_name == 'push' && github.ref_name == 'master' }}"
is_dependabot="${{ startsWith(github.head_ref, 'dependabot')}}"
is_ci="${{ contains(toJSON('["workflow_dispatch", "pull_request"]'), github.event_name)}}"
if [[ "${{ github.event_name }}" == 'pull_request' ]]; then
is_fork=${{ github.event.pull_request.head.repo.fork }}
else
is_fork="${{ github.event.repository.full_name != 'mozilla/addons-server' }}"
fi
echo "github.event.repository.full_name ${{ github.event.repository.full_name }}"
echo "is_push_master=${is_push_master}" >> $GITHUB_OUTPUT
echo "is_fork=${is_fork}" >> $GITHUB_OUTPUT
echo "is_dependabot=${is_dependabot}" >> $GITHUB_OUTPUT
echo "is_ci=${is_ci}" >> $GITHUB_OUTPUT
echo "event_name: ${{ github.event_name }}"
cat $GITHUB_OUTPUT
build:
runs-on: ubuntu-latest
needs: context
outputs:
digest: ${{ steps.build.outputs.digest }}
version: ${{ steps.build.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Build Docker image
if: ${{ !needs.context.outputs.is_fork && !needs.context.outputs.is_dependabot }}
id: build
uses: ./.github/actions/build-docker
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
push: true
test_make_docker_configuration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v2
- name: Install dependencies
shell: bash
run: npm ci
- name: Check make/docker configuration
shell: bash
run: |
docker compose version
npm exec jest -- ./tests/make --runInBand
check:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Create failure
id: failure
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
exit 1
continue-on-error: true
- name: Verify failure
if: always()
run: |
if [ "${{ steps.failure.outcome }}" -ne "failure" ]; then
echo "Expected failure"
exit 1
fi
- name: Check (special characters in command)
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
echo 'this is a question?'
echo 'a * is born'
echo 'wow an array []'
- name: Manage py check
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make check
- name: Codestyle
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make lint-codestyle
docs_build:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/configure-pages@v4
- name: Build Docs
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
compose_file: docker-compose.yml
run: |
make docs
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs/_build/html'
name: ${{ env.docs_artifact }}
docs_deploy:
needs: context
if: ${{ needs.context.outputs.is_push_master }}
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
with:
artifact_name: ${{ env.docs_artifact }}
locales:
runs-on: ubuntu-latest
needs: [build, context]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Extract Locales
uses: ./.github/actions/run-docker
with:
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
compose_file: docker-compose.yml
run: make extract_locales
- name: Push Locales (fork)
if: ${{ needs.context.outputs.is_fork }}
shell: bash
run: |
echo """
Github actions are not authorized to push from workflows triggered by forks.
We cannot verify if the l10n extraction push will work or not.
Please submit a PR from the base repository if you are modifying l10n extraction scripts.
"""
- name: Push Locales
if: ${{ !needs.context.outputs.is_fork }}
shell: bash
run: |
args="${{ needs.context.outputs.is_push_master == true && '' || '--dry-run' }}"
make push_locales ARGS="${args}"
test_test_addons_versions_files_ratings:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_addons_versions_files_ratings)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_addons_versions_files_ratings
test_amo_lib_locales_and_signing:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_amo_lib_locales_and_signing)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_amo_lib_locales_and_signing
test_needs_locales_compilation:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_needs_locales_compilation)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_needs_locales_compilation
test_static_assets:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_static_assets)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
# TODO: we should remove this once we
# a) update the asset tests to look in the static-assets folder
# b) copy the static file into the container also.
run: |
make update_assets
make test_static_assets
test_devhub:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_devhub)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_devhub
test_main:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_main)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_main
test_reviewers_and_zadmin:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_reviewers_and_zadmin)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_reviewers_and_zadmin
test_internal_routes_allowed:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_internal_routes_allowed)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_internal_routes_allowed
test_es_tests:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Test (test_es_tests)
uses: ./.github/actions/run-docker
with:
services: ''
digest: ${{ needs.build.outputs.digest }}
version: ${{ needs.build.outputs.version }}
run: |
make test_es_tests