diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..26f3bf28 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,91 @@ +name: "Release" + +on: + workflow_dispatch: + inputs: + dry-run-semantic-release: + type: boolean + description: Dry-run semantic-release + default: false + with-docker-images: + type: boolean + description: Build and push docker images + default: true + +jobs: + semantic-release: + if: github.triggering_actor == github.repository_owner + name: Tag and release latest version + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 20.x + - name: Install dependencies + run: yarn --frozen-lockfile + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ "${{ github.event.inputs.dry-run-semantic-release }}" == "true" ]; then + npx semantic-release --dry-run + else + npx semantic-release + fi + + build-docker-image: + if: github.triggering_actor == github.repository_owner && github.event.inputs.with-docker-images == true + name: Build and push docker images + needs: semantic-release + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ghcr.io/jorenn92/maintainerr + + - name: Log in to GitHub Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: get-npm-version + id: package-version + uses: martinbeentjes/npm-get-version-action@v1.3.1 + + - name: Build & Push docker images + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ghcr.io/jorenn92/maintainerr:${{ steps.package-version.outputs.current-version}} + ghcr.io/jorenn92/maintainerr:latest + jorenn92/maintainerr:${{ steps.package-version.outputs.current-version}} + jorenn92/maintainerr:latest + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file