Skip to content

Commit

Permalink
Modifying nightly CI to be more interactive and streamlined (#1869)
Browse files Browse the repository at this point in the history
* Modifying CI to be more interactive

* removed conda release

* added on trigger and warning description

* added the create release workflow as well

* updated changelog

* updated workflows

* added retry mechanism to uploading to codecov

* using pre-release version from workflow dispatch

* added version assigner to release

* fixed some stuff

* fixed some stuff

* fixed some stuff

* fixed some stuff

* minor fixes to result attributes

* minor fixes

* fixed serialization of output

* updated changelog

* trying to limit cloudpickle

* removed minor changes

* fixing tests.yml

* fixing tests.yml

* fixing tests.yml

* using local workflows instead of from the develop branch

* fixed release.yml

* fixed push_to_master workflow

* added permissions to nightly-tests.yml

* updated changelog

* Update nightly-tests.yml
  • Loading branch information
kessler-frost authored Feb 5, 2024
1 parent 8598589 commit 7c9b2cb
Show file tree
Hide file tree
Showing 9 changed files with 354 additions and 407 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ jobs:
uses: actions/checkout@v4
with:
token: ${{ secrets.COVALENT_OPS_BOT_TOKEN }}

- uses: dorny/paths-filter@v2
id: filter
with:
Expand All @@ -42,13 +43,15 @@ jobs:
- '.github/actions/changelog/action.yml'
dist:
- '.github/actions/changelog/dist/**'
- name: Latest tag
id: get-latest-tag
uses: ./.github/actions/describe
with:
token: ${{ secrets.COVALENT_OPS_BOT_TOKEN }}
branch: develop
stable: false

- name: Update version number
id: changelog
uses: ./.github/actions/changelog
Expand All @@ -57,6 +60,7 @@ jobs:
version-path: VERSION
token: ${{ secrets.COVALENT_OPS_BOT_TOKEN }}
basehead: ${{ steps.get-latest-tag.outputs.tag }}...${{ github.sha }}

- name: Commit
if: ${{ steps.changelog.outputs.message != 'noop' }}
uses: EndBug/add-and-commit@v9
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/man_0_assign_version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 2024 Agnostiq Inc.
#
# This file is part of Covalent.
#
# Licensed under the Apache License 2.0 (the "License"). A copy of the
# License may be obtained with this software package or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Use of this file is prohibited except in compliance with the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: man_0_assign_version

on:
workflow_dispatch:
inputs:
nightly_tests_failed:
type: boolean
required: true
default: true
description: "WARNING: Make sure the `nightly-tests` or the most recent `tests` workflow has passed successfully in develop before running this workflow.
Uncheck this box if it has."

permissions:
id-token: write
contents: read

jobs:
license:
name: License Scanner
uses: ./.github/workflows/license.yml

version_assigner:
name: Assign Version
needs:
- license
if: >
!github.event.inputs.nightly_tests_failed
uses: ./.github/workflows/changelog.yml
secrets: inherit # pragma: allowlist secret
80 changes: 80 additions & 0 deletions .github/workflows/man_1_push_to_master.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Copyright 2024 Agnostiq Inc.
#
# This file is part of Covalent.
#
# Licensed under the Apache License 2.0 (the "License"). A copy of the
# License may be obtained with this software package or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Use of this file is prohibited except in compliance with the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: man_1_push_to_master

on:
workflow_dispatch:
inputs:
assign_version_failed:
type: boolean
required: true
default: true
description: "WARNING: Make sure the `man_0_assign_version` workflow has passed successfully before running this workflow.
Uncheck this box if it has."

permissions:
id-token: write
contents: read

jobs:
push_to_master:
name: Push develop to master
runs-on: ubuntu-latest
outputs:
release: ${{ steps.push.outputs.release }}

steps:
- name: Checkout develop
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0

- name: Get versions of develop and master
id: get-versions
run: |
develop_version="$(cat ./VERSION)"
master_version="$(git show origin/master:VERSION)"
echo "::set-output name=develop_version::${develop_version}"
echo "::set-output name=master_version::${master_version}"
- name: Perform the push to master if develop is ahead
id: push
if: >
!github.event.inputs.assign_version_failed
run: |
DEVELOP_VERSION="${{ steps.get-versions.outputs.develop_version }}"
MASTER_VERSION="${{ steps.get-versions.outputs.master_version }}"
release=false
echo "Develop version: ${DEVELOP_VERSION}"
echo "Master version: ${MASTER_VERSION}"
if [[ "${DEVELOP_VERSION}" == "${MASTER_VERSION}" ]]; then
echo "No new version detected. Exiting."
exit 1
elif dpkg --compare-versions $DEVELOP_VERSION 'gt' $MASTER_VERSION ; then
echo "Pushing to master."
git config user.name "CovalentOpsBot"
git config user.email "[email protected]"
git remote set-url origin https://${{ secrets.COVALENT_OPS_BOT_TOKEN }}@github.com/AgnostiqHQ/covalent.git
git push origin HEAD:master
release=true
else
echo "This means the version on develop is lower than the version on master or something is wrong."
exit 1
fi
echo "Ready to release: ${release}"
echo "::set-output name=release::$release"
66 changes: 66 additions & 0 deletions .github/workflows/man_2_create_prerelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Copyright 2024 Agnostiq Inc.
#
# This file is part of Covalent.
#
# Licensed under the Apache License 2.0 (the "License"). A copy of the
# License may be obtained with this software package or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Use of this file is prohibited except in compliance with the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: man_2_create_prerelease

on:
workflow_dispatch:
inputs:
push_to_master_failed:
type: boolean
required: true
default: true
description: "WARNING: Make sure the `man_1_push_to_master` workflow has passed successfully before running this workflow.
Uncheck this box if it has."

permissions:
id-token: write
contents: read

jobs:
create_release:
name: Create a Prerelease
uses: ./.github/workflows/release.yml
if: >
!github.event.inputs.push_to_master_failed
with:
prerelease: true
secrets: inherit # pragma: allowlist secret

notify_slack:
name: Notify on Slack
needs:
- create_release
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch_name }}

- name: Format Slack message
run: |
VERSION="$(cat ./VERSION)"
SLACK_MSG=":rocket: Version $VERSION is now available."
echo "SLACK_MSG=$SLACK_MSG" >> $GITHUB_ENV
- name: Notify Slack
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: "covalent-ci"
SLACK_USERNAME: "CovalentOpsBot"
SLACK_MESSAGE: ${{ env.SLACK_MSG }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
40 changes: 40 additions & 0 deletions .github/workflows/nightly-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2024 Agnostiq Inc.
#
# This file is part of Covalent.
#
# Licensed under the Apache License 2.0 (the "License"). A copy of the
# License may be obtained with this software package or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Use of this file is prohibited except in compliance with the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: nightly-tests

on:
push:
branches:
- develop
schedule:
- cron: "0 0 * * *"

workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
license:
name: License Scanner
uses: ./.github/workflows/license.yml

tests:
name: Unit and Functional Tests
uses: ./.github/workflows/tests.yml
secrets: inherit # pragma: allowlist secret
Loading

0 comments on commit 7c9b2cb

Please sign in to comment.