fix(HLS): Skip segments without duration and without partial segments… #1045
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: Release | |
on: | |
push: | |
branches: | |
- main | |
- v[0-9]* | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
outputs: | |
release_created: ${{ steps.release.outputs.release_created }} | |
tag_name: ${{ steps.release.outputs.tag_name }} | |
steps: | |
# Create/update release PR | |
- uses: google-github-actions/release-please-action@v3 | |
id: release | |
with: | |
# Required input to specify the release type (node package). | |
release-type: node | |
# Make sure we create the PR against the correct branch. | |
default-branch: ${{ github.ref_name }} | |
# Use a special shaka-bot access token for releases. | |
token: ${{ secrets.RELEASE_PLEASE_TOKEN }} | |
# If we didn't create a release, we may have created or updated a PR. | |
# Check out the code, then update the Player version in the PR. | |
- uses: actions/checkout@v3 | |
if: steps.release.outputs.release_created == false | |
with: | |
# Use a special shaka-bot access token for releases. | |
token: ${{ secrets.RELEASE_PLEASE_TOKEN }} | |
- name: Custom update Player version | |
if: steps.release.outputs.release_created == false | |
run: | | |
# Check out the branch that release-please created. | |
# If it does not exist, FAIL! | |
git fetch | |
git checkout release-please--branches--${{ github.ref_name }}--components--shaka-player || exit 1 | |
# If it does exist, update lib/player.js in the PR branch, so that the | |
# -uncompiled tag remains in the player version in that context. | |
VERSION="v$(jq -r .version package.json)-uncompiled" | |
sed -e "s/^\\(shaka.Player.version =\\).*/\\1 '$VERSION';/" \ | |
-i lib/player.js | |
git add lib/player.js | |
# Set missing git config for the commit. | |
git config user.name "shaka-bot" | |
git config user.email "[email protected]" | |
# Update the PR. | |
git commit --amend --no-edit | |
git push -f | |
# The jobs below are all conditional on a release having been created by | |
# someone merging the release PR. They all run in parallel. | |
tag-main: | |
runs-on: ubuntu-latest | |
needs: release | |
if: needs.release.outputs.release_created && endsWith(needs.release.outputs.tag_name, '.0') == false | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# Check out the origin repo, and do it at main, not the PR branch. | |
ref: main | |
# Use a special shaka-bot access token for releases. | |
token: ${{ secrets.RELEASE_PLEASE_TOKEN }} | |
- name: Tag the main branch | |
run: | | |
# Set missing git config for the tag. | |
git config user.name "shaka-bot" | |
git config user.email "[email protected]" | |
# Tag the main branch. | |
VERSION=${{ needs.release.outputs.tag_name }} | |
git tag -m "$VERSION-main" "$VERSION-main" | |
git push origin "$VERSION-main" | |
npm: | |
runs-on: ubuntu-latest | |
needs: release | |
if: needs.release.outputs.release_created | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
persist-credentials: false | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: 16 | |
registry-url: 'https://registry.npmjs.org' | |
- name: Compute NPM tags | |
run: | | |
# NPM publish always sets a tag. If you don't provide an explicit | |
# tag, you get the "latest" tag by default, but we want "latest" to | |
# always point to the highest version number. So we set an explicit | |
# tag on every "publish" command, then follow up with a command to | |
# set "latest" only if this release was the highest version yet. | |
# The explicit tag is based on the branch. If the git tag is v4.4.1, | |
# the branch was v4.4.x, and the explicit NPM tag should be | |
# v4.4-latest. | |
GIT_TAG_NAME=${{ needs.release.outputs.tag_name }} | |
NPM_TAG=$(echo "$GIT_TAG_NAME" | cut -f 1-2 -d .)-latest | |
echo "NPM_TAG=$NPM_TAG" >> $GITHUB_ENV | |
# We only tag the NPM package as "latest" if this release is the | |
# highest version to date. | |
RELEASE_TAGS=$(git tag | grep ^v[0-9] | grep -Ev -- '-(master|main)') | |
LATEST_RELEASE=$(echo "$RELEASE_TAGS" | sort --version-sort | tail -1) | |
if [[ "$GIT_TAG_NAME" == "$LATEST_RELEASE" ]]; then | |
NPM_LATEST=true | |
else | |
NPM_LATEST=false | |
fi | |
echo NPM_LATEST=$NPM_LATEST >> $GITHUB_ENV | |
# Debug the decisions made here. | |
echo "Latest release: $LATEST_RELEASE" | |
echo "This release: $GIT_TAG_NAME" | |
echo "NPM tag: $NPM_TAG" | |
echo "NPM latest: $NPM_LATEST" | |
- run: npm ci | |
- name: Publish | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} | |
run: | | |
# Publish with an explicit tag. | |
npm publish --tag "$NPM_TAG" | |
# Add the "latest" tag if needed. | |
if [[ "$NPM_LATEST" == "true" ]]; then | |
NPM_VERSION=$(npm version --json | jq -r '."shaka-player"') | |
npm dist-tag add "shaka-player@$NPM_VERSION" latest | |
fi | |
- run: npm pack | |
- uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ needs.release.outputs.tag_name }} | |
file: shaka-player-*.tgz | |
file_glob: true | |
overwrite: true | |
appspot: | |
runs-on: ubuntu-latest | |
needs: release | |
if: needs.release.outputs.release_created | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
persist-credentials: false | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: 16 | |
registry-url: 'https://registry.npmjs.org' | |
- name: Compute appspot subdomain and promotion | |
run: | | |
# This is the same as the version tag, but with dots replaced by | |
# dashes. For example, v3.2.2 would have the subdomain v3-2-2. | |
APPSPOT_SUBDOMAIN=$( echo ${{ needs.release.outputs.tag_name }} | sed -e 's/\./-/g' ) | |
echo APPSPOT_SUBDOMAIN=$APPSPOT_SUBDOMAIN >> $GITHUB_ENV | |
# "Promoting" an appspot deployment makes it the default which shows | |
# up on shaka-player-demo.appspot.com (no subdomain). This should be | |
# done for the latest release version from the latest release branch. | |
RELEASE_TAGS=$(git tag | grep ^v[0-9] | grep -Ev -- '-(master|main)') | |
LATEST_RELEASE=$(echo "$RELEASE_TAGS" | sort --version-sort | tail -1) | |
TAG_NAME=${{ needs.release.outputs.tag_name }} | |
if [[ "$TAG_NAME" == "$LATEST_RELEASE" ]]; then | |
APPSPOT_PROMOTE=true | |
else | |
APPSPOT_PROMOTE=false | |
fi | |
APPSPOT_PROMOTE=$APPSPOT_PROMOTE >> $GITHUB_ENV | |
# Debug the decisions made here. | |
echo "Subdomain: $APPSPOT_SUBDOMAIN" | |
echo "Latest release: $LATEST_RELEASE" | |
echo "This release: $TAG_NAME" | |
echo "Promote: $APPSPOT_PROMOTE" | |
- uses: ./.github/workflows/custom-actions/prep-for-appspot | |
- uses: google-github-actions/auth@v0 | |
with: | |
credentials_json: '${{ secrets.APPENGINE_DEPLOY_KEY }}' | |
- uses: google-github-actions/deploy-appengine@v0 | |
with: | |
project_id: shaka-player-demo | |
version: ${{ env.APPSPOT_SUBDOMAIN }} | |
promote: ${{ env.APPSPOT_PROMOTE }} | |
auto-branch: | |
runs-on: ubuntu-latest | |
needs: release | |
if: needs.release.outputs.release_created && endsWith(needs.release.outputs.tag_name, '.0') | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
# Use a special shaka-bot access token for releases. | |
token: ${{ secrets.RELEASE_PLEASE_TOKEN }} | |
- name: Create release branch | |
run: | | |
TAG=${{ needs.release.outputs.tag_name }} | |
BRANCH=$(echo "$TAG" | sed -e 's/\.0$/.x/') | |
git push origin HEAD:"$BRANCH" |