mirror of
https://github.com/immich-app/immich.git
synced 2024-11-24 08:52:28 +02:00
build: Add workflow for creating draft releases (#1402)
* build: Change pump-version script to use flags * build: Create initial prepare-release workflow * build: Fix release script path * build: Rename .env.example to example.env * docs: propagate example.env rename * build: Fix pump-version script patch argument * build: Final tweaks to release scripts
This commit is contained in:
parent
a6f7fdba4e
commit
50c36068e7
49
.github/workflows/prepare-release.yml
vendored
Normal file
49
.github/workflows/prepare-release.yml
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
name: Prepare new release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
serverBump:
|
||||||
|
description: 'Bump server version'
|
||||||
|
required: true
|
||||||
|
default: 'false'
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- false
|
||||||
|
- minor
|
||||||
|
- patch
|
||||||
|
mobileBump:
|
||||||
|
description: 'Bump mobile build number'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tag_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Bump version
|
||||||
|
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
||||||
|
|
||||||
|
- name: Commit and tag
|
||||||
|
uses: EndBug/add-and-commit@v9
|
||||||
|
with:
|
||||||
|
author_name: Immich Release Bot
|
||||||
|
author_email: bot@immich.app
|
||||||
|
message: "Version ${{ env.IMMICH_VERSION }}"
|
||||||
|
tag: ${{ env.IMMICH_VERSION }}
|
||||||
|
push: true
|
||||||
|
|
||||||
|
- name: Create draft release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
tag_name: ${{ env.IMMICH_VERSION }}
|
||||||
|
generate_release_notes: true
|
||||||
|
body_path: misc/release/notes.tmpl
|
||||||
|
files: |
|
||||||
|
docker/docker-compose.yml
|
||||||
|
docker/example.env
|
@ -23,7 +23,7 @@ All the services are packaged to run as with single Docker Compose command.
|
|||||||
### Instructions
|
### Instructions
|
||||||
|
|
||||||
1. Clone the project repo.
|
1. Clone the project repo.
|
||||||
2. Run `cp docker/.env.example docker/.env`.
|
2. Run `cp docker/example.env docker/.env`.
|
||||||
3. Edit `docker/.env` to provide values for the required variables `UPLOAD_LOCATION` and `JWT_SECRET`.
|
3. Edit `docker/.env` to provide values for the required variables `UPLOAD_LOCATION` and `JWT_SECRET`.
|
||||||
4. From the root directory, run:
|
4. From the root directory, run:
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Docker Compose is the recommended method to run Immich in production. Below are
|
|||||||
|
|
||||||
### Step 1 - Download the required files
|
### Step 1 - Download the required files
|
||||||
|
|
||||||
Download [`docker-compose.yml`][compose-file] [`.env.example`][env-file].
|
Download [`docker-compose.yml`][compose-file] [`example.env`][env-file].
|
||||||
|
|
||||||
From a directory of your choice (e.g. `./immich-app`) run the following commands:
|
From a directory of your choice (e.g. `./immich-app`) run the following commands:
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-comp
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash title="Get .env file"
|
```bash title="Get .env file"
|
||||||
wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
|
wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env
|
||||||
```
|
```
|
||||||
|
|
||||||
### Step 2 - Populate the .env file with custom values
|
### Step 2 - Populate the .env file with custom values
|
||||||
@ -131,5 +131,5 @@ Immich is currently under heavy development, which means you can expect breaking
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
[compose-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
|
[compose-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
|
||||||
[env-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
|
[env-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env
|
||||||
[watchtower]: https://containrrr.dev/watchtower/
|
[watchtower]: https://containrrr.dev/watchtower/
|
||||||
|
@ -28,7 +28,7 @@ Install Immich using Portainer's Stack feature.
|
|||||||
alt="Dot Env Example"
|
alt="Dot Env Example"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
9. Copy the content of the `.env.example` file from the [GitHub repository](https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example) and paste into the editor.
|
9. Copy the content of the `example.env` file from the [GitHub repository](https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env) and paste into the editor.
|
||||||
10. Switch back to "**Simple Mode**".
|
10. Switch back to "**Simple Mode**".
|
||||||
|
|
||||||
<img
|
<img
|
||||||
|
@ -16,7 +16,7 @@ curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | b
|
|||||||
|
|
||||||
The script will perform the following actions:
|
The script will perform the following actions:
|
||||||
|
|
||||||
1. Download [docker-compose.yml](https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml), and the [.env](https://github.com/immich-app/immich/blob/main/docker/.env.example) file from the main branch of the [repository](https://github.com/immich-app/immich).
|
1. Download [docker-compose.yml](https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml), and the [.env](https://github.com/immich-app/immich/blob/main/docker/example.env) file from the main branch of the [repository](https://github.com/immich-app/immich).
|
||||||
2. Populate the `.env` file with necessary information based on the current directory path.
|
2. Populate the `.env` file with necessary information based on the current directory path.
|
||||||
3. Start the containers.
|
3. Start the containers.
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich"
|
|||||||
</details>
|
</details>
|
||||||
5. Click "**Save Changes**", you will be promoted to edit stack UI labels, just leave this blank and click "**Ok**"
|
5. Click "**Save Changes**", you will be promoted to edit stack UI labels, just leave this blank and click "**Ok**"
|
||||||
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
|
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
|
||||||
7. Past the entire contents of the [Immich .env.example](https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example) file into the Unraid editor, then **before saving** edit the following:
|
7. Past the entire contents of the [Immich example.env](https://raw.githubusercontent.com/immich-app/immich/main/docker/example.env) file into the Unraid editor, then **before saving** edit the following:
|
||||||
|
|
||||||
- `JWT_SECRET`: Generate a unique secret and paste the value here > Can be generated by either typing `openssl rand -base64 128` in your terminal or copying from [uuidgenerator](https://www.uuidgenerator.net/version1)
|
- `JWT_SECRET`: Generate a unique secret and paste the value here > Can be generated by either typing `openssl rand -base64 128` in your terminal or copying from [uuidgenerator](https://www.uuidgenerator.net/version1)
|
||||||
- `UPLOAD_LOCATION`: Create a folder in your Images Unraid share and place the **absolute** location here > For example my _"images"_ share has a folder within it called _"immich"_. If I browse to this directory in the terminal and type `pwd` the output is `/mnt/user/images/immich`. This is the exact value I need to enter as my `UPLOAD_LOCATION`
|
- `UPLOAD_LOCATION`: Create a folder in your Images Unraid share and place the **absolute** location here > For example my _"images"_ share has a folder within it called _"immich"_. If I browse to this directory in the terminal and type `pwd` the output is `/mnt/user/images/immich`. This is the exact value I need to enter as my `UPLOAD_LOCATION`
|
||||||
|
@ -28,7 +28,7 @@ download_docker_compose_file() {
|
|||||||
|
|
||||||
download_dot_env_file() {
|
download_dot_env_file() {
|
||||||
echo "Downloading .env file..."
|
echo "Downloading .env file..."
|
||||||
curl -L https://raw.githubusercontent.com/immich-app/immich/$release_version/docker/.env.example -o ./.env >/dev/null 2>&1
|
curl -L https://raw.githubusercontent.com/immich-app/immich/$release_version/docker/example.env -o ./.env >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
replace_env_value() {
|
replace_env_value() {
|
||||||
|
21
misc/release/notes.tmpl
Normal file
21
misc/release/notes.tmpl
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
## Highlights
|
||||||
|
|
||||||
|
{{RELEASE HIGHLIGHTS}}
|
||||||
|
|
||||||
|
As always, please consider supporting the project.
|
||||||
|
|
||||||
|
🎉 Cheer! 🎉
|
||||||
|
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://media.giphy.com/media/LStqgGESXW8XnuCv5y/giphy.gif" width="250" title="Loading ~4000 images/videos">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
If you find the project helpful and it helps you in some ways, you can support the project [one time](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or [monthly](https://github.com/sponsors/alextran1502) from GitHub Sponsors
|
||||||
|
|
||||||
|
It is a great way to let me know that you want me to continue developing and working on this project for years to come.
|
||||||
|
|
||||||
|
## What's Changed
|
@ -3,16 +3,25 @@
|
|||||||
#
|
#
|
||||||
# Pump one or both of the server/mobile versions in appropriate files
|
# Pump one or both of the server/mobile versions in appropriate files
|
||||||
#
|
#
|
||||||
# usage: './scripts/pump-version.sh <major|minor|patch|fase> <mobile|false'>
|
# usage: './scripts/pump-version.sh -s <major|minor|patch> <-m>
|
||||||
#
|
#
|
||||||
# examples:
|
# examples:
|
||||||
# ./scripts/pump-version.sh major false # 1.0.0+50 => 2.0.0+50
|
# ./scripts/pump-version.sh -s major # 1.0.0+50 => 2.0.0+50
|
||||||
# ./scripts/pump-version.sh minor mobile # 1.0.0+50 => 1.1.0+51
|
# ./scripts/pump-version.sh -s minor -m # 1.0.0+50 => 1.1.0+51
|
||||||
# ./scripts/pump-version.sh false mobile # 1.0.0+50 => 1.0.0+51
|
# ./scripts/pump-version.sh -m # 1.0.0+50 => 1.0.0+51
|
||||||
#
|
#
|
||||||
|
|
||||||
SERVER_PUMP=$1
|
SERVER_PUMP="false"
|
||||||
MOBILE_PUMP=$2
|
MOBILE_PUMP="false"
|
||||||
|
|
||||||
|
while getopts 's:m:' flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
s) SERVER_PUMP=${OPTARG} ;;
|
||||||
|
m) MOBILE_PUMP=${OPTARG} ;;
|
||||||
|
*) echo "Invalid args"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
CURRENT_SERVER=$(cat server/package.json | jq -r '.version')
|
CURRENT_SERVER=$(cat server/package.json | jq -r '.version')
|
||||||
MAJOR=$(echo $CURRENT_SERVER | cut -d '.' -f1)
|
MAJOR=$(echo $CURRENT_SERVER | cut -d '.' -f1)
|
||||||
@ -23,12 +32,12 @@ if [[ $SERVER_PUMP == "major" ]]; then
|
|||||||
MAJOR=$((MAJOR + 1))
|
MAJOR=$((MAJOR + 1))
|
||||||
elif [[ $SERVER_PUMP == "minor" ]]; then
|
elif [[ $SERVER_PUMP == "minor" ]]; then
|
||||||
MINOR=$((MINOR + 1))
|
MINOR=$((MINOR + 1))
|
||||||
elif [[ $1 == "patch" ]]; then
|
elif [[ $SERVER_PUMP == "patch" ]]; then
|
||||||
PATCH=$((PATCH + 1))
|
PATCH=$((PATCH + 1))
|
||||||
elif [[ $SERVER_PUMP == "false" ]]; then
|
elif [[ $SERVER_PUMP == "false" ]]; then
|
||||||
echo 'Skipping Server Pump'
|
echo 'Skipping Server Pump'
|
||||||
else
|
else
|
||||||
echo 'Expected <major|minor|patch|false> for the first argument'
|
echo 'Expected <major|minor|patch|false> for the server argument'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -36,12 +45,12 @@ NEXT_SERVER=$MAJOR.$MINOR.$PATCH
|
|||||||
|
|
||||||
CURRENT_MOBILE=$(cat mobile/pubspec.yaml | grep "^version: .*+[0-9]\+$" | cut -d "+" -f2)
|
CURRENT_MOBILE=$(cat mobile/pubspec.yaml | grep "^version: .*+[0-9]\+$" | cut -d "+" -f2)
|
||||||
NEXT_MOBILE=$CURRENT_MOBILE
|
NEXT_MOBILE=$CURRENT_MOBILE
|
||||||
if [[ $MOBILE_PUMP == "mobile" ]]; then
|
if [[ $MOBILE_PUMP == "true" ]]; then
|
||||||
set $((NEXT_MOBILE++))
|
set $((NEXT_MOBILE++))
|
||||||
elif [[ $MOBILE_PUMP == "false" ]]; then
|
elif [[ $MOBILE_PUMP == "false" ]]; then
|
||||||
echo 'Skipping Mobile Pump'
|
echo 'Skipping Mobile Pump'
|
||||||
else
|
else
|
||||||
echo 'Expected <mobile|false> for the second argument'
|
echo "Fatal: MOBILE_PUMP value $MOBILE_PUMP is invalid"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -65,3 +74,5 @@ if [ "$CURRENT_MOBILE" != "$NEXT_MOBILE" ]; then
|
|||||||
sed -i "s/\"android\.injected\.version\.code\" => $CURRENT_MOBILE,/\"android\.injected\.version\.code\" => $NEXT_MOBILE,/" mobile/android/fastlane/Fastfile
|
sed -i "s/\"android\.injected\.version\.code\" => $CURRENT_MOBILE,/\"android\.injected\.version\.code\" => $NEXT_MOBILE,/" mobile/android/fastlane/Fastfile
|
||||||
sed -i "s/^version: $CURRENT_SERVER+$CURRENT_MOBILE$/version: $NEXT_SERVER+$NEXT_MOBILE/" mobile/pubspec.yaml
|
sed -i "s/^version: $CURRENT_SERVER+$CURRENT_MOBILE$/version: $NEXT_SERVER+$NEXT_MOBILE/" mobile/pubspec.yaml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "IMMICH_VERSION=v$NEXT_SERVER" >> $GITHUB_ENV
|
Loading…
Reference in New Issue
Block a user