summaryrefslogtreecommitdiffstats
path: root/.forgejo/workflows/publish-release.yml
blob: 5de8785ee1b317f1328e24305c6f65a55c0b67c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# SPDX-License-Identifier: MIT
#
# See also https://forgejo.org/docs/next/contributor/release/#stable-release-process
#
# https://codeberg.org/forgejo-experimental/forgejo
#
#  Copies a release from codeberg.org/forgejo-integration to codeberg.org/forgejo-experimental
#
#  vars.ROLE: forgejo-experimental
#  vars.FORGEJO: https://codeberg.org
#  vars.FROM_OWNER: forgejo-integration
#  vars.TO_OWNER: forgejo-experimental
#  vars.REPO: forgejo
#  vars.DOER: forgejo-experimental-ci
#  secrets.TOKEN: <generated from codeberg.org/forgejo-experimental-ci>
#
# http://private.forgejo.org/forgejo/forgejo
#
#  Copies & sign a release from codeberg.org/forgejo-integration to codeberg.org/forgejo
#
#  vars.ROLE: forgejo-release
#  vars.FORGEJO: https://codeberg.org
#  vars.FROM_OWNER: forgejo-integration
#  vars.TO_OWNER: forgejo
#  vars.REPO: forgejo
#  vars.DOER: release-team
#  secrets.TOKEN: <generated from codeberg.org/release-team>
#  secrets.GPG_PRIVATE_KEY: <XYZ>
#  secrets.GPG_PASSPHRASE: <ABC>
#
name: Pubish release

on:
  push:
    tags: 'v*'

jobs:
  publish:
    runs-on: self-hosted
    if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
    steps:
      - uses: actions/checkout@v4

      - name: copy & sign
        uses: https://code.forgejo.org/forgejo/forgejo-build-publish/publish@v5
        with:
          from-forgejo: ${{ vars.FORGEJO }}
          to-forgejo: ${{ vars.FORGEJO }}
          from-owner: ${{ vars.FROM_OWNER }}
          to-owner: ${{ vars.TO_OWNER }}
          repo: ${{ vars.REPO }}
          release-notes: "See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#{ANCHOR}"
          ref-name: ${{ github.ref_name }}
          sha: ${{ github.sha }}
          from-token: ${{ secrets.TOKEN }}
          to-doer: ${{ vars.DOER }}
          to-token: ${{ secrets.TOKEN }}
          gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
          gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
          verbose: ${{ vars.VERBOSE }}

      - name: upgrade v*.next.forgejo.org
        run: |
          export DEBIAN_FRONTEND=noninteractive
          apt-get update -qq
          apt-get -q install -y -qq curl
          version="${{ github.ref_name }}"
          version=${version##*v}
          major=$(echo $version | sed -E -e 's/^([0-9]+).*/\1/')
          # https://forgejo.org/docs/next/developer/infrastructure
          curl -o /dev/null -sS https://v$major.next.forgejo.org/.well-known/wakeup-on-logs/forgejo-v$major

      - name: set up go for the DNS update below
        if: vars.ROLE == 'forgejo-experimental' && secrets.OVH_APP_KEY != ''
        uses: https://code.forgejo.org/actions/setup-go@v4
        with:
          go-version-file: "go.mod"
      - name: update the _release.experimental DNS record
        if: vars.ROLE == 'forgejo-experimental' && secrets.OVH_APP_KEY != ''
        uses: https://code.forgejo.org/actions/ovh-dns-update@v1
        with:
          subdomain: _release.experimental
          domain: forgejo.com # there is a CNAME from .org to .com (for security reasons)
          record-id: 5283602601
          value: v=${{ github.ref_name }}
          ovh-app-key: ${{ secrets.OVH_APP_KEY }}
          ovh-app-secret: ${{ secrets.OVH_APP_SECRET }}
          ovh-consumer-key: ${{ secrets.OVH_CON_KEY }}