From a485e92b8bd93221b7390e97c5b614df610660a6 Mon Sep 17 00:00:00 2001 From: Jesse Y Lin Date: Wed, 26 Jul 2023 15:54:57 +0200 Subject: [PATCH] ci: refactor ci/cd --- .github/workflows/build-docs.yml | 3 +-- .github/workflows/build-images.yml | 11 ++++----- .github/workflows/build.yml | 36 ---------------------------- .github/workflows/format.yml | 3 --- .github/workflows/release-please.yml | 18 ++++++++++---- 5 files changed, 19 insertions(+), 52 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 5605cd57..3d430fae 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -1,6 +1,5 @@ -name: build-docs +name: Build and deploy documentation on: - workflow_call: push: branches: - prod diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 87eb7ff0..3a6ef2c5 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -1,7 +1,7 @@ -name: build-images +name: Build container images on: - workflow_dispatch: + pull_request: workflow_call: inputs: push-images: @@ -15,9 +15,6 @@ on: required: true GITLAB_REGISTRY_PASSWORD: required: true - push: - tags: - - "v*" jobs: build: @@ -43,7 +40,7 @@ jobs: context: "./services/base/JupyterLab" runs-on: ubuntu-latest env: - SEMVER: ${{ inputs.is_propagated_pull_request && inputs.sem-ver || ''}} + SEMVER: ${{ inputs.push-images && inputs.sem-ver || ''}} steps: - name: Checkout repo uses: actions/checkout@v3 @@ -73,6 +70,6 @@ jobs: uses: docker/build-push-action@v4 with: context: ${{ matrix.context }} - push: ${{ inputs.push_images }} + push: ${{ inputs.push-images }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 8a8581d8..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow reacts to pull requests. -# -# If a pull request from the -# release-please workflow is detected, documentation and image building is done -# in the PR as a CI test. -# -# If a pull request from the release-please workflow is merged, the release's -# semantic version is retrieved and the previous jobs are run, with the images -# being pushed. - -on: - pull_request: -jobs: - if-merged: - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - name: Retrieve semantic version from PR - id: retrieve-semver - run: | - if [[ ${{ github.event.pull_request.title }} =~ ^chore.*:\ release.*\ ([0-9\.]+)$ ]]; then - echo "Got PR: ${{ github.event.pull_request.title }}" - echo "semver=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT - fi - outputs: - sem-ver: ${{ steps.retrieve-semver.outputs.semver }} - build-docs: - if: "${{ contains(github.event.pull_request.labels.*.name, autorelease: pending }}" - uses: ./.github/workflows/build-docs.yml - build-images: - if: "${{ contains(github.event.pull_request.labels.*.name, autorelease: pending }}" - uses: ./.github/workflows/build-images.yml - secrets: inherit - with: - push-images: ${{ github.event.pull_request.merged }} - sem-ver: ${{ jobs.if-merged.outputs.sem-ver }} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 57150a6e..1e8f5874 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -1,9 +1,6 @@ name: format code on: - push: - branches: - - dev pull_request: jobs: diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 03ed097e..6172984d 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -7,15 +7,25 @@ permissions: contents: write pull-requests: write -name: release-please +name: Release pipeline based on detection of Conventional Commits jobs: - release-pr: + release-please: runs-on: ubuntu-latest steps: - - id: release-please + - name: Check for new semver release + id: release-pr uses: google-github-actions/release-please-action@v3 with: - pull-request-title-pattern: "chore${scope}: release${component} ${version}" release-type: simple default-branch: dev + outputs: + releases_created: ${{ steps.release-pr.outputs.releases_created }} + sem-ver: ${{ steps.release-pr.outputs.major }}.${{ steps.release-pr.outputs.minor }}.${{ steps.release-pr.outputs.patch }} + build-and-deploy: + needs: release-please + if: jobs.release-please.outputs.releases_created + uses: ./.github/workflows/build-images.yml + with: + push-images: true + sem-ver: ${{ jobs.release-please.outputs.sem-ver }}