Merge pull request #287 from The-OpenROAD-Project-staging/add-ci

Add ci
This commit is contained in:
Matt Liberty 2026-02-18 16:49:22 +00:00 committed by GitHub
commit 703acbeb82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 163 additions and 27 deletions

34
.github/workflows/on-delete.yml vendored Normal file
View File

@ -0,0 +1,34 @@
name: Cleanup staging branch on delete
on:
delete:
env:
ROT13_STAGING_OWNER: ${{ secrets.ROT13_STAGING_OWNER }}
ROT13_UPSTREAM_OWNER: ${{ secrets.ROT13_UPSTREAM_OWNER }}
ROT13_UPSTREAM_BRANCH: ${{ secrets.ROT13_UPSTREAM_BRANCH }}
jobs:
Delete-From-Staging:
name: Delete branch from staging
runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }}
permissions:
# Read-only access so we don't accidentally try to push to *this* repository.
contents: read
# Only run on the private repository.
if: github.event.repository.private
steps:
- name: Detect configuration.
uses: The-OpenROAD-Project/actions/auto_config@main
- name: Delete branch from staging repository.
uses: The-OpenROAD-Project/actions/delete_from@main
continue-on-error: true
with:
owner: ${{ env.STAGING_OWNER }}
repo: ${{ env.STAGING_REPO }}
branch: ${{ env.STAGING_BRANCH }}
deployToken: ${{ secrets.STAGING_GITHUB_TOKEN }}

64
.github/workflows/on-label.yml vendored Normal file
View File

@ -0,0 +1,64 @@
name: Labelled Ready to Sync Public
on:
pull_request:
types: [labeled]
env:
ROT13_STAGING_OWNER: ${{ secrets.ROT13_STAGING_OWNER }}
ROT13_UPSTREAM_OWNER: ${{ secrets.ROT13_UPSTREAM_OWNER }}
ROT13_UPSTREAM_BRANCH: ${{ secrets.ROT13_UPSTREAM_BRANCH }}
jobs:
Push-To-Staging:
name: Push to staging
runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }}
permissions:
# Read-only access so we don't accidentally try to push to *this* repository.
contents: read
# Pull request write access, so we can remove the label.
issues: write
pull-requests: write
# Deployment write access, so we can add the nice deployment info.
deployments: write
# Only run on the private repository.
if: github.event.repository.private && github.event.label.name == 'Ready To Sync Public'
steps:
- name: Detect configuration
uses: The-OpenROAD-Project/actions/auto_config@main
- name: Removing label '${{ github.event.label.name }}'
uses: The-OpenROAD-Project/actions/remove_label@main
continue-on-error: true
- name: Clone repository
uses: The-OpenROAD-Project/actions/clone_from@main
with:
branch: ${{ env.PRIVATE_BRANCH }}
checkout: true
- name: Run security scan
uses: The-OpenROAD-Project/actions/security_scan_on_push@main
- name: Push to staging repository.
uses: The-OpenROAD-Project/actions/push_to@main
with:
owner: ${{ env.STAGING_OWNER }}
repo: ${{ env.STAGING_REPO }}
branch: ${{ env.STAGING_BRANCH }}
deployToken: ${{ secrets.STAGING_GITHUB_TOKEN }}
force: true
- id: send_pr
name: Create PR if needed.
uses: The-OpenROAD-Project/actions/send_pr@main
env:
STAGING_GITHUB_TOKEN: ${{ secrets.STAGING_GITHUB_TOKEN }}
- name: Linking to PR using deployment.
uses: The-OpenROAD-Project/actions/link_pr@main
env:
GITHUB_TOKEN: ${{ github.token }}
UPSTREAM_PR: ${{ steps.send_pr.outputs.pr }}

16
.github/workflows/on-push.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Scan Code with pre commit trigger
on:
push:
pull_request:
branches:
- master
jobs:
Security-Scan:
runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }}
steps:
- name: Check out repository code
uses: actions/checkout@v6
- name: run security_scan_on_push
uses: The-OpenROAD-Project/actions/security_scan_on_push@main

View File

@ -0,0 +1,46 @@
name: Automatically sync branch from upstream.
on:
schedule:
- cron: "*/5 * * * *"
workflow_dispatch:
inputs:
force:
description: Use GitHub --force push.
default:
repository_dispatch:
jobs:
Sync-Branch-From-Upstream:
name: Automatic sync 'master' from The-OpenROAD-Project/OpenSTA
runs-on: ${{ vars.USE_SELF_HOSTED == 'true' && 'self-hosted' || 'ubuntu-latest' }}
# Only allow one action to run at a time.
concurrency: sync-branch-from-upstream
# Action needs no permissions, as push is granted via adding a deploy key
# with write access to the $DEPLOY_KEY secret.
permissions:
contents: read
# Don't run on the upstream repository and only run on the right branch.
if: ${{ (github.repository != 'The-OpenROAD-Project/OpenSTA') && endsWith(github.ref, '/master') }}
steps:
- uses: The-OpenROAD-Project/actions/upstream_sync@main
env:
HAS_DEPLOY_KEY: ${{ !!(secrets.DEPLOY_KEY) }}
if: ${{ env.HAS_DEPLOY_KEY == 'true' }}
with:
upstreamRepo: The-OpenROAD-Project/OpenSTA
upstreamBranch: master
# To always overwrite master branch, set UPSTREAM_SYNC to the exact
# string 'always overwrite master branch'.
# You can also manually trigger a workflow dispatch with the force
# value equal to 'true'.
force: ${{ github.event.inputs.force || (secrets.UPSTREAM_SYNC == 'always overwrite master branch') }}
deployKey: ${{ secrets.DEPLOY_KEY }}

17
Jenkinsfile vendored
View File

@ -1,15 +1,4 @@
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './jenkins/build.sh'
}
}
stage('Test') {
steps {
sh './jenkins/test.sh'
}
}
}
@Library('utils@main') _
node() {
pipelineOpenSTA()
}

View File

@ -1,5 +0,0 @@
#!/bin/bash
set -x
set -e
cmake -B build .
cmake --build build -j 8

View File

@ -1,7 +0,0 @@
#!/bin/bash
set -x
set -e
mkdir -p /OpenSTA/build
cd /OpenSTA/build
cmake ..
make -j 4

View File

@ -1 +0,0 @@
docker run -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):/OpenSTA openroad/opensta bash -c "/OpenSTA/test/regression"