name: release-message-nest on: push: # run only against tags tags: - '*' # workflow_dispatch: # inputs: # version: # description: 'Release version tag (e.g., v1.2.3).' # required: true # type: string # release: # types: [published] permissions: contents: write packages: write # issues: write jobs: build-and-release-message-nest: runs-on: ubuntu-latest env: NODE_ENV: prod CUSTOM_PROJ_NAME: Message-Nest DOCKER_IMAGE_NAME: message-nest steps: - uses: actions/checkout@main with: fetch-depth: 0 - run: git fetch --force --tags - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Docker Login to Docker Hub uses: docker/login-action@v3 with: registry: docker.io username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASSWD }} - name: Docker Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.REPO_GITHUB_TOKEN }} - uses: actions/setup-go@main with: go-version: '>=1.20.2' cache: true - name: Install npm dependencies run: npm i working-directory: web/ - name: Run npm build run: export NODE_ENV=prod && npm run build working-directory: web/ - name: Check build static run: ls dist/ -la working-directory: web/ - name: Git File Restore run: git checkout . working-directory: web/ - name: Get Release version id: get_version run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT else echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT fi - name: Update Local Version File run: echo ${{ steps.get_version.outputs.VERSION }} > .release_version # More assembly might be required: Docker logins, GPG, etc. It all depends # on your needs. - uses: goreleaser/goreleaser-action@v5 with: # either 'goreleaser' (default) or 'goreleaser-pro': distribution: goreleaser version: latest args: release --clean env: GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }} GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.VERSION }} # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' # distribution: # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}