@@ -3,133 +3,134 @@ name: CD
3
3
on :
4
4
push :
5
5
branches :
6
- - ' ** '
6
+ - " ** "
7
7
tags-ignore :
8
- # Only create preview releases for branches
9
- # (the `release` workflow creates actual releases for version tags):
10
- - ' ** '
8
+ # Only create preview releases for branches
9
+ # (the `release` workflow creates actual releases for version tags):
10
+ - " ** "
11
11
12
12
env :
13
13
CI : true
14
14
jobs :
15
15
prepare-deployment :
16
- runs-on : ubuntu-20.04
16
+ runs-on : ubuntu-latest
17
17
outputs :
18
18
tag-slug : ${{ steps.determine-npm-tag.outputs.tag-slug }}
19
19
deployment-id : ${{ fromJson(steps.create-deployment.outputs.data || '{}').id || 'Skipped for Dependabot' }}
20
20
steps :
21
- - name : Create GitHub Deployment
22
- if : github.actor != 'dependabot[bot]'
23
- id : create-deployment
24
-
25
- with :
26
- route : POST /repos/:repository/deployments
27
- repository : ${{ github.repository }}
28
- ref : ${{ github.sha }}
29
- environment : review
30
- transient_environment : true
31
- auto_merge : false
32
- mediaType : ' {"previews": ["flash", "ant-man"]}'
33
- # The deployment runs in parallel with CI, so status checks will never have succeeded yet:
34
- required_contexts : ' [] '
35
- env :
36
- GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
37
- - name : Determine npm tag
38
- if : github.actor != 'dependabot[bot]'
39
- id : determine-npm-tag
40
- run : |
41
- # Remove non-alphanumeric characters
42
- # See https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
43
- echo "::set-output name=tag-slug::$(echo ${GITHUB_REF#refs/heads/} | tr -cd '[:alnum:]-')"
21
+ - name : Create GitHub Deployment
22
+ if : github.actor != 'dependabot[bot]'
23
+ id : create-deployment
24
+
25
+ with :
26
+ route : POST /repos/:repository/deployments
27
+ repository : ${{ github.repository }}
28
+ ref : ${{ github.sha }}
29
+ environment : review
30
+ transient_environment : true
31
+ auto_merge : false
32
+ mediaType : ' {"previews": ["flash", "ant-man"]}'
33
+ # The deployment runs in parallel with CI, so status checks will never have succeeded yet:
34
+ required_contexts : " [] "
35
+ env :
36
+ GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
37
+ - name : Determine npm tag
38
+ if : github.actor != 'dependabot[bot]'
39
+ id : determine-npm-tag
40
+ run : |
41
+ # Remove non-alphanumeric characters
42
+ # See https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
43
+ echo "::set-output name=tag-slug::$(echo ${GITHUB_REF#refs/heads/} | tr -cd '[:alnum:]-')"
44
44
45
45
publish-npm :
46
- runs-on : ubuntu-20.04
46
+ runs-on : ubuntu-latest
47
47
needs : [prepare-deployment]
48
48
outputs :
49
49
version-nr : ${{ steps.determine-npm-version.outputs.version-nr }}
50
50
steps :
51
-
52
- - name : Mark GitHub Deployment as in progress
53
- if : github.actor != 'dependabot[bot]'
54
- id : start-deployment
55
-
56
- with :
57
- route : POST /repos/:repository/deployments/:deployment/statuses
58
- repository : ${{ github.repository }}
59
- deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
60
- environment : review
61
- description : " Publishing to npm tag [${{ needs.prepare-deployment.outputs.tag-slug }}]…"
62
- log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
63
- state : in_progress
64
- mediaType : ' {"previews": ["flash", "ant-man"]}'
65
- env :
66
- GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
67
-
68
- with :
69
- node-version : ' 16.x'
70
- registry-url : ' https://registry.npmjs.org'
71
- - name : Prepare prerelease version
72
- if : github.actor != 'dependabot[bot]'
73
- id : determine-npm-version
74
- run : |
75
- git config user.name $GITHUB_ACTOR
76
- git config user.email gh-actions-${GITHUB_ACTOR}@github.com
77
- # Unfortunately re-running a job does not change its run ID nor run number.
78
- # To prevent re-releasing the same version when re-running the CD job,
79
- # we incorporate a timestamp in the prerelease version:
80
- TIMESTAMP=$(date --utc +%s)
81
- # Make sure the prerelease is tagged with the branch name, and that they are sorted by build:
82
- VERSION_NR=$(npm version prerelease --preid=$TAG_SLUG-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-$TIMESTAMP)
83
- echo "::set-output name=version-nr::$VERSION_NR"
84
- env :
85
- TAG_SLUG : ${{ needs.prepare-deployment.outputs.tag-slug }}
86
- - run : npm ci
87
- - name : Publish an npm tag for this branch
88
- if : github.actor != 'dependabot[bot]'
89
- run : |
90
- # Unfortunately GitHub Actions does not currently let us do something like
91
- # if: secrets.NPM_TOKEN != ''
92
- # so simply skip the command if the env var is not set:
93
- if [ -z $NODE_AUTH_TOKEN ]; then echo "No npm token defined; package not published."; fi
94
- if [ -n $NODE_AUTH_TOKEN ]; then npm publish --access public --tag "$TAG_SLUG"; fi
95
- if [ -n $NODE_AUTH_TOKEN ]; then echo "Package published. To install, run:"; fi
96
- if [ -n $NODE_AUTH_TOKEN ]; then echo ""; fi
97
- if [ -n $NODE_AUTH_TOKEN ]; then echo " npm install @inrupt/solid-ui-react@$TAG_SLUG"; fi
98
- env :
99
- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
100
- TAG_SLUG : ${{ needs.prepare-deployment.outputs.tag-slug }}
101
- - name : Mark GitHub Deployment as successful
102
- if : github.actor != 'dependabot[bot]'
103
-
104
- with :
105
- route : POST /repos/:repository/deployments/:deployment/statuses
106
- repository : ${{ github.repository }}
107
- deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
108
- environment : review
109
- environment_url : ' https://www.npmjs.com/package/@inrupt/solid-ui-react/v/${{ needs.prepare-deployment.outputs.tag-slug }}'
110
- description : " Published to npm. To install, run: npm install @inrupt/solid-ui-react@${{ needs.prepare-deployment.outputs.tag-slug }}"
111
- log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
112
- mediaType : ' {"previews": ["flash", "ant-man"]}'
113
- state : success
114
- env :
115
- GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
116
- - name : Mark GitHub Deployment as failed
117
-
118
- if : failure() && github.actor != 'dependabot[bot]'
119
- with :
120
- route : POST /repos/:repository/deployments/:deployment/statuses
121
- repository : ${{ github.repository }}
122
- deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
123
- environment : review
124
- description : " Publication to npm failed. Review the GitHub Actions log for more information."
125
- log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
126
- mediaType : ' {"previews": ["flash", "ant-man"]}'
127
- state : failure
128
- env :
129
- GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
130
- - name : Waiting for npm CDNs to update...
131
- if : github.actor != 'dependabot[bot]'
132
- run : |
133
- echo "Giving npm some time to make the newly-published package available…"
134
- sleep 5m
135
- echo "Done — hopefully that was enough time for the follow-up jobs to install the just-published package, to verify that everything looks OK."
51
+ - uses : actions/checkout@v3
52
+ - name : Mark GitHub Deployment as in progress
53
+ if : github.actor != 'dependabot[bot]'
54
+ id : start-deployment
55
+
56
+ with :
57
+ route : POST /repos/:repository/deployments/:deployment/statuses
58
+ repository : ${{ github.repository }}
59
+ deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
60
+ environment : review
61
+ description : " Publishing to npm tag [${{ needs.prepare-deployment.outputs.tag-slug }}]…"
62
+ log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
63
+ state : in_progress
64
+ mediaType : ' {"previews": ["flash", "ant-man"]}'
65
+ env :
66
+ GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
67
+ - uses : actions/setup-node@v3
68
+ with :
69
+ node-version : " 16.x"
70
+ registry-url : " https://registry.npmjs.org"
71
+ cache : npm
72
+ - name : Prepare prerelease version
73
+ if : github.actor != 'dependabot[bot]'
74
+ id : determine-npm-version
75
+ run : |
76
+ git config user.name $GITHUB_ACTOR
77
+ git config user.email gh-actions-${GITHUB_ACTOR}@github.com
78
+ # Unfortunately re-running a job does not change its run ID nor run number.
79
+ # To prevent re-releasing the same version when re-running the CD job,
80
+ # we incorporate a timestamp in the prerelease version:
81
+ TIMESTAMP=$(date --utc +%s)
82
+ # Make sure the prerelease is tagged with the branch name, and that they are sorted by build:
83
+ VERSION_NR=$(npm version prerelease --preid=$TAG_SLUG-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-$TIMESTAMP)
84
+ echo "::set-output name=version-nr::$VERSION_NR"
85
+ env :
86
+ TAG_SLUG : ${{ needs.prepare-deployment.outputs.tag-slug }}
87
+ - run : npm ci
88
+ - name : Publish an npm tag for this branch
89
+ if : github.actor != 'dependabot[bot]'
90
+ run : |
91
+ # Unfortunately GitHub Actions does not currently let us do something like
92
+ # if: secrets.NPM_TOKEN != ''
93
+ # so simply skip the command if the env var is not set:
94
+ if [ -z $NODE_AUTH_TOKEN ]; then echo "No npm token defined; package not published."; fi
95
+ if [ -n $NODE_AUTH_TOKEN ]; then npm publish --access public --tag "$TAG_SLUG"; fi
96
+ if [ -n $NODE_AUTH_TOKEN ]; then echo "Package published. To install, run:"; fi
97
+ if [ -n $NODE_AUTH_TOKEN ]; then echo ""; fi
98
+ if [ -n $NODE_AUTH_TOKEN ]; then echo " npm install @inrupt/solid-ui-react@$TAG_SLUG"; fi
99
+ env :
100
+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
101
+ TAG_SLUG : ${{ needs.prepare-deployment.outputs.tag-slug }}
102
+ - name : Mark GitHub Deployment as successful
103
+ if : github.actor != 'dependabot[bot]'
104
+
105
+ with :
106
+ route : POST /repos/:repository/deployments/:deployment/statuses
107
+ repository : ${{ github.repository }}
108
+ deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
109
+ environment : review
110
+ environment_url : " https://www.npmjs.com/package/@inrupt/solid-ui-react/v/${{ needs.prepare-deployment.outputs.tag-slug }}"
111
+ description : " Published to npm. To install, run: npm install @inrupt/solid-ui-react@${{ needs.prepare-deployment.outputs.tag-slug }}"
112
+ log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
113
+ mediaType : ' {"previews": ["flash", "ant-man"]}'
114
+ state : success
115
+ env :
116
+ GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
117
+ - name : Mark GitHub Deployment as failed
118
+
119
+ if : failure() && github.actor != 'dependabot[bot]'
120
+ with :
121
+ route : POST /repos/:repository/deployments/:deployment/statuses
122
+ repository : ${{ github.repository }}
123
+ deployment : ${{ needs.prepare-deployment.outputs.deployment-id }}
124
+ environment : review
125
+ description : " Publication to npm failed. Review the GitHub Actions log for more information."
126
+ log_url : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
127
+ mediaType : ' {"previews": ["flash", "ant-man"]}'
128
+ state : failure
129
+ env :
130
+ GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
131
+ - name : Waiting for npm CDNs to update...
132
+ if : github.actor != 'dependabot[bot]'
133
+ run : |
134
+ echo "Giving npm some time to make the newly-published package available…"
135
+ sleep 5m
136
+ echo "Done — hopefully that was enough time for the follow-up jobs to install the just-published package, to verify that everything looks OK."
0 commit comments