Nightly #109
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: Nightly | |
on: | |
workflow_dispatch: | |
inputs: | |
skip-test: | |
description: 'Skip the tests' | |
required: false | |
type: boolean | |
default: false | |
schedule: | |
- cron: '0 1 * * *' | |
jobs: | |
build-test: | |
name: Build and Test Nightly | |
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.skip-test == 'false') | |
uses: ./.github/workflows/build-test.yml | |
with: | |
release: false | |
deploy: | |
needs: | |
- build-test | |
if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && !failure() && !cancelled() | |
name: Deploy and Release Nightly | |
runs-on: ubuntu-latest | |
permissions: write-all | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@main | |
with: | |
tool-cache: false | |
large-packages: false | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Set up containerd image store feature | |
uses: nick-invision/retry@master | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: | | |
make setup_dev_env | |
- name: Output Docker info | |
run: docker info | |
- name: Set Selenium base version | |
uses: ./.github/actions/get-latest-upstream | |
with: | |
release: false | |
gh_cli_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Sets build date | |
run: | | |
echo "BUILD_DATE=$(date '+%Y%m%d')" >> $GITHUB_ENV | |
make set_build_multiarch | |
cat .env | xargs -I {} echo {} >> $GITHUB_ENV | |
- name: Sets prerelease to nightly | |
run: | | |
echo "PRERELEASE=true" >> $GITHUB_ENV | |
echo "NAME=${NAMESPACE}" >> $GITHUB_ENV | |
echo "AUTHORS=${AUTHORS}" >> $GITHUB_ENV | |
env: | |
NAMESPACE: ${{ vars.DOCKER_NAMESPACE || 'selenium' }} | |
AUTHORS: ${{ vars.AUTHORS || 'SeleniumHQ' }} | |
- name: Build base image to get Grid version | |
run: VERSION="local" BUILD_DATE=${BUILD_DATE} make base | |
- name: Get Grid version | |
# sed used to remove last comma of Selenium version output | |
run: | | |
echo "GRID_VERSION=$(docker run --rm ${NAME}/base:local-${BUILD_DATE} java -jar /opt/selenium/selenium-server.jar hub --version | awk '{print $3}' | sed 's/\(.*\),/\1 /')" | awk '{$1=$1;print}' >> $GITHUB_ENV | |
- name: Display Grid version and set Base version | |
run: | | |
echo ${GRID_VERSION} | |
echo "BASE_VERSION=$(echo ${GRID_VERSION})" >> $GITHUB_ENV | |
echo "BASE_RELEASE=nightly" >> $GITHUB_ENV | |
- name: Update tag nightly | |
uses: richardsimko/update-tag@v1.0.11 | |
with: | |
tag_name: ${{ env.BASE_RELEASE }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build images | |
uses: nick-invision/retry@master | |
with: | |
timeout_minutes: 90 | |
max_attempts: 3 | |
retry_wait_seconds: 60 | |
command: PLATFORMS="${PLATFORMS}" VERSION="${GRID_VERSION}" BUILD_DATE=${BUILD_DATE} make build | |
- name: Build Helm chart | |
uses: nick-invision/retry@master | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
retry_wait_seconds: 10 | |
command: | | |
make chart_build_nightly | |
echo "CHART_PACKAGE_PATH=$(cat /tmp/selenium_chart_version)" >> $GITHUB_ENV | |
echo "CHART_FILE_NAME=$(basename $(cat /tmp/selenium_chart_version))" >> $GITHUB_ENV | |
- name: Login Docker Hub | |
run: | | |
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" | |
helm registry login registry-1.docker.io -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" | |
env: | |
DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} | |
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} | |
- name: Tag images as nightly | |
run: VERSION="${GRID_VERSION}" BUILD_DATE=${BUILD_DATE} make tag_nightly | |
- name: Deploy nightly tag | |
uses: nick-invision/retry@master | |
with: | |
timeout_minutes: 20 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: VERSION="${GRID_VERSION}" BUILD_DATE=${BUILD_DATE} make release_nightly | |
- name: Push Helm chart to registry | |
uses: nick-invision/retry@master | |
with: | |
timeout_minutes: 20 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: make chart_release | |
- name: Get current latest tag | |
run: echo "LATEST_TAG=$(git describe --tags --abbrev=0 --exclude=nightly --exclude=selenium-grid*)" >> $GITHUB_ENV | |
- name: Display latest tag | |
run: echo ${LATEST_TAG} | |
- name: Sets env var for nightly tag | |
run: | | |
echo "NEXT_TAG=nightly" >> $GITHUB_ENV | |
echo "FILTER_IMAGE_TAG=nightly" >> $GITHUB_ENV | |
- name: Create release notes (release_notes.md) | |
run: ./generate_release_notes.sh ${LATEST_TAG} origin/trunk ${GRID_VERSION} ${BUILD_DATE} | |
- name: Set up Python | |
uses: actions/setup-python@main | |
with: | |
python-version: '3.11' | |
check-latest: true | |
- name: Update tag in docs and files | |
run: ./update_tag_in_docs_and_files.sh ${LATEST_TAG} ${NEXT_TAG} | |
- name: Delete previous nightly tag if any | |
uses: cb80/delrel@main | |
with: | |
tag: ${{ env.BASE_RELEASE }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create Nightly Release | |
id: create_release | |
uses: softprops/action-gh-release@master | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag_name: ${{ env.BASE_RELEASE }} | |
name: "Nightly" | |
body_path: "release_notes.md" | |
files: | | |
${{ env.CHART_PACKAGE_PATH }} | |
generate_release_notes: true | |
draft: false | |
prerelease: true | |
append_body: false |