Merge pull request #5 from Pluto-tv/feature/TRANS-4831-nighty-builds #1
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
# Copyright 2022 Google LLC | |
# | |
# Use of this source code is governed by a BSD-style | |
# license that can be found in the LICENSE file or at | |
# https://developers.google.com/open-source/licenses/bsd | |
name: GitHub Release | |
# Runs when a new tag is created that looks like a version number. | |
# | |
# 1. Creates a draft release on GitHub with the latest release notes | |
# 2. On all combinations of OS, build type, and library type: | |
# a. builds Packager | |
# b. builds the docs | |
# c. runs all tests | |
# d. attaches build artifacts to the release | |
# 3. Fully publishes the release on GitHub | |
# | |
# Publishing the release then triggers additional workflows for NPM, Docker | |
# Hub, and GitHub Pages. | |
# | |
# Can also be run manually for debugging purposes. | |
on: | |
push: | |
tags: | |
- "v*.*" | |
# For manual debugging: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "An existing tag to release." | |
required: True | |
jobs: | |
# TODO(joeyparrish): Switch to release-please | |
setup: | |
name: Setup | |
runs-on: ubuntu-latest | |
outputs: | |
tag: ${{ steps.compute_tag.outputs.tag }} | |
steps: | |
- name: Compute tag | |
id: compute_tag | |
# We could be building from a workflow dispatch (manual run) | |
# or from a pushed tag. If triggered from a pushed tag, we would like | |
# to strip refs/tags/ off of the incoming ref and just use the tag | |
# name. Subsequent jobs can refer to the "tag" output of this job to | |
# determine the correct tag name in all cases. | |
run: | | |
# Strip refs/tags/ from the input to get the tag name, then store | |
# that in output. | |
echo "::set-output name=tag::${{ github.event.inputs.tag || github.ref }}" \ | |
| sed -e 's@refs/tags/@@' | |
# TODO(joeyparrish): Switch to release-please | |
draft_release: | |
name: Create GitHub release | |
needs: setup | |
runs-on: ubuntu-latest | |
outputs: | |
release_id: ${{ steps.draft_release.outputs.id }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ needs.setup.outputs.tag }} | |
- name: Check changelog version | |
# This check prevents releases without appropriate changelog updates. | |
run: | | |
VERSION=$(packager/tools/extract_from_changelog.py --version) | |
if [[ "$VERSION" != "${{ needs.setup.outputs.tag }}" ]]; then | |
echo "" | |
echo "" | |
echo "***** ***** *****" | |
echo "" | |
echo "Version mismatch!" | |
echo "Workflow is targetting ${{ needs.setup.outputs.tag }}," | |
echo "but CHANGELOG.md contains $VERSION!" | |
exit 1 | |
fi | |
- name: Extract release notes | |
run: | | |
packager/tools/extract_from_changelog.py --release_notes \ | |
| tee ../RELEASE_NOTES.md | |
- name: Draft release | |
id: draft_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ needs.setup.outputs.tag }} | |
release_name: ${{ needs.setup.outputs.tag }} | |
body_path: RELEASE_NOTES.md | |
draft: true | |
lint: | |
needs: setup | |
name: Lint | |
uses: ./.github/workflows/lint.yaml | |
with: | |
ref: ${{ needs.setup.outputs.tag }} | |
build_and_test: | |
needs: [setup, lint, draft_release] | |
name: Build and test | |
uses: ./.github/workflows/build.yaml | |
with: | |
ref: ${{ needs.setup.outputs.tag }} | |
test_supported_linux_distros: | |
# Doesn't really "need" it, but let's not waste time on a series of docker | |
# builds just to cancel it because of a linter error. | |
needs: lint | |
name: Test Linux distros | |
uses: ./.github/workflows/test-linux-distros.yaml | |
with: | |
ref: ${{ needs.setup.outputs.tag }} | |
# TODO(joeyparrish): Switch to release-please | |
publish_release: | |
name: Publish GitHub release | |
needs: [draft_release, build_and_test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Publish release | |
uses: eregon/publish-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
release_id: ${{ needs.draft_release.outputs.release_id }} |