forgejo/.forgejo/workflows/publish-release.yml
Earl Warren 1501294af0
All checks were successful
/ publish (push) Successful in 12s
/ mirror (push) Successful in 39s
mirror hourly instead of daily
a 24h delay may not be such a good idea when relying ont this mirror
for security releases
2024-03-28 09:03:15 +01:00

72 lines
2.6 KiB
YAML

#
# secrets.CODEBERG_TOKEN
# codeberg.org/forgejo-release-mirror user - token FORGEJO_TOKEN https://code.forgejo.org/forgejo/forgejo - read:all
#
# secrets.CODE_FORGEJO_TOKEN
# code.forgejo.org/forgejo-mirror user - token CODE_FORGEJO_TOKEN https://code.forgejo.org/forgejo/forgejo - write:package, write:repository, read:user
#
on:
schedule:
- cron: '@hourly'
push:
branches:
- 'main'
jobs:
publish:
runs-on: self-hosted
steps:
- name: find missing version
id: forgejo-version
shell: bash
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get -qq update && apt-get -q install -y -qq curl jq wget
function get_versions() {
local host=$1
curl -sS https://$host/api/v1/repos/forgejo/forgejo/releases | jq -r '.[] | .tag_name' | grep -v -e '-rc' | sort
}
get_versions codeberg.org > /tmp/codeberg
get_versions code.forgejo.org > /tmp/forgejo
version=$(comm -23 /tmp/codeberg /tmp/forgejo | head -1)
if test "$version" ; then
echo $version is missing
echo value=$version >> $GITHUB_OUTPUT
else
echo all versions have been copied already
cat /tmp/codeberg
fi
- uses: actions/checkout@v3
if: steps.forgejo-version.outputs.value != ''
- name: get the SHA of the version
if: steps.forgejo-version.outputs.value != ''
id: forgejo-sha
run: |
set -x
# it may fail if the mirror of the git repository was not done yet and
# the tag is still missing, it will happen the next day
if git fetch origin ${{ steps.forgejo-version.outputs.value }} ; then
sha=$(git rev-parse FETCH_HEAD)
fi
echo "value=$sha" >> "$GITHUB_OUTPUT"
- name: copy missing version
if: steps.forgejo-version.outputs.value != '' && steps.forgejo-sha.outputs.value != ''
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/publish@v2
with:
from-forgejo: https://codeberg.org
from-owner: forgejo
to-forgejo: https://code.forgejo.org
to-owner: forgejo
repo: forgejo
ref-name: ${{ steps.forgejo-version.outputs.value }}
sha: ${{ steps.forgejo-sha.outputs.value }}
release-notes: "See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#{ANCHOR}"
from-token: ${{ secrets.CODEBERG_TOKEN }}
to-doer: forgejo-mirror
to-token: ${{ secrets.CODE_FORGEJO_TOKEN }}
verbose: ${{ vars.VERBOSE }}