slogan3

Help me een GitHub Actions workflow implementeren voor geautomatiseerd releasebeheer met versiebeheer

description

Automatisering van releasebeheer bespaart tijd, vermindert fouten in versiebeheer en zorgt voor consistente releasepraktijken in je projecten.

prompt

try_prompt

Help me een GitHub Actions workflow maken die het releasebeheerproces automatiseert, inclusief versiebeheer, tagging en het publiceren van releases. Projecttype: {{p ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een GitHub Actions workflow die het releasebeheerproces automatiseert voor een Node.js-project met Semantic Versioning, inclusief versiebeheer, tagging, en publiceren, met Slack-notificaties. Pas de placeholders aan naar jouw situatie. ```yaml name: Release Workflow on: push: branches: - main # Trigger alleen bij pushes naar main, of pas aan naar jouw release branch workflow_dispatch: jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '16' # Pas aan naar jouw Node.js versie - name: Install dependencies run: npm install - name: Bepaal nieuwe versie id: version run: | # Gebruik semantic-release of een custom script # Hier een voorbeeld met semantic-release npx semantic-release --dry-run # Of, als je handmatig wilt bepalen: # Lees de laatste tag LAST_TAG=$(git describe --tags --match "v*" --abbrev=0) echo "Last tag: $LAST_TAG" # Bepaal nieuwe versie volgens semver (bijvoorbeeld via semantic-release) # Semantic-release automatiseert dit volledig # Voor dit voorbeeld gebruiken we semantic-release - name: Configureer GitHub release data id: release_data run: | # Semantic-release verzorgt automatisch versie en release # Maar als je dit handmatig wilt doen, kun je hier versie bepalen echo "version=$(npx semantic-release --dry-run | grep 'Next release version' | awk '{print $NF}')" >> $GITHUB_OUTPUT - name: Tag nieuwe release run: | NEW_VERSION=$(echo "${{ steps.release_data.outputs.version }}") git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION" git push origin "v$NEW_VERSION" - name: Maak release aan op GitHub uses: softprops/action-gh-release@v1 with: tag_name: "v${{ steps.release_data.outputs.version }}" name: "Release v${{ steps.release_data.outputs.version }}" body: | Automatisch gegenereerde release voor versie v${{ steps.release_data.outputs.version }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publiceer naar npm run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Slack notificatie uses: slackapi/slack-github-action@v1.23.0 with: slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }} channel-id: 'jouw-channel-id' message: | 🚀 Nieuwe release v${{ steps.release_data.outputs.version }} is gepubliceerd! Bekijk het op: <release-link> ``` **Aanpassingen nodig:** - Voeg je Slack Bot Token toe aan GitHub Secrets als `SLACK_BOT_TOKEN`. - Voeg je NPM Token toe als `NPM_TOKEN`. - Pas de kanaal-ID aan (`channel-id`). - Pas de Node.js versie en andere details aan naar jouw project. Deze workflow automatiseert het bepalen van de versie, het taggen, het maken van een GitHub release, publiceren naar npm, en het sturen van een Slack-notificatie. Voor volledige automatische semantic versioning, overweeg het gebruik van [semantic-release](https://semantic-release.gitbook.io/semantic-release/) en configureer het in je project.
provider: deepseek
model: deepseek-chat
Hier is een GitHub Actions workflow voor het automatiseren van het releasebeheerproces voor je Node.js project: ```yaml name: Release Management on: push: branches: [main] workflow_dispatch: env: NODE_VERSION: '18.x' SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} jobs: release: name: Create Release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Semantic Release uses: cycjimmy/semantic-release-action@v3 id: semantic with: extra_plugins: | @semantic-release/changelog @semantic-release/git @semantic-release/github @semantic-release/npm branch: main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Notify Slack on Success if: steps.semantic.outputs.new_release_published == 'true' uses: 8398a7/action-slack@v3 with: status: success text: Nieuwe release ${{ steps.semantic.outputs.new_release_version }} gepubliceerd! fields: repo,message,commit,author,workflow env: SLACK_WEBHOOK_URL: ${{ env.SLACK_WEBHOOK_URL }} - name: Notify Slack on Failure if: failure() uses: 8398a7/action-slack@v3 with: status: failure fields: repo,message,commit,author,workflow env: SLACK_WEBHOOK_URL: ${{ env.SLACK_WEBHOOK_URL }} ``` **Benodigde setup:** 1. **Repository secrets instellen:** - `GITHUB_TOKEN` (automatisch beschikbaar) - `SLACK_WEBHOOK_URL`: Slack webhook URL voor notificaties - `NPM_TOKEN`: Alleen nodig als je naar NPM publiceert 2. **package.json configuratie:** ```json { "release": { "branches": ["main"], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release/npm", "@semantic-release/github", ["@semantic-release/git", { "assets": ["package.json", "CHANGELOG.md"], "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" }] ] } } ``` 3. **Vereiste dependencies:** ```bash npm install --save-dev semantic-release @semantic-release/changelog @semantic-release/git @semantic-release/github @semantic-release/npm ``` **Werking:** - Wordt geactiveerd bij pushes naar `main` of handmatig - Analyseert commit messages voor semantic versioning - Genereert automatisch versienummers en changelog - Creëert GitHub releases met tags - Publiceert naar npm (optioneel) - Stuurt Slack notificaties bij succes/failure De workflow volgt conventionele commits voor versiebeheer: - `feat:` → minor release - `fix:` → patch release - `BREAKING CHANGE:` → major release