Open pshriwise opened 3 years ago
The only one of these I have experience with is Circle CI, which makes for some really quick builds as it can cache images for specific steps in the CI build and really cut down on the run times. It can be a bit of a pain to set up though, and I'm not sure how well it will handle updating images for changes in our dependencies -- something I rather like about our current CI system. I know very little about GitHub actions (I believe @Shimwell has some experience there), but the idea of having CI in the same platform as the repo is attractive to me.
When @shimwell see's this he'll be giddy :) There are a slew of benefits, one of them is automatic production of containers after merge, that was always true in Travis and Circle too, but I think it's easier with GH actions
From: Patrick Shriwise notifications@github.com Sent: Wednesday, November 25, 2020 11:32:21 PM To: openmc-dev/openmc openmc@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [openmc-dev/openmc] Potential CI Service Transition (#1731)
The only one of these I have experience with is Circle CI, which makes for some really quick builds as it can cache images for specific steps in the CI build and really cut down on the run times. It can be a bit of a pain to set up though, and I'm not sure how well it will handle updating images for changes in our dependencies -- something I rather like about our current CI system. I know very little about GitHub actions (I believe @Shimwellhttps://github.com/Shimwell has some experience there), but the idea of having CI in the same platform as the repo is attractive to me.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/openmc-dev/openmc/issues/1731#issuecomment-733990696, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AASTUSVBAEA677GPEREO273SRWHYLANCNFSM4UDAJI4Q.
I have been very impressed with how easy Github Actions is to setup and how it has added features. The reviews comparing Circle and Github Actions I've read sometimes have updates as Github Actions has been improved even during the review. I would expect Github Actions to continue to add features and to have the benefit of having a single platform but the disadvantage of lock in to a particular platform.
This table offers straight forward comparison https://knapsackpro.com/ci_comparisons/circle-ci/vs/github-actions
I have some a minimal OpenMC test repositories that might be of interest for you https://github.com/Shimwell/example-git-actions-docker-openmc
We are actually trying to decided between the Circle and Github Actions over on the Paramak repo and are currently using both, we still can't decide even after using them both on the same repo:
The Github Actions community contributed templates help reduce the amount of code needed in the OpenMC repo to perform a particular opperation.
This 17 line file is all that is needed to build the docker, run pytest and upload the resutls to code coverage. https://github.com/ukaea/paramak/blob/main/.github/workflows/docker_ci.yml
Don't get me started on the actions for pypi uploading, auto pep8 and even automatic openmc benchmarking https://github.com/Shimwell/auto_openmc_benchmarking
Thanks for the info @Shimwell! It looks like a promising option.
Just wanted to add that Github actions can be set to automatically run on a provided schedule using cron jobs.
schedule:
- cron: "0 0 * * *"
Thanks for sharing this cron command @RemDelaporteMathurin
So it could be set to run simulations every day and the resulting outputs can be extracted add plotted as svg graphs and then committed automatically to the repo along with some json or csv files of the results.
- name: Commit files
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
git commit -m "Add new simulation results" -a
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
Combining this scheduled run feature and automated commit with some open source shielding benchmarks and I think we could have a nice continuous validation.
To get more compute power Github actions can also connect to the external runners if the simulations need scaling up.
If I didn't know any better, I would have thought that you were getting paid by GitHub for all this free advertising you're giving them! :wink: GH Actions does seem to be a leading contender here.
In other news, our current CI is officially dead -- Travis stopped running our jobs because we are out of "credits". The fact that Travis never contacted open source maintainers to publicize this change and just left them out to dry does not sit well with me...
FWIW it seems that practically everything CircleCI does can be done in GH actions as @Shimwell said. The major difference I find is that CircleCI has a dashboard dedicated to testing. Makes the reports clearer in my opinion.
@Shimwell @paulromano and I chatted about this today. Seeing as the effects of the Travis update have now hit us
Builds have been temporarily disabled for public repositories due to a negative credit balance. Please go to the Plan page to replenish your credit balance or alter your Consume paid credits for OSS setting.
we're going to move forward with GitHub Actions so we can continue reviewing and merging PRs. I have a setup that replicates our Travis jobs that I'll hopefully be submitting later today.
Planned improvements for GHA CI:
Just wanted to mention that I recently added some CSG and CAD based simulations of the same geometry to check that both methods produce similar results. This is done in a the CI so I thought it might be might be of interest https://github.com/ukaea/paramak/pull/642
Just wanted to throw in my two cents that the GitHub actions platform looks excellent and works very well. I worry if/when we'll hit a limit for running these actions though. Not sure where we fall in the fee chart, but the free tier listed there has only 2000 minutes for actions
That 2000 minute limit is for private repositories I believe. If you have a public repo, there is no limit as far as I can tell.
Good to close?
@pshriwise has a list of planned improvements in here, but perhaps we should make those separate issues?
Yeah, let's break those out into issues. I'll take care of that shortly. Thanks for reminding us about this @drewejohnson!
@paulromano and I were discussing Travis' plans for changing its CI billing model.
https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
The new model doesn't require payment, seeing as this is still a public project, but it does make our build time much more restrictive (~10k minutes per month). Given that a conservative estimate for a single CI build for us is ~240 minutes, I don't think that's going to cut it. :grimacing:
I'm creating this issue to hopefully start a discussion on how to address this going forward. In the likely scenario where we move a new service, some of the alternatives brought up were:
I'm all ears for any thoughts or additions to the list!