Swift Testing and Swift 6 (#139) #82
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This action gets a cached build of the toolbox, runs vapor new for each set of flags in the matrix, | |
# and pushes the generated template to the corresponding repo. | |
# | |
# It can be manually dispatched to force regeneration of the individual template repos. | |
name: Create templates | |
on: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
inputs: | |
dry_run: | |
description: 'If true (the default), the updated templates are not pushed to their repositories.' | |
required: false | |
default: true | |
type: boolean | |
jobs: | |
cache-toolbox: | |
uses: ./.github/workflows/test-template.yml | |
generate-templates: | |
needs: cache-toolbox | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ toJSON(matrix) }} | |
cancel-in-progress: false | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# No Fluent or Leaf repo | |
- repository: template-bare | |
flags: --no-fluent --no-leaf | |
# SQLite repo | |
- repository: template-fluent-sqlite | |
flags: --fluent.db sqlite --no-leaf | |
# MySQL repo | |
- repository: template-fluent-mysql | |
flags: --fluent.db mysql --no-leaf | |
# Postgres repo | |
- repository: template-fluent-postgres | |
flags: --fluent.db postgres --no-leaf | |
# Postgres with Leaf repo | |
- repository: template-fluent-postgres-leaf | |
flags: --fluent.db postgres --leaf | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Get token | |
id: get-token | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ vars.PENNY_APP_ID }} | |
private-key: ${{ secrets.PENNY_APP_PRIVATE_KEY }} | |
owner: vapor | |
repositories: ${{ matrix.repository }} | |
- name: Get cached toolbox | |
uses: actions/cache/restore@v4 | |
with: | |
key: ${{ needs.cache-toolbox.outputs.cache_key }} | |
path: toolbox | |
fail-on-cache-miss: true | |
- name: Clone pregenerated template repo | |
uses: actions/checkout@v4 | |
with: | |
repository: vapor/${{ matrix.repository }} | |
path: template-repo | |
ref: main | |
token: ${{ steps.get-token.outputs.token }} | |
- name: Generate template | |
env: | |
REPOSITORY: ${{ matrix.repository }} | |
FLAGS: ${{ matrix.flags }} | |
GITHUB_REPOSITORYURL: ${{ github.repositoryUrl }} | |
run: | | |
mv template-repo old-template-repo | |
toolbox/vapor new ${REPOSITORY} ${FLAGS} --no-git -o template-repo | |
mv old-template-repo/.git template-repo/.git | |
cd template-repo | |
git add -A | |
git diff-index --quiet HEAD && exit 0 || true | |
git -c 'user.name=Penny[bot]' -c 'user.email=360798+penny[bot]@vapor.codes' \ | |
commit -m "Autogenerated from ${GITHUB_REPOSITORYURL}@${GITHUB_SHA}" | |
- name: Push generated template | |
env: | |
DRY_RUN: ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run }} | |
run: | | |
if [ "${DRY_RUN}" = 'false' ]; then | |
git -C template-repo push | |
else | |
git -C template-repo log -1 -p | |
fi |