mirror of https://github.com/VLSIDA/OpenRAM.git
Add new workflows
This commit is contained in:
parent
59c4148fc4
commit
0a2fceded4
|
|
@ -0,0 +1,69 @@
|
|||
# How do the workflows work?
|
||||
|
||||
1. When there is a push to the private repo's 'dev' branch (private/dev),
|
||||
`regress` workflow runs the regression tests.
|
||||
|
||||
1. If `regress` workflow fails on 'private/dev', `sync` workflow gets triggered
|
||||
and it pushes the latest changes to the public repo's 'dev' branch (public/dev).
|
||||
After this push, `regress` workflow will also run on 'public/dev'.
|
||||
|
||||
1. If `regress` workflow successfully passes on 'private/dev', `version`
|
||||
workflow gets triggered. It creates a new version commit and tag, and pushes to
|
||||
'private/dev', 'public/dev', 'public/stable'.
|
||||
|
||||
1. When there is a push with new version to the 'public/stable' branch, `deploy`
|
||||
workflow runs. It deploys the PyPI package of OpenRAM.
|
||||
|
||||
1. If there is a pull request on either repo, `regress` workflow runs on that
|
||||
pull request.
|
||||
|
||||
1. If there is a push to 'public/dev', `regress` workflow runs (it also happens
|
||||
when pull requests are merged).
|
||||
|
||||
1. If `regress` workflow successfully passes on 'public/dev', `version`
|
||||
workflow gets triggered. It creates a new version commit and tag, and pushes to
|
||||
'private/dev', 'public/dev', and 'public/stable'.
|
||||
|
||||
|
||||
|
||||
## Important Notes
|
||||
|
||||
1. Workflows understand that the latest commit has a new version with the
|
||||
following commit message syntax.
|
||||
|
||||
```
|
||||
Bump version: <any message>
|
||||
```
|
||||
|
||||
Automatically generated version commit have the following syntax:
|
||||
|
||||
```
|
||||
Bump version: a.b.c -> a.b.d
|
||||
```
|
||||
|
||||
1. `version` workflow only increments the right-most version digit. Other digits
|
||||
in the version number must be updated manually following the syntax above.
|
||||
|
||||
1. `regress` workflow doesn't run if the push has a new version. We assume that
|
||||
this commit was automatically generated after a previous commit passed `regress`
|
||||
workflow or was manually generated with caution.
|
||||
|
||||
1. `regress` workflow doesn't run on branches named 'stable'.
|
||||
|
||||
1. `deploy` workflow only runs on branches named 'stable'.
|
||||
|
||||
1. `version` workflow is only triggered from branches named 'dev' if they pass
|
||||
`regress` workflow.
|
||||
|
||||
1. `sync` workflow only runs on the private repo.
|
||||
|
||||
1. Pull requests merged on to 'public/dev' will also trigger `regress` and it
|
||||
can create a new version.
|
||||
|
||||
1. Merging pull requests that don't pass `regress` workflow on the public repo
|
||||
should be avoided since it won't update the private repo automatically. To
|
||||
prevent merging by mistake, the dev branch can be protected in the GitHub
|
||||
settings.
|
||||
|
||||
1. Merging pull requests on the private repo should be safe in any case.
|
||||
|
||||
|
|
@ -3,10 +3,9 @@ on:
|
|||
push:
|
||||
branches:
|
||||
- stable
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
jobs:
|
||||
deploy_pip:
|
||||
if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
|
|
|
|||
|
|
@ -1,10 +1,16 @@
|
|||
name: ci
|
||||
name: regress
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '!stable'
|
||||
branches-ignore:
|
||||
- stable
|
||||
pull_request:
|
||||
branches-ignore:
|
||||
- stable
|
||||
jobs:
|
||||
regress:
|
||||
# All tests should be run from this job.
|
||||
regression_test:
|
||||
# This job runs on pull requests or any push that doesn't have a new version
|
||||
if: ${{ github.event_name == 'pull_request' || startsWith(github.event.head_commit.message, 'Bump version:') == false }}
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout code
|
||||
|
|
@ -42,5 +48,19 @@ jobs:
|
|||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Regress Archives
|
||||
path: ${{ github.workspace }}/compiler/tests/results/*
|
||||
name: Regress Archives
|
||||
path: ${{ github.workspace }}/compiler/tests/results/*
|
||||
# This job triggers sync.yml workflow
|
||||
sync_trigger:
|
||||
if: ${{ always() && github.event_name == 'push' && github.ref_name == 'dev' && github.repository == 'VLSIDA/PrivateRAM' && needs.regression_test.result == 'failure' }}
|
||||
needs: regression_test
|
||||
uses: ./.github/workflows/sync.yml
|
||||
secrets:
|
||||
ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }}
|
||||
# This job triggers version.yml workflow
|
||||
version_trigger:
|
||||
if: ${{ github.event_name == 'push' && github.ref_name == 'dev' }}
|
||||
needs: regression_test
|
||||
uses: ./.github/workflows/version.yml
|
||||
secrets:
|
||||
ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
name: sync
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
WORKFLOW_ACCESS_TOKEN:
|
||||
required: true
|
||||
jobs:
|
||||
sync_dev:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }}
|
||||
- name: Synchronize OpenRAM repo
|
||||
run: |
|
||||
# Configure pusher account
|
||||
git config --global user.name "mrg"
|
||||
git config --global user.email "mrg@ucsc.edu"
|
||||
# Add remote repo
|
||||
git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git
|
||||
git pull public-repo dev
|
||||
# Push the latest changes
|
||||
git push -u public-repo HEAD:dev
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
name: version
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
WORKFLOW_ACCESS_TOKEN:
|
||||
required: true
|
||||
jobs:
|
||||
make_version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }}
|
||||
- name: Configure git
|
||||
run: |
|
||||
# Configure the committer
|
||||
git config --global user.name "mrg"
|
||||
git config --global user.email "mrg@ucsc.edu"
|
||||
# Set remote repos
|
||||
git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git
|
||||
git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git
|
||||
- name: Make new version number
|
||||
run: |
|
||||
# Read the current version number
|
||||
export CURRENT_VERSION="$(cat VERSION)"
|
||||
# Increment the version number
|
||||
export NEXT_VERSION="$(echo ${CURRENT_VERSION} | awk -F. -v OFS=. '{$NF += 1 ; print}')"
|
||||
echo "${NEXT_VERSION}" > VERSION
|
||||
# Commit the change and tag the commit
|
||||
git commit -a -m "Bump version: ${CURRENT_VERSION} -> ${NEXT_VERSION}"
|
||||
git tag "v${NEXT_VERSION}" HEAD
|
||||
- name: Push changes
|
||||
run: |
|
||||
# Push to private/dev
|
||||
git pull private-repo dev
|
||||
git push private-repo HEAD:dev --tags
|
||||
# Push to public/dev
|
||||
git pull public-repo dev
|
||||
git push public-repo HEAD:dev --tags
|
||||
# Push to public/stable
|
||||
git pull public-repo stable
|
||||
git push public-repo HEAD:stable --tags
|
||||
Loading…
Reference in New Issue