Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: disable logging outside of local domain (#644) #656

Open
wants to merge 6 commits into
base: SL22a
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 46 additions & 55 deletions .github/workflows/build-containers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,78 +9,69 @@ on:
- '*'

jobs:
ROOT5:
build:
if: github.repository_owner == 'star-bnl'
runs-on: ubuntu-latest
strategy:
matrix:
starenv: [root5]
compiler: [gcc485]
env:
STARENV: ${{ matrix.starenv }}-${{ matrix.compiler }}
steps:
- name: Get branch name
id: branch-name
uses: tj-actions/[email protected]
uses: tj-actions/branch-names@v6

- name: Define complete image tag
run: |
echo "TAG=${{ steps.branch-name.outputs.current_branch || steps.branch-name.outputs.tag }}-${{ env.STARENV }}" >> $GITHUB_ENV

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2

- name: Login to GitHub Container Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Rebuild up to base-stage
uses: docker/build-push-action@v2
- name: Build a release container
uses: docker/build-push-action@v3
with:
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root5-base:cache
file: docker/Dockerfile.root5
target: base-stage
push: true
tags: ghcr.io/${{ github.repository_owner }}/star-sw-root5-base:${{ steps.branch-name.outputs.current_branch }}_latest
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root5-base:cache,mode=max
build-args: |
starenv=${{ matrix.starenv }}
compiler=${{ matrix.compiler }}
load: true
tags: ghcr.io/${{ github.repository_owner }}/star-sw:${{ env.TAG }}

- name: Build release container
if: steps.branch-name.outputs.is_tag == 'true'
uses: docker/build-push-action@v2
with:
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root5-base:cache
file: docker/Dockerfile.root5
target: build-stage
push: true
tags: ghcr.io/${{ github.repository_owner }}/star-sw-root5-build:${{ steps.branch-name.outputs.tag }}
- name: Push container image
run: |
docker push ghcr.io/${{ github.repository_owner }}/star-sw:${{ env.TAG }}

ROOT6:
if: github.repository_owner == 'star-bnl'
runs-on: ubuntu-latest
steps:
- name: Get branch name
id: branch-name
uses: tj-actions/[email protected]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Create latest tag for default branch
if: ${{ steps.branch-name.outputs.is_tag == 'false' && steps.branch-name.outputs.is_default == 'true' && env.STARENV == 'root5-gcc485' }}
run: |
docker tag ghcr.io/${{ github.repository_owner }}/star-sw:${{ env.TAG }} ghcr.io/${{ github.repository_owner }}/star-sw:latest
docker push ghcr.io/${{ github.repository_owner }}/star-sw:latest

- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create latest tag for SL* branches
if: ${{ steps.branch-name.outputs.is_tag == 'false' && steps.branch-name.outputs.is_default == 'false' && env.STARENV == 'root5-gcc485' }}
run: |
docker tag ghcr.io/${{ github.repository_owner }}/star-sw:${{ env.TAG }} ghcr.io/${{ github.repository_owner }}/star-sw:${{ steps.branch-name.outputs.current_branch }}
docker push ghcr.io/${{ github.repository_owner }}/star-sw:${{ steps.branch-name.outputs.current_branch }}

- name: Rebuild up to base-stage
uses: docker/build-push-action@v2
with:
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root6-base:cache
file: docker/Dockerfile.root6
target: base-stage
push: true
tags: ghcr.io/${{ github.repository_owner }}/star-sw-root6-base:${{ steps.branch-name.outputs.current_branch }}_latest
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root6-base:cache,mode=max
- name: Create image tag based on pushed tag
if: ${{ steps.branch-name.outputs.is_tag == 'true' && env.STARENV == 'root5-gcc485' }}
run: |
docker tag ghcr.io/${{ github.repository_owner }}/star-sw:${{ env.TAG }} ghcr.io/${{ github.repository_owner }}/star-sw:${{ steps.branch-name.outputs.tag }}
docker push ghcr.io/${{ github.repository_owner }}/star-sw:${{ steps.branch-name.outputs.tag }}

- name: Build release container
if: steps.branch-name.outputs.is_tag == 'true'
uses: docker/build-push-action@v2
with:
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/star-sw-root6-base:cache
file: docker/Dockerfile.root6
target: build-stage
push: true
tags: ghcr.io/${{ github.repository_owner }}/star-sw-root6-build:${{ steps.branch-name.outputs.tag }}
build-cleanup:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: actions/checkout@v3
- run: .github/workflows/delete_untagged.py ${{ secrets.STAR_BNL_STAR_SW_TOKEN }}
118 changes: 118 additions & 0 deletions .github/workflows/build-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Build Pull Request

on:
pull_request:
paths-ignore:
- '.github/**'
- 'docs/**'
- '!.github/workflows/**'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
starenv: [root5]
compiler: [gcc485]
env:
STARENV: ${{ matrix.starenv }}-${{ matrix.compiler }}
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: env.BUILDKIT_STEP_LOG_MAX_SIZE=10000000

- name: Build with Docker
uses: docker/build-push-action@v3
with:
build-args: |
starenv=${{ matrix.starenv }}
compiler=${{ matrix.compiler }}
tags: ghcr.io/star-bnl/star-sw-${{ env.STARENV }}
outputs: type=docker,dest=/tmp/star-sw-${{ env.STARENV }}.tar

- name: Save built image for test jobs
uses: actions/upload-artifact@v3
with:
name: star-sw-${{ env.STARENV }}
path: /tmp/star-sw-${{ env.STARENV }}.tar

test:
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
test_id: [10, 11, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 76, 77, 78, 90, 91, 92, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121]
starenv: [root5]
compiler: [gcc485]
env:
STARENV: ${{ matrix.starenv }}-${{ matrix.compiler }}
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: star-sw-${{ env.STARENV }}
path: /tmp

- run: docker load --input /tmp/star-sw-${{ env.STARENV }}.tar
- run: docker run --name star-test-data --volume /star ghcr.io/star-bnl/star-test-data:v7
- run: |
TEST_CMD=$(docker run --rm ghcr.io/star-bnl/star-sw-${{ env.STARENV }} tests/executest.py -c ${{ matrix.test_id }})
# Workaround https://sft.its.cern.ch/jira/browse/ROOT-7660 in ROOT 5 by checking the output log
docker run --volumes-from star-test-data ghcr.io/star-bnl/star-sw-${{ env.STARENV }} \
sh -c "set -e; MALLOC_CHECK_=3 $TEST_CMD 2>&1 | tee log; grep 'Run completed' log"

ROOT5_test_doEvents:
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
test_id: [121, 122]
compiler: [gcc485]
env:
STARENV: root5-${{ matrix.compiler }}
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: star-sw-${{ env.STARENV }}
path: /tmp

- run: docker load --input /tmp/star-sw-${{ env.STARENV }}.tar
- run: docker run --name star-test-data --volume /star ghcr.io/star-bnl/star-test-data:v7
- run: |
TEST_FILE=$(echo "$(docker run --rm ghcr.io/star-bnl/star-sw-${{ env.STARENV }} tests/executest.py ${{ matrix.test_id }} -a fullpath)" | sed -E 's/\.(daq|fzd)$/.event.root/')
TEST_CMD="root4star -b -q -l 'StRoot/macros/analysis/doEvents.C(100, \"$TEST_FILE\")'"
docker run --volumes-from star-test-data ghcr.io/star-bnl/star-sw-${{ env.STARENV }} \
sh -c "set -e; $TEST_CMD 2>&1 | tee log; grep '<StIOMaker::Finish> IO:' log"

ROOT5_test_find_vertex:
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
test_id: [102, 121, 122]
compiler: [gcc485]
env:
STARENV: root5-${{ matrix.compiler }}
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: star-sw-${{ env.STARENV }}
path: /tmp

- run: docker load --input /tmp/star-sw-${{ env.STARENV }}.tar
- run: docker run --name star-test-data --volume /star ghcr.io/star-bnl/star-test-data:v7
- run: |
TEST_FILE=$(echo "$(docker run --rm ghcr.io/star-bnl/star-sw-${{ env.STARENV }} tests/executest.py ${{ matrix.test_id }} -a fullpath)" | sed -E 's/\.(daq|fzd)$/.event.root/')
TEST_CMD="root4star -b -q -l 'StRoot/macros/analysis/find_vertex.C(\"$TEST_FILE\")'"
docker run --volumes-from star-test-data ghcr.io/star-bnl/star-sw-${{ env.STARENV }} \
sh -c "set -e; $TEST_CMD 2>&1 | tee log; grep '<StIOMaker::Finish> StIO:' log"
102 changes: 0 additions & 102 deletions .github/workflows/ci-build.yml

This file was deleted.

25 changes: 25 additions & 0 deletions .github/workflows/delete_untagged.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env python3

import argparse
import json
import requests
import types

parser = argparse.ArgumentParser()
parser.add_argument("token", help="GitHub token")
args = parser.parse_args()

domain = "api.github.com"
org = "star-bnl"
package_type = "container"
package_name = "star-sw"

api_url = f"https://{domain}/orgs/{org}/packages/{package_type}/{package_name}/versions"

respjson = requests.get(api_url, auth=("token", args.token))
entries = json.loads(respjson.text, object_hook=lambda d: types.SimpleNamespace(**d))

for e in entries:
if not e.metadata.container.tags:
response = requests.delete(api_url + f"/{e.id}", auth=("token", args.token))
print("delete", e.id, e.html_url, e.name, response.url, response.status_code)
Loading
Loading