-
-
Notifications
You must be signed in to change notification settings - Fork 41
137 lines (130 loc) · 4.03 KB
/
release.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
---
name: Release
on:
push:
tags:
- 'v*'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
CARGO_HOME: ${{ github.workspace }}/.cargo-home
# We set an explicit version to only install the components we need for CI.
RUSTUP_TOOLCHAIN: '1.78'
jobs:
tests:
name: Tests
uses: ./.github/workflows/tests.yml
source:
name: Source archive
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/ci:fedora
needs:
- tests
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
steps:
- uses: actions/checkout@v4
- run: git config --global --add safe.directory $PWD
- name: Upload source archive
run: make release/source
- name: Update manifest
run: make release/manifest
runtimes:
name: Runtimes
needs:
- tests
uses: ./.github/workflows/runtimes.yml
secrets: inherit
docs:
name: Documentation
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/inko:latest
needs:
- tests
- source
- runtimes
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
steps:
- name: Install dependencies
run: microdnf install --quiet --assumeyes rclone git tar make
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: '~/.local/share/inko/packages'
key: docs-release-${{ hashFiles('docs/inko.pkg') }}
- run: git config --global --add safe.directory $PWD
- name: Deploy the documentation
run: make docs/publish DOCS_REF=${{ github.ref_name }}
- name: Update the latest tag
run: >
if [[ ${{ github.ref_name }} = $(git tag -l --sort=-v:refname | head -n1) ]]
then
make docs/publish DOCS_REF=latest
fi
std-docs:
name: Standard library documentation
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/ci:fedora
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
needs:
- tests
- source
- runtimes
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: '${{ env.CARGO_HOME }}'
key: std-docs-release-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
- run: git config --global --add safe.directory $PWD
- name: Deploy the documentation
run: make std-docs/publish DOCS_REF=${{ github.ref_name }}
- name: Update the latest tag
run: >
if [[ ${{ github.ref_name }} = $(git tag -l --sort=-v:refname | head -n1) ]]
then
make std-docs/publish DOCS_REF=latest
fi
container:
name: Container
runs-on: ubuntu-latest
needs:
- docs
- runtimes
- source
- std-docs
- tests
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
id: meta
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}