# Copyright 2023 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Cut a release whenever a new tag is pushed to the repo.
name: Release

on:
  push:
    tags:
      - "*.*.*"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Create release archive and notes
        run: .github/workflows/create_archive_and_notes.sh
      - name: Publish wheel dist
        env:
          # This special value tells pypi that the user identity is supplied within the token
          TWINE_USERNAME: __token__
          # Note, the PYPI_API_TOKEN is for the rules-python pypi user, added by @rickylev on
          # https://github.com/bazelbuild/rules_python/settings/secrets/actions
          TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
        run: bazel run --stamp --embed_label=${{ github.ref_name }} //python/runfiles:wheel.publish
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          # Use GH feature to populate the changelog automatically
          generate_release_notes: true
          body_path: release_notes.txt
          fail_on_unmatched_files: true
          files: rules_python-*.tar.gz
