Skip to content

Snap Cron

Snap Cron #154767

Workflow file for this run

name: Snap Cron
permissions:
contents: write
on:
workflow_dispatch:
schedule:
- cron: '0 * * * *'
jobs:
check:
name: Check ${{ matrix.branch }}
runs-on: ubuntu-latest
concurrency:
group: snap-sync-${{ matrix.branch }}
cancel-in-progress: false
strategy:
fail-fast: false
matrix:
include:
- branch: main
launchpad_branch: master
release: ''
- branch: node26
launchpad_branch: node26
release: '26'
- branch: node24
launchpad_branch: node24
release: '24'
- branch: node22
launchpad_branch: node22
release: '22'
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ matrix.branch }}
fetch-depth: 0
- name: Init git config
run: |
git config user.name "GitHub Actions"
git config user.email noreply@github.com
git remote add launchpad git+ssh://openjs@git.launchpad.net/node-snap
mkdir ~/.ssh/
chmod 700 ~/.ssh
echo "Host git.launchpad.net" > ~/.ssh/config
echo " User openjs" >> ~/.ssh/config
echo " IdentityFile ~/.ssh/launchpad_rsa" >> ~/.ssh/config
echo -e "${{ secrets.LAUNCHPAD_RSA }}" > ~/.ssh/launchpad_rsa
chmod 600 ~/.ssh/launchpad_rsa
# In ephemeral environments like GitHub Action runners, relying on TOFU isn't providing any security
# so require the key obtained by `ssh-keyscan` to match the expected hash from https://help.launchpad.net/SSHFingerprints
ssh-keyscan git.launchpad.net >> ~/.ssh/known_hosts
ssh-keygen -qlF git.launchpad.net | grep -xF 'git.launchpad.net RSA SHA256:UNOzlP66WpDuEo34Wgs8mewypV0UzqHLsIFoqwe8dYo'
- name: Generate Snap definition
id: generate
env:
RELEASE: ${{ matrix.release }}
run: |
args=()
if [[ -n "$RELEASE" ]]; then
args=(-r "$RELEASE")
fi
output="$(./snapcraft.yaml.sh "${args[@]}")"
printf '%s\n' "$output"
version="$(printf '%s\n' "$output" | awk -F= '$1 == "NODE_VERSION" { print $2 }')"
test -n "$version"
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Publish changes
env:
BRANCH: ${{ matrix.branch }}
LAUNCHPAD_BRANCH: ${{ matrix.launchpad_branch }}
VERSION: ${{ steps.generate.outputs.version }}
run: |
if ! git diff --quiet -- snapcraft.yaml; then
git add snapcraft.yaml
git commit -m "snap: (auto) updated to $VERSION"
git push origin "HEAD:$BRANCH"
fi
git push launchpad "HEAD:$LAUNCHPAD_BRANCH"