From 508eea10a482386a92d17ff4d8ef40d4bf50c940 Mon Sep 17 00:00:00 2001 From: Arthur Deierlein <110528300+c0rydoras@users.noreply.github.com> Date: Tue, 20 Feb 2024 11:53:00 +0100 Subject: [PATCH] feat: semantic release --- .github/workflows/backend.yaml | 1 + .github/workflows/charts.yaml | 1 + .github/workflows/frontend.yaml | 1 + .github/workflows/publish.yaml | 88 ------------------------------ .github/workflows/release.yaml | 97 +++++++++++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 88 deletions(-) delete mode 100644 .github/workflows/publish.yaml create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/backend.yaml b/.github/workflows/backend.yaml index 45091b12..8adbf136 100644 --- a/.github/workflows/backend.yaml +++ b/.github/workflows/backend.yaml @@ -1,3 +1,4 @@ +--- name: Backend on: diff --git a/.github/workflows/charts.yaml b/.github/workflows/charts.yaml index 2aa799ff..f3a2f9f1 100644 --- a/.github/workflows/charts.yaml +++ b/.github/workflows/charts.yaml @@ -1,3 +1,4 @@ +--- name: Charts on: diff --git a/.github/workflows/frontend.yaml b/.github/workflows/frontend.yaml index d9f5a641..7fcfe8a8 100644 --- a/.github/workflows/frontend.yaml +++ b/.github/workflows/frontend.yaml @@ -1,3 +1,4 @@ +--- name: Frontend on: push: diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml deleted file mode 100644 index fd1d926f..00000000 --- a/.github/workflows/publish.yaml +++ /dev/null @@ -1,88 +0,0 @@ -name: Publish - -on: - push: - branches: - - main - -jobs: - build-and-publish: - name: "Build and Push Docker Images" - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and Push API Docker Image - uses: docker/build-push-action@v5 - with: - context: ./api/ - push: true - tags: ghcr.io/${{ github.repository_owner }}/outdated/api:latest - - - name: Build and Push Ember Docker Image - uses: docker/build-push-action@v5 - with: - context: ./ember/ - push: true - tags: ghcr.io/${{ github.repository_owner }}/outdated/ember:latest - - helm-chart: - name: "Push Helm Chart" - runs-on: ubuntu-latest - needs: - build-and-publish - permissions: - actions: none - checks: none - contents: none - deployments: none - issues: none - packages: write - pull-requests: none - repository-projects: none - security-events: none - statuses: none - id-token: none - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Prepare Chart Metadata - id: chartmeta - run: echo version=0.0.0+$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT - - - name: Set up Helm - uses: azure/setup-helm@v3.5 - with: - version: v3.12.0 - - - name: Package Chart - run: | - helm repo add bitnami https://charts.bitnami.com/bitnami - helm dependency build charts/outdated - helm package --version ${{ steps.chartmeta.outputs.version }} --app-version ${{ steps.chartmeta.outputs.version }} --destination=dist charts/outdated - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Push Chart - run: helm push dist/*.tgz oci://ghcr.io/adfinis/outdated/helm \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..200325df --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,97 @@ +--- +name: Release + +on: + push: + branches: + - main + +jobs: + semrel: + name: Semantic Release + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Semantic Release + uses: go-semantic-release/action@v1 + id: semrel + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + allow-initial-development-versions: true + + - run: pipx install poetry + if: steps.semrel.outputs.version != '' + + - name: Adjust Versions + if: steps.semrel.outputs.version != '' + run: | + cd api && poetry version ${{ steps.semrel.outputs.version }} && cd - + cd ember && yarn version --no-commit-hooks --no-git-tag-version --new-version ${{ steps.semrel.outputs.version }} + + - name: Adjust Versions in Chart.yaml + if: steps.semrel.outputs.version != '' + uses: mikefarah/yq@v4.41.1 + with: + cmd: yq eval '(.appVersion = "${{ steps.semrel.outputs.version }}") | (.version = "{{ steps.semrel.outputs.version }}" )' --inplace ./charts/outdated/Chart.yaml + + - name: Release Commit + uses: EndBug/add-and-commit@v9 + if: steps.semrel.outputs.version != '' + with: + message: "chore(release): ${{ steps.semrel.outputs.version }} [skip ci]" + default_author: github_actions + add: | + api/pyproject.toml + ember/package.json + charts/outdated/Chart.yaml + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: steps.semrel.outputs.version != '' + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + if: steps.semrel.outputs.version != '' + uses: docker/setup-buildx-action@v3 + + - name: Build and Push API Docker Image + if: steps.semrel.outputs.version != '' + uses: docker/build-push-action@v5 + with: + context: ./api/ + push: true + tags: | + ghcr.io/${{ github.repository }}/api:${{ steps.semrel.outputs.version }} + ghcr.io/${{ github.repository }}/api:latest + + - name: Build and Push Ember Docker Image + if: steps.semrel.outputs.version != '' + uses: docker/build-push-action@v5 + with: + context: ./ember/ + push: true + tags: | + ghcr.io/${{ github.repository }}/ember:${{ steps.semrel.outputs.version }} + ghcr.io/${{ github.repository }}/ember:latest + + - name: Set up Helm + if: steps.semrel.outputs.version != '' + uses: azure/setup-helm@v3.5 + with: + version: v3.14.0 + + - name: Package Chart + if: steps.semrel.outputs.version != '' + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + helm dependency build charts/outdated + helm package --destination=dist charts/outdated + + - name: Push Chart + if: steps.semrel.outputs.version != '' + run: helm push dist/*.tgz oci://ghcr.io/${{ github.repository }}/helm