-
Notifications
You must be signed in to change notification settings - Fork 6
153 lines (126 loc) · 7.27 KB
/
fw-ig-ig.yml
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: ig-build-workflow
# Setup:
# 1. Copy this file and name it to match the IG folder name to help relate the file to the IG. The file name it not
# important but it helps to match the IG folder name. Remove the .off suffix if there is one.
# 2. Set the env variables to match your setup.
# 3. Adjust the paths under the `on.push.paths` and `on.pull_request_target.paths` keys to match your IG's directory.
# 4. Set up a GitHub Actions secret in this repository for the PAT token to write to the publishing repository so the build can push to it. the secrete is named secrets.PUBLISHER_IO
# 5. Enable GitHub actions and write access to this repository.
# 6.
env:
IG_PATH: 'ig' # The relative folder path of the IG root directory
IG_READ_SECRET_NAME: GITHUB_TOKEN # this is the name of the secrets token that should be used for IG source code read access.
# IG_WRITE_SECRET_NAME: GITHUB_TOKEN # this is the name of the secrets token that should be used for IG source code write access.
DOCKER_PUBLISHER_TAG: latest # The Docker tag for the Publisher version wanted for the build from: https://hub.docker.com/repository/docker/sessaid/ig-publisher
PUBLISHER_ARGS: "-ig ig.ini" # the publisher command line arguments
IO_OWNER: ${{ github.event.repository.owner.login }} # The owner of a GitHub repository that will be used for publishing the built IG's output
IO_REPO: ${{ github.event.repository.name }} # The repository to publish to
IO_BRANCH: gh-pages # The branch to publish to
IO_PATH_PREFIX: '' # An optional path prefix (from the root of the repo) to publish to. No leading slash but with a trailing slash
IO_WRITE_SECRET_NAME: GITHUB_TOKEN
defaults:
run:
shell: bash
# Only build the latest branch for an IG, and cancel any in progress builds in favor of the latest.
concurrency:
group: ${{ github.repository }}_${{ github.workflow }}_${{ github.ref }}_${{ github.head_ref }}
cancel-in-progress: true
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main, master, dev, development ]
paths:
- 'ig/input/**'
- 'ig/fsh.ini'
- 'ig/ig.ini'
- 'ig/sushi-config.yaml'
- '.github/workflows/fw-ig-ig.yml'
- '.github/workflows/_fw-ig-build-callable.yml'
- '!**/README*'
- ''
pull_request_target:
paths:
- 'ig/**'
- '.github/workflows/fw-ig-ig.yml'
- '.github/workflows/_fw-ig-build-callable.yml'
- '!**/README*'
jobs:
# Do any setup needed to create job output parameters needed to the later build job
setup:
name: Setup
runs-on: ubuntu-latest
outputs:
# --- ig branch
ig-owner-repo: ${{ steps.arguments.outputs.ig-owner-repo }}
ig-ref: ${{ steps.arguments.outputs.ig-ref }}
ig-path: ${{ steps.arguments.outputs.ig-path }}
ig-read-secret-name: ${{ steps.arguments.outputs.ig-read-secret-name }}
# ig-write-secret-name: ${{ steps.arguments.outputs.ig-write-secret-name }}
pr-base-ref: ${{ steps.arguments.outputs.pr-base-ref }}
pr-number: ${{ steps.arguments.outputs.pr-number }}
# --- publisher
publisher-args: ${{ steps.arguments.outputs.publisher-args }}
docker-publisher-tag: ${{ steps.arguments.outputs.docker-publisher-tag }}
# ----- IO
io-owner: ${{ steps.arguments.outputs.io-owner }}
io-repo: ${{ steps.arguments.outputs.io-repo }}
io-branch: ${{ steps.arguments.outputs.io-branch }}
io-path: ${{ steps.arguments.outputs.io-path }}
io-path-merged: ${{ steps.arguments.outputs.io-path-merged }}
io-write-secret-name: ${{ steps.arguments.outputs.io-write-secret-name }}
steps:
- name: Debug
id: debug
run: |
echo concurrency group: ${{ github.repository }}_${{ github.workflow }}_${{ github.ref }}_${{ github.head_ref }}
echo github context: '${{ toJSON(github) }}'
echo secrets context: '${{ toJSON(secrets) }}'
echo env context: '${{ toJSON(env) }}'
- name: arguments
id: arguments
run: |
if [ "${{ github.event_name }}" = "push" ]; then
echo "ig-owner-repo=${{ github.repository }}" >> $GITHUB_OUTPUT
echo "ig-ref=${{ github.ref_name }}" >> $GITHUB_OUTPUT
echo "io-path=${{ env.IO_PATH_PREFIX }}${{ env.IG_PATH }}/branch/${{ github.ref_name }}" >> $GITHUB_OUTPUT
elif [ "${{ github.event_name }}" = "pull_request_target" ]; then
echo "ig-owner-repo=${{ github.event.pull_request.head.repo.full_name }}" >> $GITHUB_OUTPUT
echo "ig-ref=${{ github.event.pull_request.head.ref }}" >> $GITHUB_OUTPUT
echo "pr-base-ref=${{ github.event.pull_request.base.ref }}" >> $GITHUB_OUTPUT
echo "pr-number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
echo "io-path=${{ env.IO_PATH_PREFIX }}${{ env.IG_PATH }}/pull/${{ github.event.pull_request.number }}_FROM_${{ github.event.pull_request.head.user.login }}_${{ github.event.pull_request.head.repo.name }}_${{ github.event.pull_request.head.ref }}_TO_${{ github.event.pull_request.base.ref }}" >> $GITHUB_OUTPUT
echo "io-path-merged=${{ env.IO_PATH_PREFIX }}${{ env.IG_PATH }}/pull/${{ github.event.pull_request.number }}_FROM_${{ github.event.pull_request.head.user.login }}_${{ github.event.pull_request.head.repo.name }}_${{ github.event.pull_request.head.ref }}_TO_${{ github.event.pull_request.base.ref }}_MERGED" >> $GITHUB_OUTPUT
else
echo EXITING DUE TO UNKNOWN EVENT NAME.
exit 1
fi
echo "ig-path=${{ env.IG_PATH }}" >> $GITHUB_OUTPUT
echo "ig-read-secret-name=${{ env.IG_READ_SECRET_NAME }}" >> $GITHUB_OUTPUT
# echo "ig-write-secret-name=${{ env.IG_WRITE_SECRET_NAME }}" >> $GITHUB_OUTPUT
echo "publisher-args=${{ env.PUBLISHER_ARGS }}" >> $GITHUB_OUTPUT
echo "docker-publisher-tag=${{ env.DOCKER_PUBLISHER_TAG }}" >> $GITHUB_OUTPUT
# IO
echo "io-owner=${{ env.IO_OWNER }}" >> $GITHUB_OUTPUT
echo "io-repo=${{ env.IO_REPO }}" >> $GITHUB_OUTPUT
echo "io-branch=${{ env.IO_BRANCH }}" >> $GITHUB_OUTPUT
echo "io-write-secret-name=${{ env.IO_WRITE_SECRET_NAME }}" >> $GITHUB_OUTPUT
build:
needs: setup
uses: ./.github/workflows/_fw-ig-build-callable.yml
secrets: inherit
with:
ig-owner-repo: ${{ needs.setup.outputs.ig-owner-repo }}
ig-ref: ${{ needs.setup.outputs.ig-ref }}
ig-path: ${{ needs.setup.outputs.ig-path }}
ig-read-secret-name: ${{ needs.setup.outputs.ig-read-secret-name }}
# ig-write-secret-name: ${{ needs.setup.outputs.ig-write-secret-name }}
pr-base-ref: ${{ needs.setup.outputs.pr-base-ref }}
pr-number: ${{ needs.setup.outputs.pr-number }}
publisher-args: ${{ needs.setup.outputs.publisher-args }}
docker-publisher-tag: ${{ needs.setup.outputs.docker-publisher-tag }}
io-owner: ${{ needs.setup.outputs.io-owner }}
io-repo: ${{ needs.setup.outputs.io-repo }}
io-branch: ${{ needs.setup.outputs.io-branch }}
io-path: ${{ needs.setup.outputs.io-path }}
io-path-merged: ${{ needs.setup.outputs.io-path-merged }}
io-write-secret-name: ${{ needs.setup.outputs.io-write-secret-name }}