-
Notifications
You must be signed in to change notification settings - Fork 2
/
action.yml
117 lines (117 loc) · 4.79 KB
/
action.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
name: Generate a new GitOps release.
description: "Runs git_ops and attempts to generate a new release"
outputs:
app-name:
description: "The OTP app name"
value: ${{ steps.original-app-info.outputs.app_name }}
initial-version:
description: "The app version before git_ops was run"
value: ${{ steps.original-app-info.outputs.app_version }}
final-version:
description: "The app version after git_ops was run"
value: ${{ steps.new-app-info.outputs.app_version || steps.original-app-info.outputs.app_version }}
inputs:
working-directory:
description: "Change the working directory that the commands are run within"
required: false
default: "${{ github.workspace }}"
version-tag-prefix:
description: "The prefix to place before the version number in the tag name"
required: false
default: "v"
mix-env:
description: "The Mix environment to compile within"
required: false
default: "dev"
git-token:
required: false
default: ${{ github.token }}
description: "A Github access token for checking out git-based dependencies."
use-cache:
description: "Use caches?"
required: false
default: "true"
cache-prefix:
description: "Optional prefix for the cache key"
required: false
default: ""
no-major:
description: "Inhibit major version number changes"
required: false
default: "false"
release-token:
description: "The Github access token for creating a release (hint: using the actions token won't trigger other workflows)"
required: false
default: ${{ github.token }}
runs:
using: "composite"
steps:
- uses: team-alembic/staple-actions/actions/mix-compile@main
with:
mix-env: ${{ inputs.mix-env }}
git-token: ${{ inputs.git-token }}
working-directory: ${{ inputs.working-directory }}
use-cache: ${{ inputs.use-cache }}
cache-prefix: ${{ inputs.cache-prefix }}
- run: git config user.email '${{ github.repository }}+github-actions[bot]@users.noreply.github.com'
shell: bash
working-directory: "${{ inputs.working-directory }}"
- run: git config user.name 'github-actions'
shell: bash
working-directory: "${{ inputs.working-directory }}"
- run: mix git_ops.project_info --format github-actions
env:
MIX_ENV: ${{ inputs.mix-env }}
HEX_HOME: ${{ runner.temp }}/.hex
MIX_HOME: ${{ runner.temp }}/.mix
name: Retrieving original app version.
id: original-app-info
shell: bash
working-directory: "${{ inputs.working-directory }}"
- run: mix git_ops.release --yes || true
if: ${{ inputs.no-major != 'true' }}
env:
MIX_ENV: ${{ inputs.mix-env }}
HEX_HOME: ${{ runner.temp }}/.hex
MIX_HOME: ${{ runner.temp }}/.mix
shell: bash
working-directory: "${{ inputs.working-directory }}"
- run: mix git_ops.release --yes --no-major || true
if: ${{ inputs.no-major == 'true' }}
env:
MIX_ENV: ${{ inputs.mix-env }}
HEX_HOME: ${{ runner.temp }}/.hex
MIX_HOME: ${{ runner.temp }}/.mix
shell: bash
working-directory: "${{ inputs.working-directory }}"
- run: mix git_ops.project_info --format github-actions
env:
MIX_ENV: ${{ inputs.mix-env }}
HEX_HOME: ${{ runner.temp }}/.hex
MIX_HOME: ${{ runner.temp }}/.mix
name: Checking for new app version.
id: new-app-info
shell: bash
working-directory: "${{ inputs.working-directory }}"
- name: Pushing new tag
if: ${{ steps.original-app-info.outputs.app_version != steps.new-app-info.outputs.app_version }}
run: git push "https://${{ github.actor }}:${{ github.token }}@github.com/${{ github.repository }}" HEAD:${{ github.ref }} refs/tags/v${{ steps.new-app-info.outputs.app_version }}
shell: bash
working-directory: "${{ inputs.working-directory }}"
- name: Getting release message
if: ${{ steps.original-app-info.outputs.app_version != steps.new-app-info.outputs.app_version }}
run: |
git tag -l --format='::set-output name={subject}::{%(contents:subject)}' v${{ steps.new-app-info.outputs.app_version }}
git tag -l --format='::set-output name={body}::{%(contents:body)}' v${{ steps.new-app-info.outputs.app_version }}
id: git-tag-message
shell: bash
working-directory: "${{ inputs.working-directory }}"
- name: Creating new Github release
if: ${{ steps.original-app-info.outputs.app_version != steps.new-app-info.outputs.app_version }}
id: create-release
uses: softprops/action-gh-release@v1
with:
token: ${{ inputs.release-token }}
tag_name: ${{ inputs.version-tag-prefix }}${{ steps.new-app-info.outputs.app_version }}
name: ${{ steps.git-tag-message.subject }}
body: ${{ steps.git-tag-message.body }}