Skip to content

Commit 1114b1e

Browse files
authored
Merge pull request #32 from NarrativeApp/feat/upgrade-elixir-to-1.16-plus-git-ci
CI updates
2 parents f65ca80 + 08f2a35 commit 1114b1e

File tree

12 files changed

+136
-118
lines changed

12 files changed

+136
-118
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,276 +1,274 @@
11
on: push
22

3-
name: Privately published Elixir Library
3+
name: Privately published Elixir Library (with git ops)
44

55
env:
6-
ELIXIR_VERSION: "1.9"
7-
OTP_VERSION: "22.2"
6+
ELIXIR_VERSION: "1.14.5-otp-24"
7+
OTP_VERSION: "24.3.4.17"
88

99
jobs:
1010
deps:
11-
runs-on: ubuntu-18.04
11+
runs-on: ubuntu-22.04
1212
env:
1313
NARRATIVE_HEX_ORG_API_KEY: ${{ secrets.NARRATIVE_HEX_ORG_API_KEY }}
1414
MIX_ENV: test
1515
steps:
1616
- name: Checking out project
17-
uses: actions/checkout@v2
17+
uses: actions/checkout@v4
1818
- name: "Setting up Elixir"
19-
uses: actions/setup-elixir@v1
19+
uses: erlef/setup-beam@v1
2020
with:
2121
otp-version: ${{ env.OTP_VERSION }}
2222
elixir-version: ${{ env.ELIXIR_VERSION }}
2323
- name: Signing into narrativeapp organisation on hex
2424
run: mix hex.organization auth narrativeapp --key $NARRATIVE_HEX_ORG_API_KEY
2525
- name: Downloading dependency cache
26-
uses: actions/cache@v2
26+
uses: actions/cache@v4
2727
with:
2828
path: deps
2929
key: ${{ runner.os }}-deps
3030
- run: mix deps.get
3131
- name: Uploading dependencies for other jobs
32-
uses: actions/upload-artifact@v2
32+
uses: actions/upload-artifact@v4
3333
with:
3434
name: deps
3535
path: deps/
36+
include-hidden-files: true
3637

3738
build:
38-
runs-on: ubuntu-18.04
39+
runs-on: ubuntu-22.04
3940
needs: ["deps"]
4041
env:
4142
MIX_ENV: test
4243
steps:
4344
- name: Checking out project
44-
uses: actions/checkout@v2
45+
uses: actions/checkout@v4
4546
- name: "Setting up Elixir"
46-
uses: actions/setup-elixir@v1
47+
uses: erlef/setup-beam@v1
4748
with:
4849
otp-version: ${{ env.OTP_VERSION }}
4950
elixir-version: ${{ env.ELIXIR_VERSION }}
5051
- name: Downloading dependencies
51-
uses: actions/download-artifact@v2
52+
uses: actions/download-artifact@v4
5253
with:
5354
name: deps
5455
path: deps/
5556
- name: Downloading build artifact cache
56-
uses: actions/cache@v2
57+
uses: actions/cache@v4
5758
with:
5859
path: _build
5960
key: ${{ runner.os }}-build
6061
- name: Run `mix compile`
6162
run: mix compile
6263
- name: Uploading build artifacts for other jobs
63-
uses: actions/upload-artifact@v2
64+
uses: actions/upload-artifact@v4
6465
with:
6566
name: build
6667
path: _build/
6768

6869
credo:
69-
runs-on: ubuntu-18.04
70+
runs-on: ubuntu-22.04
7071
needs: ["deps", "build"]
7172
env:
7273
MIX_ENV: test
7374
steps:
7475
- name: Checking out project
75-
uses: actions/checkout@v2
76+
uses: actions/checkout@v4
7677
- name: "Setting up Elixir"
77-
uses: actions/setup-elixir@v1
78+
uses: erlef/setup-beam@v1
7879
with:
7980
otp-version: ${{ env.OTP_VERSION }}
8081
elixir-version: ${{ env.ELIXIR_VERSION }}
8182
- name: Downloading dependencies
82-
uses: actions/download-artifact@v2
83+
uses: actions/download-artifact@v4
8384
with:
8485
name: deps
8586
path: deps/
8687
- name: Downloading build artifacts
87-
uses: actions/download-artifact@v2
88+
uses: actions/download-artifact@v4
8889
with:
8990
name: build
9091
path: _build/
9192
- run: mix credo --strict
9293

9394
formatter:
94-
runs-on: ubuntu-18.04
95+
runs-on: ubuntu-22.04
9596
steps:
9697
- name: Checking out project
97-
uses: actions/checkout@v2
98+
uses: actions/checkout@v4
9899
- name: "Setting up Elixir"
99-
uses: actions/setup-elixir@v1
100+
uses: erlef/setup-beam@v1
100101
with:
101102
otp-version: ${{ env.OTP_VERSION }}
102103
elixir-version: ${{ env.ELIXIR_VERSION }}
103104
- run: mix format --check-formatted
104105

105106
audit:
106-
runs-on: ubuntu-18.04
107+
runs-on: ubuntu-22.04
107108
needs: ["deps"]
108109
env:
109110
NARRATIVE_HEX_ORG_API_KEY: ${{ secrets.NARRATIVE_HEX_ORG_API_KEY }}
110111
MIX_ENV: test
111112
steps:
112113
- name: Checking out project
113-
uses: actions/checkout@v2
114+
uses: actions/checkout@v4
114115
- name: "Setting up Elixir"
115-
uses: actions/setup-elixir@v1
116+
uses: erlef/setup-beam@v1
116117
with:
117118
otp-version: ${{ env.OTP_VERSION }}
118119
elixir-version: ${{ env.ELIXIR_VERSION }}
119120
- run: mix hex.organization auth narrativeapp --key $NARRATIVE_HEX_ORG_API_KEY
120121
- name: Downloading dependencies
121-
uses: actions/download-artifact@v2
122+
uses: actions/download-artifact@v4
122123
with:
123124
name: deps
124125
path: deps/
125126
- run: mix hex.audit
126127

127128
test:
128-
runs-on: ubuntu-18.04
129+
runs-on: ubuntu-22.04
129130
needs: ["deps", "build"]
130131
env:
131132
MIX_ENV: test
132133
steps:
133134
- name: Checking out project
134-
uses: actions/checkout@v2
135+
uses: actions/checkout@v4
135136
- name: "Setting up Elixir"
136-
uses: actions/setup-elixir@v1
137+
uses: erlef/setup-beam@v1
137138
with:
138139
otp-version: ${{ env.OTP_VERSION }}
139140
elixir-version: ${{ env.ELIXIR_VERSION }}
140141
- name: Downloading dependencies
141-
uses: actions/download-artifact@v2
142+
uses: actions/download-artifact@v4
142143
with:
143144
name: deps
144145
path: deps/
145146
- name: Downloading build artifacts
146-
uses: actions/download-artifact@v2
147+
uses: actions/download-artifact@v4
147148
with:
148149
name: build
149150
path: _build/
150151
- run: mix test
151152

152153
is_releasable:
153-
runs-on: ubuntu-18.04
154+
runs-on: ubuntu-22.04
154155
needs: ["deps", "test", "audit", "formatter", "credo"]
155-
if: ${{ github.event_name == 'push' && !contains(github.ref, 'refs/tags/') }}
156+
if: ${{ github.event_name == 'push' && github.ref != 'refs/heads/master'}}
156157
env:
157158
HEX_API_KEY: ${{ secrets.NARRATIVE_HEX_ORG_API_KEY }}
158159
steps:
159160
- name: Checking out project
160-
uses: actions/checkout@v2
161-
- name: Checking the app name
162-
id: app-name
163-
run: 'echo "::set-output name=app-name::$(awk -F''[:,]'' ''/app: /{print $3}'' mix.exs)"'
164-
- name: Checking the app version
165-
id: app-version
166-
run: "VERSION=$(awk -F\\\" '/version: /{print $2}' mix.exs); echo \"::set-output name=app-version::${VERSION}\""
161+
uses: actions/checkout@v4
167162
- name: "Setting up Elixir"
168-
uses: actions/setup-elixir@v1
163+
uses: erlef/setup-beam@v1
169164
with:
170165
otp-version: ${{ env.OTP_VERSION }}
171166
elixir-version: ${{ env.ELIXIR_VERSION }}
172167
- name: Downloading dependencies
173-
uses: actions/download-artifact@v2
168+
uses: actions/download-artifact@v4
174169
with:
175170
name: deps
176171
path: deps/
177172
- name: Downloading build artifacts
178-
uses: actions/download-artifact@v2
173+
uses: actions/download-artifact@v4
179174
with:
180175
name: build
181176
path: _build/
177+
- name: Getting app information
178+
id: app-info
179+
run: MIX_ENV=test mix git_ops.project_info --format github-actions
182180
- name: Run mix hex.build
183-
run: mix hex.build -o ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
181+
run: mix hex.build -o ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
184182
- name: Uploading hex package as job artifact
185-
uses: actions/upload-artifact@v2
183+
uses: actions/upload-artifact@v4
186184
with:
187-
name: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
188-
path: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
185+
name: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
186+
path: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
189187
- name: Run mix docs
190188
run: MIX_ENV=test mix docs && tar zcvf docs.tar.gz doc/
191189
- name: Uploading documentation as job artifact
192-
uses: actions/upload-artifact@v2
190+
uses: actions/upload-artifact@v4
193191
with:
194-
name: ${{ steps.app-name.outputs.app-name }}-docs-${{ steps.app-version.outputs.app-version }}.tar.gz
192+
name: ${{ steps.app-info.outputs.app_name }}-docs-${{ steps.app-info.outputs.app_version }}.tar.gz
195193
path: docs.tar.gz
196194

197-
release:
198-
runs-on: ubuntu-18.04
195+
git_ops:
196+
runs-on: ubuntu-22.04
199197
needs: ["deps", "test", "audit", "formatter", "credo"]
200-
if: ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags/') }}
198+
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
201199
env:
202200
HEX_API_KEY: ${{ secrets.NARRATIVE_HEX_ORG_API_KEY }}
203201
steps:
204202
- name: Checking out project
205-
uses: actions/checkout@v2
206-
- name: Checking the tag version
207-
id: tag-version
208-
run: VERSION=$(basename ${{ github.ref }}) ; echo "::set-output name=tag-version::${VERSION:1}"
209-
- name: Checking the app version
210-
id: app-version
211-
run: "VERSION=$(awk -F\\\" '/version: /{print $2}' mix.exs); echo \"::set-output name=app-version::${VERSION}\""
212-
- name: Verifying that the git tag and the version in mix.exs match
213-
run: test "xx${{ steps.tag-version.outputs.tag-version }}" = "xx${{ steps.app-version.outputs.app-version }}"
214-
- name: Checking the app name
215-
id: app-name
216-
run: 'echo "::set-output name=app-name::$(awk -F''[:,]'' ''/app: /{print $3}'' mix.exs)"'
203+
uses: actions/checkout@v4
204+
with:
205+
fetch-depth: 0
217206
- name: "Setting up Elixir"
218-
uses: actions/setup-elixir@v1
207+
uses: erlef/setup-beam@v1
219208
with:
220209
otp-version: ${{ env.OTP_VERSION }}
221210
elixir-version: ${{ env.ELIXIR_VERSION }}
222211
- name: Downloading dependencies
223-
uses: actions/download-artifact@v2
212+
uses: actions/download-artifact@v4
224213
with:
225214
name: deps
226215
path: deps/
227216
- name: Downloading build artifacts
228-
uses: actions/download-artifact@v2
217+
uses: actions/download-artifact@v4
229218
with:
230219
name: build
231220
path: _build/
232-
- name: Run mix hex.build
233-
run: mix hex.build -o ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
234-
- name: Uploading hex package as job artifact
235-
uses: actions/upload-artifact@v2
236-
with:
237-
name: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
238-
path: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
239-
- name: Run mix docs
240-
run: MIX_ENV=test mix docs && tar zcvf docs.tar.gz doc/
241-
- name: Uploading documentation as job artifact
242-
uses: actions/upload-artifact@v2
243-
with:
244-
name: ${{ steps.app-name.outputs.app-name }}-docs-${{ steps.app-version.outputs.app-version }}.tar.gz
245-
path: docs.tar.gz
246-
- name: Publishing hex package
247-
run: mix hex.publish --organization narrativeapp --yes
221+
- name: Configure git author
222+
run: git config user.email '41898282+github-actions[bot]@users.noreply.github.com' ; git config user.name 'github-actions'
223+
- name: Retrieving the current app version
224+
id: original-app-info
225+
run: MIX_ENV=test mix git_ops.project_info --format github-actions
226+
- name: Run mix git_ops.release
227+
run: MIX_ENV=test mix git_ops.release --yes --no-major || true
228+
- name: Checking for new app version
229+
id: app-info
230+
run: MIX_ENV=test mix git_ops.project_info --format github-actions
231+
- name: Building hex package
232+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
233+
run: mix hex.build -o ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
234+
- name: Building hex docs
235+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
236+
run: MIX_ENV=test mix docs && tar zcvf ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}-docs.tar.gz doc/
237+
- name: Pushing new tag
238+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
239+
run: git push "https://${{ github.actor }}:${{ github.token }}@github.com/${{ github.repository }}" HEAD:${{ github.ref }} refs/tags/v${{ steps.app-info.outputs.app_version }}
248240
- name: Creating new Github release
241+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
249242
id: create-release
250243
uses: actions/create-release@v1
251244
env:
252-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
245+
GITHUB_TOKEN: ${{ github.token }}
253246
with:
254-
tag_name: v${{ steps.app-version.outputs.app-version }}
255-
release_name: Release ${{ steps.app-name.outputs.app-name }} ${{ steps.app-version.outputs.app-version }}
256-
body: Autogenerated from tag push
247+
tag_name: v${{ steps.app-info.outputs.app_version }}
248+
release_name: Release ${{ steps.app-info.outputs.app_name }} ${{ steps.app-info.outputs.app_version }}
249+
body: Autogenerated by git_ops release.
257250
- name: Uploading hex package as release artifact
251+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
258252
id: upload-package
259253
uses: actions/upload-release-asset@v1
260254
env:
261-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
255+
GITHUB_TOKEN: ${{ github.token }}
262256
with:
263257
upload_url: ${{ steps.create-release.outputs.upload_url }}
264-
asset_path: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
265-
asset_name: ${{ steps.app-name.outputs.app-name }}-${{ steps.app-version.outputs.app-version }}.tar
258+
asset_path: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
259+
asset_name: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}.tar
266260
asset_content_type: application/x-tar
267261
- name: Uploading documentation as release artifact
262+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
268263
id: upload-docs
269264
uses: actions/upload-release-asset@v1
270265
env:
271-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
266+
GITHUB_TOKEN: ${{ github.token }}
272267
with:
273268
upload_url: ${{ steps.create-release.outputs.upload_url }}
274-
asset_path: docs.tar.gz
275-
asset_name: ${{ steps.app-name.outputs.app-name }}-docs-${{ steps.app-version.outputs.app-version }}.tar.gz
269+
asset_path: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}-docs.tar.gz
270+
asset_name: ${{ steps.app-info.outputs.app_name }}-${{ steps.app-info.outputs.app_version }}-docs.tar.gz
276271
asset_content_type: application/gzip
272+
- name: Publishing hex package
273+
if: ${{ steps.original-app-info.outputs.app_version != steps.app-info.outputs.app_version }}
274+
run: mix hex.publish --organization narrativeapp --yes

.tool-versions

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
elixir 1.16.2-otp-24
2+
erlang 24.3.4.17

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Or application variables:
5050
These default to `localhost`, `8200`, `http` respectively.
5151

5252
You can skip SSL certificate verification with `:vaultex, vault_ssl_verify: true` option
53-
or `VAULT_SSL_VERIFY=true` environment variable.
53+
or `VAULT_SSL_VERIFY=true` environment variable.
5454

5555
If you do want to use SSL verification, set the `VAULT_CACERT` environment variable to the SSL certificate location. (See the [Vault documentaion](https://www.vaultproject.io/docs/commands/#vault_cacert) for more details.)
5656

config/config.exs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is responsible for configuring your application
22
# and its dependencies with the aid of the Mix.Config module.
3-
use Mix.Config
3+
import Config
44

55
# This configuration is loaded before any dependency and is restricted
66
# to this project. If another project depends on this project, this
@@ -31,4 +31,10 @@ use Mix.Config
3131

3232
config :vaultex, httpoison: HTTPoison
3333

34-
import_config "#{Mix.env()}.exs"
34+
config :git_ops,
35+
mix_project: Vaultex.Mixfile,
36+
changelog_file: "CHANGELOG.md",
37+
repository_url: "https://github.com/NarrativeApp/vaultex",
38+
manage_mix_version?: true
39+
40+
import_config "#{config_env()}.exs"

0 commit comments

Comments
 (0)