Merge docs/extract locales to CI workflow #341
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
# repository on a pull request refers to the base which is always mozilla/addons-server | |
is_fork=${{ github.event.pull_request.head.repo.fork }} | |
else | |
# Repository on a push refers to the head which would be the fork | |
is_fork="${{ github.event.repository.fork }}" | |
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 |