shaka-packager/.github/workflows
Joey Parrish 68b50f656d build: Stop using hermetic clang, libc++, etc
This brings our default build config more in line with what is
necessary for some platforms anyway: using the system-installed
toolchain and sysroot to build everything.

We will no longer fetch source or binaries for any specific build
tools, such as libc++, clang, gold, binutils, or valgrind.

The main part of this change is the changing of default gyp settings
in gyp_packager.py.  For this, a bug in gyp_packager.py had to be
fixed, in which similar GYP_DEFINE key names (such as clang and
host_clang) would conflict, causing some defaults not to be installed
properly.

In order to enable clang=0 by default, some changes had to be made in
common.gypi:
  - compiler macros added to fix a compatibility issue between
    Chromium's base/mac/ folder and the actual OSX SDK
	- replaced clang_warning_flags variables with standard cflags
	  settings, plus xcode_settings for OSX
  - turned off warnings-as-errors for non-shaka code, rather than
		allow-listing specific warning types, since we can't actually fix
    those warnings on any platform
  - disabled two specific warnings in shaka code, both of which are
    caused by headers from our non-shaka dependencies

Also, one warning (missing "override" keyword) has been fixed in
vod_media_info_dump_muxer_listener.h.

Although these changes were done to make building simpler on a wider
array of platforms (arm64, for example), it seems to make the build a
bit faster, too.  For me, at least, on my main Linux workstation:
  - "gclient sync" now runs 20-30% faster
  - "ninja -C out/Release" now runs 5-13% faster

The following environment variables are no longer required:
  - DEPOT_TOOLS_WIN_TOOLCHAIN
  - MACOSX_DEPLOYMENT_TARGET
Documentation, Dockerfiles, and GitHub Actions workflows have been
updated to reflect this.

The following GYP_DEFINES are no longer required for anyone:
  - clang=0
  - host_clang=0
  - clang_xcode=1
  - use_allocator=none
  - use_experimental_allocator_shim=0
Documentation, Dockerfiles, and GitHub Actions workflows have been
updated to reflect this.

The following repos are no longer dependencies in gclient:
  - binutils
  - clang
  - gold
  - libc++
  - libc++abi
  - valgrind

The following gclient hooks have been removed:
  - clang
  - mac_toolchain
  - sysroot

Change-Id: Ie94ccbeec722ab73c291cb7df897d20761a09a70
2021-07-29 13:54:44 -07:00
..
custom-actions build: Stop using hermetic clang, libc++, etc 2021-07-29 13:54:44 -07:00
README.md Fix python linter errors and add linter checks to CI 2021-06-21 21:46:48 +00:00
build_and_test.yaml Fix python linter errors and add linter checks to CI 2021-06-21 21:46:48 +00:00
docker_hub_release.yaml Make CI workflows safe when testing in a fork 2021-06-17 13:36:59 -07:00
github_release.yaml Fix python linter errors and add linter checks to CI 2021-06-21 21:46:48 +00:00
npm_release.yaml Make CI workflows safe when testing in a fork 2021-06-17 13:36:59 -07:00
update_docs.yaml Refactor actions and workflows 2021-06-17 10:32:24 -07:00

README.md

GitHub Actions CI

Actions

  • custom-actions/lint-packager: Lints Shaka Packager. You must pass fetch-depth: 2 to actions/checkout in order to provide enough history for the linter to tell which files have changed.
  • custom-actions/build-packager: Builds Shaka Packager. Leaves build artifacts in the "artifacts" folder. Requires OS-dependent and build-dependent inputs.
  • custom-actions/test-packager: Tests Shaka Packager. Requires OS-dependent and build-dependent inputs.
  • custom-actions/build-docs: Builds Shaka Packager docs.

Workflows

  • On PR:
    • build_and_test.yaml: Builds and tests all combinations of OS & build settings. Also builds docs.
  • On release tag:
    • github_release.yaml: Creates a draft release on GitHub, builds and tests all combinations of OS & build settings, builds docs on all OSes, attaches static release binaries to the draft release, then fully publishes the release.
  • On release published:
    • docker_hub_release.yaml: Builds a Docker image to match the published GitHub release, then pushes it to Docker Hub.
    • npm_release.yaml: Builds an NPM package to match the published GitHub release, then pushes it to NPM.
    • update_docs.yaml: Builds updated docs and pushes them to the gh-pages branch.

Required Repo Secrets

  • DOCKERHUB_CI_USERNAME: The username of the Docker Hub CI account
  • DOCKERHUB_CI_TOKEN: An access token for Docker Hub
  • DOCKERHUB_PACKAGE_NAME: Not a true "secret", but stored here to avoid someone pushing bogus packages to Docker Hub during CI testing from a fork
    • In a fork, set to a private name which differs from the production one
  • NPM_CI_TOKEN: An "Automation"-type access token for NPM for the shaka-bot account
  • NPM_PACKAGE_NAME: Not a true "secret", but stored here to avoid someone pushing bogus packages to NPM during CI testing from a fork
    • In a fork, set to a private name which differs from the production one
  • SHAKA_BOT_TOKEN: A GitHub personal access token for the shaka-bot account, with workflow scope