diff --git a/.github/release-notes/template.hbs b/.github/release-notes/template.hbs new file mode 100644 index 0000000..6b46417 --- /dev/null +++ b/.github/release-notes/template.hbs @@ -0,0 +1,9 @@ +# v{{version}} ({{date}}) +## What's Changed +{{#each commitGroups}} +### {{title}} +{{#each commits}} +* {{#if scope}}**{{scope}}**: {{/if}}{{subject}} ([{{shortHash}}]({{@root.host}}/{{@root.owner}}/{{@root.repository}}/commit/{{hash}})) by {{committer.name}} +{{/each}} +{{/each}} +**Full Changelog**: {{host}}/{{owner}}/{{repository}}/compare/{{previousTag}}...{{currentTag}} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..de73307 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,117 @@ +name: deploy + +on: + push: + branches: + - main + +permissions: + contents: write + pages: write + id-token: write + +concurrency: + group: 'deploy' + cancel-in-progress: true + +jobs: + tests: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '23.1' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run tests + env: + MIKRO_ORM_CLI: apps/api/src/shared/module/config/mikro-orm.config.ts + MIKRO_ORM_CLI_TS_CONFIG_PATH: apps/api/tsconfig.app.json + MIKRO_ORM_CLI_USE_TS_NODE: true + run: node --run test + + release: + runs-on: ubuntu-latest + needs: tests + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '23.1' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Import GPG key + env: + GPG_PRIVATE_KEY: ${{ secrets.SEMANTIC_RELEASE_GPG_PRIVATE_KEY }} + run: | + echo "$GPG_PRIVATE_KEY" > private.key + gpg --batch --import private.key + git config --global commit.gpgSign true + git config --global user.signingkey 8061777E7D988EE9 + echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf + echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf + gpgconf --kill gpg-agent + + - name: Run semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_NAME: 'romantic-release-bot' + GIT_AUTHOR_EMAIL: '187212958+romantic-release-bot@users.noreply.github.com' + GIT_COMMITTER_NAME: 'romantic-release-bot' + GIT_COMMITTER_EMAIL: '187212958+romantic-release-bot@users.noreply.github.com' + run: node --run release -- --verbose + + build: + runs-on: ubuntu-latest + needs: release + steps: + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Pull latest changes + run: git pull origin main + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '23.1' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build application + run: node --run build:app -- --base-href ${{ steps.pages.outputs.base_url }}/ + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './dist/apps/app/browser' + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4