-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (113 loc) · 6.84 KB
/
template-main.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
name: Release
on:
push:
branches: [ main, feature/semantic_release ]
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
jobs:
release:
environment: ACTIONS_ENV
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_2 }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
HEX_API_KEY: ${{ secrets.HEX_API_KEY }}
GITHUB_API_URL: ${{ vars.GH_API_URL }}
PUBLISH_ARTIFACT: ${{ vars.PUBLISH_ARTIFACT }}
DEBUG_MODE: ${{ vars.DEBUG_MODE }}
COMMIT_PUSH: ${{ vars.COMMIT_PUSH }}
ELIXIR_VERSION: ${{ vars.ELIXIR_VERSION }}
OTP_VERSION: ${{ vars.OTP_VERSION }}
SKIP_GIT_HOOKS: 'true'
SKIP_RELEASE: ${{ contains(github.event.head_commit.message, '[skip release]') || contains(github.event.head_commit.message, '[skip ci]') || contains(github.event.head_commit.message, '[release skip]') || contains(github.event.head_commit.message, '[ci skip]') }}
steps:
- uses: actions/checkout@v4
- name: Set Env Variables
if: ${{ env.SKIP_RELEASE == 'false' }}
run: |
echo "GITHUB_BRANCH=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "GITHUB_REPO_URL=${{ github.server_url }}/${{ github.repository }}.git" >> $GITHUB_ENV
- name: Create A File
if: ${{ env.SKIP_RELEASE == 'false' }}
run: echo '{"repositoryUrl":"${{ env.GITHUB_REPO_URL }}","branches":["${{ env.GITHUB_BRANCH }}"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"eslint","releaseRules":[{"tag":"breaking","release":"major"},{"tag":"feat","release":"minor"},{"tag":"chore","release":"minor"},{"tag":"refactor","release":"minor"},{"tag":"update","release":"minor"},{"tag":"upgrade","release":"minor"},{"tag":"docs","release":"patch"},{"tag":"ci","release":"patch"},{"tag":"fix","release":"patch"},{"tag":"test","release":"patch"},{"tag":"perf","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"breaking","section":"Major version release","hidden":false},{"type":"BREAKING","section":"Major version release","hidden":false},{"type":"BREAKING CHANGE","section":"Major version release","hidden":false},{"type":"BREAKING CHANGES","section":"Major version release","hidden":false},{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"update","section":"Updates","hidden":false},{"type":"upgrade","section":"Upgrades","hidden":false},{"type":"docs","section":"Documentation","hidden":false},{"type":"chore","section":"Chores","hidden":false},{"type":"ci","section":"CI/CD Changes","hidden":false},{"type":"test","section":"Tests","hidden":false},{"type":"refactor","section":"Refactoring","hidden":false},{"type":"perf","section":"Performance Improvements","hidden":false}]},"writerOpts":{"commitsSort":["subject","scope"]}}],"@semantic-release/github",["@semantic-release/changelog",{"changelogFile":"docs/CHANGELOG.md"}]]}' > .releaserc2
- name: Set Actual Branch
if: ${{ env.SKIP_RELEASE == 'false' }}
id: vars
run: |
echo "file_content=$(cat .releaserc2)" >> $GITHUB_OUTPUT
echo "actual_branch=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
#git config --get remote.origin.url
echo "${{ github.server_url }}/${{ github.repository }}"
#deprecated echo ::set-output name=actual_branch::${GITHUB_REF#refs/*/}
- name: Setup Node.js
if: ${{ env.SKIP_RELEASE == 'false' }}
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Set up Elixir 1.14.3 and Otp 25
if: ${{ env.SKIP_RELEASE == 'false' }}
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ env.ELIXIR_VERSION }}
otp-version: ${{ env.OTP_VERSION }}
- name: Setup semantic-release
if: ${{ env.SKIP_RELEASE == 'false' }}
run: npm install -g semantic-release @semantic-release/changelog @semantic-release/github conventional-changelog-eslint conventional-changelog-conventionalcommits conventional-changelog-angular -D
- name: Release
if: ${{ env.SKIP_RELEASE == 'false' }}
run: npx -p conventional-changelog-eslint -p conventional-changelog-conventionalcommits -p @semantic-release/changelog semantic-release
- name: Set variables From git tag command
if: ${{ env.SKIP_RELEASE == 'false' }}
run: |
echo "$VER"
echo "RELEASE_VERSION=$(git tag | sort --version-sort | tail -n1 | tr -d 'v')" >> $GITHUB_ENV
- name: Validate variables
if: ${{ env.SKIP_RELEASE == 'false' && env.DEBUG_MODE == 'true' }}
run: |
echo "RELEASE_VERSION=${{ env.RELEASE_VERSION }}"
echo "CONDITION RELEASE_VERSION != '';=${{ env.RELEASE_VERSION != '' }}"
echo "CONDITION PUBLISH_ARTIFACT == '';=${{ env.RELEASE_VERSION == '' }}"
echo "CONDITION PUBLISH_ARTIFACT == TRUE;=${{ env.PUBLISH_ARTIFACT == 'true' }}"
echo "CONDITION PUBLISH_ARTIFACT == FALSE;=${{ env.PUBLISH_ARTIFACT == 'false' }}"
echo "GITHUB_API_URL=${{ env.GITHUB_API_URL }}"
echo "PUBLISH_ARTIFACT=${{ env.PUBLISH_ARTIFACT }}"
echo "COMMIT_PUSH=${{ env.COMMIT_PUSH }}"
echo "DEBUG_MODE=${{ env.DEBUG_MODE }}"
echo "COMMIT_LAST_MESSAGE: ${{ github.event.head_commit.message }}"
echo "SKIP_RELEASE: ${{ env.SKIP_RELEASE }}"
echo "GITHUB_BRANCH: ${{ env.GITHUB_BRANCH }}"
echo "GITHUB_REPO_URL: ${{ env.GITHUB_REPO_URL }}"
echo ${{ steps.vars.outputs.file_content }}
echo ${{ steps.vars.outputs.actual_branch }}
# COMMIT_PUSH steps
- name: Upgrade mix.exs
if: ${{ env.SKIP_RELEASE == 'false' && env.COMMIT_PUSH == 'true' }}
run: sed -i 's/@version \".*\"/@version "${{ env.RELEASE_VERSION }}"/g' mix.exs
working-directory: Elixir/Konex
- name: Commit And Push version
if: ${{ env.SKIP_RELEASE == 'false' && env.COMMIT_PUSH == 'true' }}
uses: github-actions-x/[email protected]
with:
github-token: ${{ env.GITHUB_TOKEN }}
push-branch: ${{ env.GITHUB_BRANCH }}
commit-message: '[skip release] [skip ci] Upgrade version to ${{ env.RELEASE_VERSION }}'
force-add: "true"
files: Elixir/Konex/mix.exs docs/CHANGELOG.md
name: Release Bot
email: [email protected]
# PUBLISH_ARTIFACT steps
- name: Install Mix dependencies
if: ${{ env.SKIP_RELEASE == 'false' && env.PUBLISH_ARTIFACT == 'true' }}
run: mix deps.get && mix deps.compile
working-directory: Elixir/Konex
- name: Run Mix tests
if: ${{ env.SKIP_RELEASE == 'false' && env.PUBLISH_ARTIFACT == 'true' }}
run: mix test
working-directory: Elixir/Konex
- name: Publish to HEX
if: ${{ env.SKIP_RELEASE == 'false' && env.PUBLISH_ARTIFACT == 'true' }}
run: mix hex.publish --replace --yes
working-directory: Elixir/Konex