Commit Graph

61 Commits

Author SHA1 Message Date
Joey Parrish 3c2d3c8ffc ci: Fix incremental coverage reports (#4602)
Broken in 062aa07e71 (#4588)
2022-10-19 16:02:41 -07:00
Joey Parrish 0209ba701c ci: Re-run PR tests when leaving draft mode (#4594)
Because our release PRs are created with the default GitHub token, they
do not trigger test runs. This is a feature of GitHub that prevents
recursive loops of workflows.

This change makes it so that marking a PR "ready for review" will
trigger the tests to run again. This gives us an easy way to trigger
test runs on a release PR, by marking it a draft, then marking it
"ready" again.
2022-10-18 16:53:49 -07:00
Joey Parrish 062aa07e71 ci: Update workflow syntax (#4588)
GitHub is deprecating the set-output syntax and moving to writing
outputs to a file. This updates our workflows to match.

See
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
2022-10-17 19:27:42 -07:00
Álvaro Velad Galván 4914201f86 feat: Allow customization of HLS Live behavior (#4578) 2022-10-16 00:32:10 -07:00
Joey Parrish df3e131392 ci: Fix reporting status from lab tests to PRs (#4541)
We were misreading the computed ref for tests (missing "outputs" in the
variable name), which led us to check out and test main instead of the
PR's head. This also led us to set status on the latest commit in main,
instead of on the PR.

Once the variable was read correctly and the correct ref was checked
out, I found that the ref argument to set-commit-status was actually not
usable, since "git rev-parse refs/pull/4528/head" would fail. But now
that we are checking out the correct commit, the ref argument turns out
to be unnecessary. Whatever we checked out is what we should report
status on.
2022-10-04 12:00:39 -07:00
Joey Parrish 945ad90fa8 ci: Revert "Fix reporting status from lab tests to PRs" (#4540)
Reverts shaka-project/shaka-player#4539

This doesn't actually fix the problem. I was too hasty in putting it up
for review.
2022-10-03 13:36:16 -07:00
Joey Parrish b7e9d4f8bd ci: Fix reporting status from lab tests to PRs (#4539)
The status reports were targetting main instead of the PR's HEAD.
2022-10-03 22:03:53 +02:00
Joey Parrish c12912d8bc ci: Fix missing coverage data from integration tests (#4534)
Player integration tests use the compiled bundle by default. This
prevents us from getting coverage data in these tests, since the
instrumentation was added to the uncompiled library only.

By collecting coverage data in uncompiled mode, we can fix this.
2022-09-29 16:00:08 -07:00
Joey Parrish 80e6124aa0 ci: Test on Safari 16 and 15 (#4531)
Since Safari 16 became the default on macos-11 images in GitHub, we are
updating our homedir installation of Safari 14 to Safari 15 instead.
This also renames that entry in the matrix from Safari-14 to Safari-old,
in recognition of the fact that we will probably have to continue
updating this.
2022-09-29 14:45:00 -07:00
Joey Parrish 9b039f33cb ci: Upload screenshot assets on failure (#4530)
This should make it possible (if not easy) to download screenshots and
diagnose layout test failures locally.
2022-09-29 14:38:48 -07:00
Joey Parrish c5a758846a ci: Add missing token for deflake workflow (#4480) 2022-09-12 11:05:24 -07:00
Joey Parrish 4d48930621 ci: Auto-deflake nightly selenium tests (#4472)
This workflow will trigger after the nightly Selenium tests.  If those tests failed, this "deflake" workflow will automatically re-run the failed jobs up to 3 times (total, including the original scheduled run).

This should help cut down on noise and help highlight actual platform-specific failures.  The flakiness of our tests and infrastructure will be tracked separately and addressed at a somewhat lower priority than test greenness.
2022-09-12 09:19:05 -07:00
Joey Parrish d8c09647f4 test: Split Selenium grid tests into multiple jobs (#4454)
This requires multiple self-hosted runners to be set up, but will
allow us to more easily read results and to re-run individual failed
jobs per browser.

This change also includes several optimizations that were motivated by
the split:
 - stop installing the GitHub CLI (now installed on newer self-hosted
   images, saves ~20 seconds)
 - cache node_modules (saves about ~1 minute if package-lock.json
   hasn't changed)
 - pre-build Shaka once in a GitHub VM instead of in parallel on
   multiple runner containers hosted on the same machine (saves ~45
   minutes w/ 12 runners in parallel)
2022-08-30 13:25:36 -07:00
Joey Parrish 324dcb8082 test: Fix incremental coverage stats (#4415)
The initial implementation had a bug where a class declaration
"statement" would be seen as covering all the lines of all the methods
in that class.  This change fixes that case, so that the lines of
methods and inner statements are not "part" of their outer containers.
2022-08-16 15:18:39 -07:00
Joey Parrish 460fadd12f test: Generate incremental code coverage data (#4406)
This generates a more detailed JSON coverage file containing maps of
exactly what statements were executed by tests.  This also extracts
the data from this file and updates the PR with a comment showing how
much of the changed code is covered by tests.
2022-08-16 11:19:40 -07:00
Joey Parrish 94b14dcc85 test: Upload coverage report for PR and nightly tests (#4390)
This will attach a code coverage report to PRs and to nightly tests,
both specifically from Chrome on Linux.  Reports will be attached to  
workflow runs whether or not the tests pass.
2022-08-12 10:56:16 -07:00
Joey Parrish bca2c9e3f1 ci: Fix Safari 14 tests (#4373)
The available package versions of Safari have changed.  This updates
to what is currently available.  This also updates to expect the
current format of the packages (pkg inside zip).
2022-07-25 11:15:12 -07:00
Joey Parrish 84fe995471 ci: Fix player version update on release (#4239)
The v3.2.7 and v3.3.5 releases went out without updating the version
number in lib/player.js.  This fixes the workflow to match the
release-please branch name, and changes the workflow to fail if the
branch name changes again in the future.
2022-05-17 17:52:33 -07:00
Joey Parrish c2f1fb52d4 ci: Drop release-please config (#4180)
This is no longer needed after the first release from the main branch
(v4.0.0).
2022-05-02 20:01:19 -07:00
Joey Parrish 4efe853042 ci: Do not create a -main tag if the release is from main (#4181)
Having both v4.0.0 and v4.0.0-main tags refer to the same commit
confuses some of our build scripts because git describe can produce
either tag.  So we should only create -main tags when the release is
from a branch.
2022-05-02 19:59:54 -07:00
Joey Parrish 0d95aeab0b test: Run DRM tests by default (#4174)
This changes the default behavior of the test runner.  Now tests that
require access to license servers will run by default.  To disable DRM
tests (for example, if there is no connection to the outside
internet), use --no-drm.
2022-04-29 16:11:39 -07:00
Joey Parrish 71b6de8bbd ci: Fix -main tags on release (#4154)
These tags should be attached to the head of the main branch, so that
is what we should check out during the tagging job.

In v3.1.7, v3.2.5, and v3.3.3, we accidentally tagged the heads of the
release branches.  The `-main` tags for those releases had to be
corrected manually.
2022-04-25 15:50:58 -07:00
Joey Parrish 0304f92d3c ci: Fix appspot subdomain computation (#4153)
We should replace all dots with dashes, not just the first one.
2022-04-25 13:29:03 -07:00
Joey Parrish a540fec627 ci: Fix typo in demo index workflow (#4130)
Closes #4074
2022-04-15 08:40:56 -07:00
Joey Parrish 783db97778 ci: Cancel old test runs when a PR is updated (#4127)
If another instance of the build-and-test workflow is started for the
same PR, cancel the old one.  If a PR is updated and a new test run is
started, the old test run will be cancelled automatically to conserve
resources.
2022-04-14 10:08:10 -07:00
Joey Parrish b11bec0e2d ci: Fix generation of demo index by fetching all history (#4126)
The demo index generation is now based on the git tags.  So when
checking out the repo to generate the index, the entire history is
needed.

Closes #4074
2022-04-14 10:01:18 -07:00
Joey Parrish d8b3341720 test: Run tests on a custom Selenium grid (#4117)
Includes a YAML config file for our lab, and documentation on how to
create a custom config for another Selenium grid.

A workflow will run tests nightly in the Shaka lab, using a
self-hosted runner with access to our private grid.

The workflow can also be triggered manually by maintainers to test a
PR in the lab.  This will report status back to the PR.
2022-04-12 11:32:59 -07:00
Joey Parrish 2eca4b2ef5 ci: Generate static content for demo index at deploy time (#4119)
Rather than runtime-querying of appengine versions within the
appengine environment, we can instead generate the index at deployment
time (from git tags) and just serve static content.  This simplifies
the system and avoids dependence on Google Cloud.

This was less feasible before we adopted GitHub Actions, but is now
relatively simple.  The index will be regenerated when the index code
is updated or when a new release is created.

Closes #4074
2022-04-12 10:10:41 -07:00
Joey Parrish cabb17a44c ci: Test on Safari 14 (#4095)
In the GitHub Actions environment, it is now possible to install and
run tests on Safari 14.  Though not completely straightforward, it
doesn't add much code to the workflow and shouldn't be too difficult
to maintain.

Closes #3899
2022-04-01 07:56:23 -07:00
Joey Parrish 62c60527bc ci: Fix Docker build (#4078)
This fixes the workflow job failing because of missing sources, and it
also fixes the job to run the compiler, not just build the image that
_could_ run the compiler.

Closes #4076
2022-03-29 10:56:57 -07:00
Joey Parrish f6d5b1025f ci: Fix broken test workflow
There is a typo in the workflow that is causing the workflow to be
rejected by GitHub.

I am not sure how I managed to merge this mistake in the first place.
2022-03-22 09:17:40 -07:00
Joey Parrish a4ddab37d5 ci: Fix appspot deployment failure (#4049)
A couple of steps were in the wrong order.  We must compute tags and
subdomains before the "prep" step, which wipes out .git.
2022-03-21 19:23:51 -07:00
Joey Parrish 1399ec25eb ci: Auto-create release branch for feature release (#4047)
When an automated feature release is created, we should also create
the corresponding release branch.
2022-03-21 19:21:32 -07:00
Joey Parrish 5e2c700bbe ci: Use fetch-depth option to actions/checkout (#4048)
This option will get us a full history upfront, so there is no need
for git fetch.
2022-03-21 15:32:01 -07:00
Joey Parrish 539b5af5f9 ci: Test Docker build (#4043)
This also simplifies the Docker build by removing things related to
"pip", which we do not use.
2022-03-21 15:31:37 -07:00
Joey Parrish 218d05b661 ci: Use simplified expression syntax (#4046)
The "if" fields do not need to use expression syntax (`${{ }}`), and
some conditionals will be easier to read if we omit that.

<!--
Please remember to:

1. Use Conventional Commits syntax (fix: ..., feat: ..., etc.) in commits and
   PR title (https://www.conventionalcommits.org/)
2. Tag any related or fixed issues ("Issue #123", "Closes #420")
3. Sign the Google CLA if you haven't (https://cla.developers.google.com)

You may delete this comment from the PR description.
-->
2022-03-21 15:31:27 -07:00
Joey Parrish b4582fdbaf ci: Fix release PR name and email (#4045)
I had set these backwards (name as email and vice-versa).  Oops!
2022-03-21 15:31:07 -07:00
Joey Parrish 3f838cfd3a ci: Deploy demo to appspot nightly and on releases (#4038)
This imports our appspot code into the repo and updates all of it to
Python 3.
2022-03-21 11:15:40 -07:00
Joey Parrish 847744cede ci: Revert to upstream release-please-action (#4018)
The fix we needed has now been released there.
2022-03-08 16:43:16 -08:00
Joey Parrish 1507b1e844 chore: Update URLs after moving projects (#4008) 2022-03-03 14:34:40 -08:00
Shaka Bot d6bdf9a4c2 chore: Sync common workflows (#4003)
This is an automated sync of common workflows for this organization.
The upstream source is:
https://github.com/shaka-project/shaka-github-tools/commit/b39597e92d44c25ae64ab15a963ec74a4c7269ed

Co-authored-by: Shaka Bot <shaka-bot@users.noreply.github.com>
2022-02-28 21:13:15 -08:00
Shaka Bot 5894b8cd3f chore: Sync common workflows (#3997)
This is an automated sync of common workflows for this organization.
The upstream source is:
https://github.com/joeyparrish/shaka-github-tools/commit/82c303a994400013debc05aa30e988ddbefbbb36

Co-authored-by: Shaka Bot <shaka-bot@users.noreply.github.com>
2022-02-23 17:28:57 -08:00
Joey Parrish bbca5e9773 ci: Rename workflows (#3996)
Now that we are building tools to keep common workflows in sync across
repos, we should use the same names across repos.  This brings Shaka
Player workflow names in line with everything else.

See https://github.com/joeyparrish/shaka-github-tools/pull/5
2022-02-23 08:31:42 -08:00
Joey Parrish cef918d190 ci: Fix several release workflow bugs (#3992)
1. When release-please creates release PRs, it removes the -uncompiled
tag in the version number in lib/player.js.  This adds a step to the
workflow to maintain the player.js version manually.

2. This also adds a new job that tags the master branch after a
release PR is merged.  We maintain the -master tags on the master
branch corresponding to each release so that it is easier to manage
the range of commits for cherry-picks.

3. The "npm ci" step was failing because our package-lock.json was not
compatible with v12 of NodeJS.  This updates our workflow to use v16.
The npm release workflow has now been tested in a fork up until the
publish step.

4. The tagging and GitHub release publication parts of the workflow
were previously failing due to an issue with release-please parsing
the branch name.  This has now been fixed, and is awaiting an upstream
merge.  For now, we can use my forked version.

Closes #3968 (branch parsing failure)
Issue #3969 (npm release is now tested up to the publish step)
Closes #3971 (master branch tags)
Closes #3974 (missing -uncompiled in lib/player.js)
2022-02-22 16:02:25 -08:00
Joey Parrish 3fe8a3b947 ci: Test PRs against release branches, too (#3961) 2022-02-16 15:09:25 -08:00
Joey Parrish 6023878c8d ci: Fix typo in dry_run parameter for sync-labels (#3956) 2022-02-15 17:05:01 -08:00
Joey Parrish b2a8fcdfaa ci: Add missing token parameter to sync-labels workflow (#3954) 2022-02-15 15:01:05 -08:00
Joey Parrish 46bb67bf56 ci: Synchronize issue labels using a central configuration (#3951) 2022-02-15 12:05:16 -08:00
Joey Parrish f04b8558d7 ci: Expand PR title validation triggers (#3946)
Force-pushes from automated PRs (like release-please) do not seem to
trigger any of the normal PR triggers (opened, edited, synchronize).
In fact, even an exhaustive list of types will not work.  So here we
add triggers for reviews, so that the validation will run after
someone approves such a PR.  This is critical since this is a required
status check in most of our repos.  If the workflow doesn't run, the
release PR can't be merged.
2022-02-14 11:20:18 -08:00
Joey Parrish e2ec5ebd52 ci: Add workflow for automated release PRs (#3942)
This includes a temporary config file to bootstrap the workflow for
the master branch, whose commit and branch history is too confusing
for the tool to handle with defaults.  After v3.4.0 is released from
the master branch, these configs can be deleted.
2022-02-11 16:25:44 -08:00